有这些功能:共有_条记录,_条记录/页,首页,上一页,下一页,尾页,当前_页和 转至_页 GO。
上网找了很多,但是没能找到“转至_页”,即使有代码也不好用。网上的文章都是copy的,真叫人郁闷啊~
希望哪位大哥帮帮小弟,感激不尽!!~

解决方案 »

  1.   

    lz  为什么不自己写呢  又不难    你也太想偷工减料了吧    
    介意lz去读懂一个分页代码  在自己写吧
      

  2.   

    关键给你一个,你也需要改。也很费时间。
    给你个思路。
    分页sql,是个循环嵌套
    select tt.* from(
    select * from (
      select * from t rownum<n
    ) tt
    ) rownum>m 
    然后把在action中定义两个变量m,n 
    定义一个page类,有上一页,下一页。。 
    在action中,第一次访问是n假定10,m为0。把数据条数查出来,new page(数据条数),page中计算上一页,下一页,最后页。
    最后在页面上显示结果。点击下一页,把下一页传过来,转换成m,n,再查数据,展示。

      

  3.   


    package com.esms.util.page;public class Pager{   
    private int totalRows; //总行数   
        private int pageSize; //每页显示的行数   
        private int currentPage=1; //当前页号   
        private int totalPages; //总页数   
        private int startRow=0; //当前页在数据库中的起始行
        private int endRow=0;
        private boolean hasNextPage=false; //是否有下一页    private boolean hasPreviousPage=false; //是否有前一页    private boolean hasFirstPage=true;
        private boolean hasLastPage=true;
      public Pager(){
      pageSize=20;
      currentPage=1;
      startRow=0;
      endRow=0;
      }
      public Pager(int Size){
      pageSize=Size;
      currentPage=1;
      startRow=0;
      endRow=0;
      }
      public void start(int totalRows){     
      this.totalRows=totalRows;     
      totalPages=totalRows/pageSize;     
      int mod=totalRows%pageSize;     
      if(mod>0){
     totalPages++;     
      }
     } 
      public int getStartRow(){     
      return startRow;   
     }
      public int getEndtRow(){     
      return endRow;   
     }
      public int getTotalPages(){
      return totalPages;   
     } 
      public int getCurrentPage(){
      return currentPage;   
     } 
      public int getPageSize(){     
      return pageSize;   
     } 
      public int getTotalRows(){     
      return totalRows;   
     }
      public boolean isHasNextPage(){
      return hasNextPage;
     }
      public boolean isHasPreviousPage(){
      return hasPreviousPage;
     }
      public boolean isHasFirstPage(){
      return hasFirstPage;
     }
      public boolean isHasLastPage(){
      return hasLastPage;
     }
      public void setTotalRows(int totalRows){
      this.totalRows=totalRows;   
     } 
      public void setStartRow(int startRow){
      this.startRow=startRow;   
     }
      public void setEndRow(int endRow){
      this.endRow=endRow;   
     }
      public void setTotalPages(int totalPages){
      this.totalPages=totalPages;   
     } 
      public void setCurrentPage(int currentPage){
      this.currentPage=currentPage;   
     } 
      public void setPageSize(int pageSize){
      this.pageSize=pageSize;   
     }
      public void setHasNextPage(boolean hasNextPage) {
      this.hasNextPage = hasNextPage;
     }
      public void setHasPreviousPage(boolean hasPreviousPage){
      this.hasPreviousPage = hasPreviousPage;
     }
      public void setHasFirstPage(boolean hasFirstPage){
      this.hasFirstPage = hasFirstPage;
     }
      public void setHasLastPage(boolean hasLastPage){
      this.hasLastPage = hasLastPage;
     }
      public void first(){     
      currentPage=1;     
      startRow=0;
      endRow=0;
      if(totalRows>pageSize){
      hasNextPage=true;
      endRow=pageSize;
    }
    else{
      hasNextPage=false;
      endRow=totalRows;
    }
      hasPreviousPage=false;
     } 
      public void previous(){     
      currentPage--;
      if (currentPage==0){
      currentPage =1;
      }
      startRow=(currentPage-1)*pageSize;   
      endRow=0;
      if(currentPage>=totalPages){
      hasNextPage=false;
      }
      else{
      hasNextPage=true;
      }
      if((currentPage-1)>0){
      hasPreviousPage=true;
      }
      else{
      hasPreviousPage=false;
      }  
      endRow=startRow+pageSize-1;  
     } 
      public void next(){     
      currentPage++;
      if(currentPage>=totalPages){
      currentPage=totalPages;
      hasNextPage=false;
      }
      startRow=(currentPage-1)*pageSize;
      if (currentPage>=totalPages){
      hasNextPage=false;
      endRow=totalRows;
         }
      else{
      hasNextPage=true;
      endRow=startRow+pageSize-1;
      }
      if((currentPage-1)>0){
      hasPreviousPage=true;
      }
      else{
      hasPreviousPage=false;
      }    
     } 
      public void last(){
      currentPage=totalPages;     
      startRow=(currentPage-1)*pageSize;
      endRow=0;
      if(totalRows>pageSize){
     hasPreviousPage=true; 
      }
      else{
     hasPreviousPage=false;
      }
      endRow=totalRows;
      hasNextPage=false;
      
     }
      public void find(int page){
      currentPage=page;
      startRow=(currentPage-1)*pageSize;   
      endRow=0;
      if (currentPage>=totalPages){
      hasNextPage=false;
      endRow=totalRows;
         }
      else{
      hasNextPage=true;
      endRow=startRow+pageSize-1;
      }
      if((currentPage-1)>0){
      hasPreviousPage=true;
      }
      else{
      hasPreviousPage=false;
      }
      
     }
    }
    find 方法就是你用来得到 startRow 和 endRow 的
    也就是你用来接收转到第_页的参数的。
      

  4.   

    不要说不能用啊。我这里可正用着,主要是下班了,要不然我就给你整出来一个demo
      

  5.   

    真对不起,我太菜了,有好多地方没有看懂啊!
    比如comlist = dao.getQueryResult(hql, map, startRow, pageSize);hql和map是什么啊,应该在哪里写啊。
    还有就是jsp页面的上一页下一页的action.do应该怎么写啊。链接数据库的语句写在哪啊?
    劳烦您了……
      

  6.   

    我晕,那个方法是一个封装好的,用来分页查询的。
    这个你可以自己写一个类似的方法,不要跟我发给你的一样的。
    你不是做好了一个能够分页查询的吗?
    改改不就成了。
    算了,我再看看,能不能给你整出一个DEMO来。
    明天给你吧,现在我还在忙。
      

  7.   

    发了。
    这是一个完整的工程,导入后需要运行在JDK1.5以上的版本(不然会报错的)。我的这个是1.6的版本。
    如果你装的是JDK1.5,需在进行如下设置。
    windows-preference-java-compliler - config project ....--选中这个工程,把它改成和你的机子上的一样的。
    然后建数据库。
    你也可以在配置文件里改一下,可以不建的。
    然后这里面的东西,可以直接进行测试的。
    浏览器中输入Http://localhost:8080/JavaScript/csdn.do
    代码里我很少加注释,我的编码习惯不好,不过应该能看得懂的,代码很少。
      

  8.   

    这位liang_大侠 ,能不能给我发一份啊 谢谢啊 急求啊 [email protected]