<% 
         int pageNow =Integer.parseInt((String)request.getAttribute("pageNow"));
         int pageCount =Integer.parseInt((String)request.getAttribute("pageCount"));

         out.println("<a href=UserClServlet?pageNow=1&flag=fengye>首页</a>");
if(pageNow!=1){
    out.println("<a href=UserClServlet?pageNow="+(pageNow-1)+"&flag=fengye>上一页</a>");
}

         for(int i=pageNow;i<pageNow+3;i++){
     out.println("<a href=UserClServlet?pageNow="+i+"&flag=fengye>第"+i+"页</a>");
}

         if(pageNow!=pageCount){
      out.println("<a href=UserClServlet?pageNow="+(pageNow+1)+"&flag=fengye>下一页</a>");
}

         out.println("<a href=UserClServlet?pageNow="+pageCount+"&flag=fengye>尾页</a>");
%>

            菜鸟初学java,这个不知道怎么来百度了,还是到这来解决吧,嘿嘿!
        
上面代码中有一个问题 我想不出怎么解决,从数据库调用数据后显示,可是如果数据库 本身只够显示10条,而我当前页在10页的话 它还是会打印出后面两页来,该怎么解决呢?   方案当然要适合菜鸟的哈,太高深的方法,我怕看不懂。

解决方案 »

  1.   

     for(int i=pageNow;i <pageNow+3;i++){ 
        out.println(" <a href=UserClServlet?pageNow="+i+"&flag=fengye>第"+i+"页 </a>"); 
    }
    这个有问题,循环必然有多出两页来(如果你只有一页的话.).
    如果有五页,那也不会显示.
     for(int i=pageNow;i <pageCount+3;i++){ 
        out.println(" <a href=UserClServlet?pageNow="+i+"&flag=fengye>第"+i+"页 </a>"); 
    }
      

  2.   

    可是 如果是按照 for(int i=pageNow;i <pageCount+3;i++)那就全部打印出来了吧?   如果pageCount有100页  那在pageNow后面的页数也会全部打印出来了呀~~~
      

  3.   

    开始应该有个判断
    当前page设为currpage
    总页面pagecount应该为total/pagesize
    先判断下currpage和pagecount的关系
    不合理的话置为合理的
    然后进行输出
    currpage+3<=pagecount
    输出三页
    如果不满足
    就for(currpage->pagecount)输出
    有几个是几个
    不建议在jsp页面分页
    直接写个分页方法或者bean就OK
    省去很多重复代码
      

  4.   

    恩  谢谢7楼   看来只有这样子了  就是后面那个for循环代码可能会有点罗嗦 ,  没办法先这样吧
      

  5.   

    8楼 也谢谢哈  弄了这么多代码过来 , 开始是我没说清楚  我是想做成MVC模式的,,,
      

  6.   

    楼上 是说 判断当前页吗?假如当前页是  9 ,总页数是 10 的话满足当前页 9<10的情况下,  我还是打印出了 9、10、11页呀,而当前页 为  5那么 也满足 5<10 , 打印5、6、7 页  是符合要求的。  所以,在用一个语句好像很难实现哦,(按照我现有的比较菜的水平来说 ,呵呵,)必须得进行二次判断if(当前页+3<总页数){ 那么执行}else if (当前页+3>总页数){
         执行打印 <当前页> 至 <最后页> 
    }这样子解决对吗 
      

  7.   

     for(int i=pageNow;i <pageNow+3;i++){ 
        out.println(" <a href=UserClServlet?pageNow="+i+"&flag=fengye>第"+i+"页 </a>"); 

    改一下,
    int toPage=pageNow+3;if(toPage>pageCount){
     toPage = pageCount;
    }
    for(int i=pageNow;i <toPage ;i++){ 
        out.println(" <a href=UserClServlet?pageNow="+i+"&flag=fengye>第"+i+"页 </a>"); 
      

  8.   

    if(当前页+3 <总页数){ 那么执行} else if (当前页+3>总页数){ 
        执行打印 <当前页> 至 <最后页> 
    } 看了那么多回复我才弄明白你什么意思!
    for(int i=pageNow;i <pageNow+3;i++){ 
       if(i<总页数)
          out.println(" <a href=UserClServlet?pageNow="+i+"&flag=fengye>第"+i+"页 </a>");
       else
          break;
    } 如果i大于总页数就会跳出循环,停止打印!你的问题应该解决了吧!?汗!加个判断就好了吗!
      

  9.   

    15楼哈   你还是没懂我真正的问题所在呀,,  你想按照你的循环, 执行到 pageNow=9, 而pageCount=10  那if语句还是会执行吧,然后就打印出了第9页  第10页  第11页,   实际上11页应对的记录是空的,只需要打印到第10页就够了啊
      

  10.   

    LZ我问问你pageNow=9但是pageCount=10的时候会运行For循环对吧!但是进入for循环之后运行第一句话就是if(i <=总页数) ,,那么i=9会通过,下次循环i=10,if条件也满足,会通过,但是当i=11的时候,for还回运行一次,只不过if条件不通过,那么它怎么在页面打印出11来?就算你是每次显示4个页码,但if条件在第一次为否的时候我就已经跳出循环啦,所以i跟没又有机会等于12,你说为什么我的循环会打印出第11页甚至更多页数?!虽然我的代码没有13楼的有效率但是原理是一样的,麻烦你下次试运行一下再说结论!还有,你要弄明白我if语句到底起到什么作用,不满足if条件会做什么!只要你运行for语句那么肯定会运行if,但是if不满足条件的时候会进行输出吗?好好考虑一下!写个dome试试再说!