实现数据库结果集分页显示

来源:互联网 发布:淘宝pv uv是什么意思 编辑:程序博客网 时间:2024/05/27 12:21

 1、定义属性保存相关的分页信息

       private int currentPage;             //当前页

       private int totalPages;               //总页数

       private int pageRows;              //每页记录数

       private int totalRows;              //总记录数

       private int pageStartRows;      //每页开始记录

       private int pageEndRows;       //每页结束记录

       private boolean hasPreviousPage; //是否有上一页

       private boolean hasNextPage;   //是否有下一页

       private List<Object[]> totalList; //要分页的数据

       提供相应的getXXX()方法

2、属性初始化

      public void initPageBean(List<Object[]> totalList, int pageRows){

            this.totalList=totalList;

            this.pageRows=pageRows;

            this.totalRows=totalList.size();

            this.currentPage=1;

            //计算总页数

            if((totalRows % pageRows)==0){

                   totalPages=totalRows / pageRows;

                   if(this.totalRows==0)

                          this.totalPages=1;

            }else{

                    totalPages=totalRows / pageRows+1;

            }

            //默认无上一页

            this.hasPreviousPage=false;

            //判断是否有下一页

            if(currentPage==totalPages){

                     hasNextPage=false;

            }else{

                     hasNextPage=true;

            }

            //默认第一页开始的记录数为1

            this.pageStartRow=1;

            //确定第一页结束的记录数

            if(totalRows<pageRows){

                   this.pageEndRow=totalRows;

            }else{

                   this.pageEndRow=pageRows;

           }

      }

3、封装当前页的信息

      public List<Object[]> getCurrentPageList(){

            if(currentPage*pageRows<totalRows){

                   pageEndRow=currentPage*pageRows;

                   PageStartRow=pageEndRow-pageRows;

            }else{

                   pageEndRow=totalRows;

                   pageStartRow=pageRows*(totalPages-1);

            }

            List<Object[]> pageList=new ArrayList<Object[]>(pageEndRow-pageStartRow+1);

            if(totalRows!=0){

                   for(int i=pageStartRow; i<pageEndRow; i++){

                             pageList.add(totalList.get(i));

                   }

            }

            return pageList;

      }

4、获取上一页的信息

      public List<Object[]> getPreviousPageList(){

            currentPage=currentPage-1;

            if(currentPage<1)

                    currentPage=1;

            if(currentPage>=totalPages){

                    hasNextPage=false;

            }else{

                    hasNextPage=true;

            }

            if((currentPage-1)>0){

                    hasPreviousPage=true;

            }else{

                    hasPreviousPage=false;

            }

            List<Object[]> pageList=this.getCurrentPageList();

            return pageList;

5、获取下一页的信息

      public List<Object[]> getNextPageList(){

            currentPage=currentPage+1;

            if(currentPage>totalPages){

                  currentPage=totalPages;

            }

            if((currentPage-1)>0){

                  hasPreviousPage=true;

            }else{

                  hasPreviousPage=false;

            }

            if(currentPage>=totalPages){

                   hasNextPage=false;

            }else{

                   hasNextPage=true;

            }

            List<Object[]> pageList=this.getCurrentPageList();

            return pageList;

6、获取指定页信息

      public List<Object[]> getAppointPageList(int currentPage){

           this.currentPage=currentPage;

           if(currentPage>this.totalPages)

                   this.currentPage=this.totalPages;

           if(currentPage<1)

                   this.currentPage=1;

           if(this.currentPage>1){

                   this.hasPreviousPage=true;

           }else{

                   this.hasPreviousPage=false;

           }

           if(this.currentPage<this.totalPages){

                   this.hasNextPage=true;

           }else{

                   this.hasNextPage=false;

           }

           List<Object[]> pageList=this.getCurrentPageList();

           return pageList;

      }

     

     使用例:

     <jsp:useBean id="pagination" class="com.mwq.tool.Pagination" scope="session" />

     <form action="index.jsp" method="post" name="page" onsubmit="return checkPage(page)">

          <tr align="right">

                <td>

                         共有<font color="red" size="1"><%=pagination.getTotalRows() %></font>条记录,

                         当前是第<font  color="red" size="1">

                         <%=pagination.getCurrentPage()+"/"+pagination.getTotalPages() %)</font>页

                         <%if(pagination.isHasPreviousPage())

                                      out.print("<a href='index.jsp?requestPage=previousPage'>上一页</a>");%>

                         <%if(pagination.isHasNextPage())

                                      out.print("<a href="index.jsp?requestPage=nextPage'>下一页</a>");%>

                         第<input type="text" name="requestPage" size="3" maxlength="2">页

                         <input type="submit" value="转到>>">

                </td>

          </tr>

     </form>

    //对指定请求页时,需要对用户输入的页码进行校验

    <script language="javascript" type="">

           <!--

                  function checkPage(formName){

                        if(formName.requestPage.value==""){

                                alert("请填写欲跳转页码!");

                                formName.requestPage.focus();

                                return false;

                        }

                        if(isNaN(formName.requestPage.value)){

                                alert("欲跳转页码必须为数值!");

                                formName.requestPage.value="";

                                fromName.requestPage.focus();

                                return false;

                        }

 

                  }

           //-->

   </script>

   //处理跳转页请求

   List<Object[]> pageList=null;

   if(request.getParameter("requestPage")==null{

          List<Object[]> totalList=optb.selectBySQL("select * from tb_pagination");

          pagination.initPageBean(totalList, 10);

          pageList=pagination.getCurrentPageList();

   }else{

          String requestPage=request.getParameter("requestPage");

          if(requestPage.equals("previousePage")){

                 pageList=pagination.getPreviousPageList();

          }else if(requestPage.equals("nextPage")){

                 pageList=pagination.getNextPageList();

          }else{

                 int appointPage=Integer.valueOf(requestPage);

                 pageList=pagination.getAppointPageList(appointPage);

          }

   }

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 驾驶证分数不够扣怎么办 驾驶证分数扣完了怎么办 驾驶证分被骗了怎么办 自驾游穷游睡车上洗衣服怎么办 考生密码忘了怎么办 中国公民在菲律宾遇害怎么办 鞋有胶皮味怎么办 pvc下水管渗漏水怎么办 5s主板漏电怎么办 飞机转机延误了怎么办 家里有小丑雕像怎么办 巴黎被抢了怎么办 博彩公司压护照怎么办 跑马拉松手机怎么办 高跟鞋绒面掉皮怎么办 白裤子透短裤怎么办 崖柏珠子脏了怎么办 唱歌总是气息不足怎么办 幻影wifi闪退怎么办 镇魔曲转职后装备怎么办 起诉离婚对方不同意怎么办 后宫无人岛掉血了怎么办 老公不同意离婚该怎么办 爸妈闹离婚我该怎么办 爸妈闹离婚了我怎么办 苹果迅雷链接打不开怎么办 眼睛有灼烧感怎么办 爸妈关系不好怎么办 眼睛下面辣到了怎么办 老公隐瞒妻子欠下巨债怎么办 家庭琐事吵架后怎么办 控制不住想哭怎么办 执行死刑已怀孕怎么办 脸上的凹凸坑怎么办 宝宝全身长红敏敏怎么办 人长得丑怎么办? 生父不认孩子怎么办 高速超速10%以内怎么办 c照四年没有年审怎么办 电子眼拍到超载怎么办 超速扣分12分怎么办