Java中的分页实现

来源:互联网 发布:淘宝千里眼破解版 编辑:程序博客网 时间:2024/06/07 04:55
1,创建分页的实体类: 然后获得其属性的get和set方法   需要注意的是getTotalPage()方法需要修改下,计算出总页数
   public class UtilPage {
   publicint totalPage;// 总页数
   publicint rowsCount;// 总条数
   publicint currentPage;// 当前页数
   public final int pageSize= 3;// 页面显示条数
   publicint getTotalPage() {
      if(rowsCount% pageSize == 0) {
         totalPage= (rowsCount/ pageSize);
      }else {
         totalPage= (rowsCount/ pageSize + 1);
      }
      returntotalPage;
   }
 2,在Dao层中创建两个接口,然后再实现:  获取需要分页的数据(这个没啥难的)
       publicList<Customer> getCustomer(intcurrentPage,int pageSize) {
      List<Customer>list = newArrayList<>(0);
      ct= JDUtil.getConnection();
      Stringsql = "select * from t_customer c INNER JOIN t_dict d on c.custLevel=d.didlimit ?,?";
      try{
         ps= ct.prepareStatement(sql);
         ps.setInt(1, (currentPage-1)*pageSize);
         ps.setInt(2,pageSize);
         rs= ps.executeQuery();
         while(rs.next()) {
        代码
         }
      }catch (Exception e) {
         e.printStackTrace();
      }finally{
         JDUtil.closeAll(ct,ps,rs);
      }
      returnlist;
   }
  //获取查询数据的总条数
   publicint selectRowsCount() {
      introwsCount=0;
      ct= JDUtil.getConnection();
      Stringsql = "select count(*) from t_customer";
      try{
         ps=ct.prepareStatement(sql);
         rs=ps.executeQuery();
         while(rs.next()){
            rowsCount=rs.getInt(1); 
         }
      }catch (Exception e) {
         e.printStackTrace();
      }finally{
         JDUtil.closeAll(ct,ps,rs);
      }
      returnrowsCount;
   }
}
3,在service层中建立接口并实现:(我这是建立一个Map集合,一起存储需要分页的数据和数据总条数,也可以单独实现)
 publicMap<String, Object> getLimitCustomer(intcurrentPage,int pageSize) {
      Map<String,Object>map=newHashMap<>();
      List<Customer>list = cd.getCustomer(currentPage,pageSize);
      introwsCount = cd.selectRowsCount();
      map.put("list",list);
      map.put("rowsCount",rowsCount);
      returnmap;
   }
4,在control层中进行具体的Servlet处理
      UtilPageutilPage = newUtilPage();(这个是分页实体类对象)
      //获取当前页面
      intcurrentPage = Integer.parseInt(request.getParameter("currentPage"));
      Map<String, Object>limitCustomer = cs.getLimitCustomer(currentPage,utilPage.getPageSize());(利用对象调用service层的方法)
      //获取客户集合
      List<Customer>list =(List<Customer>)limitCustomer.get("list");
      introwsCount =(int)limitCustomer.get("rowsCount");
      //将当前页面和总数据条数赋给对象
      utilPage.setRowsCount(rowsCount);
      utilPage.setCurrentPage(currentPage);

      request.setAttribute("utilPage",utilPage);
      request.setAttribute("list",list);
       //请求转发
       try{
         request.getRequestDispatcher("WEB-INF/customer/limitPage.jsp").forward(request,response);
      }catch (Exception e) {
         //TODOAuto-generated catch block
         e.printStackTrace();
      }
   5, 下边就是请求转发到所需要的jsp页面中的分页栏
    共[<fontcolor="red"><B>${utilPage.rowsCount}</B></font>]条记录,共[<fontcolor="red"><B>${utilPage.totalPage}</B></font>]页,当前第[<fontcolor="red">              <B>${utilPage.currentPage}</B></font>]页
               <c:iftest="${utilPage.currentPage!=1}">
               [<B><ahref="Customer?C=getLimitCustomer&currentPage=1">首页</a></B>]
               [<B><ahref="Customer?C=getLimitCustomer&currentPage=${utilPage.currentPage-1}">前一页</a></B>]
               </c:if>
               <c:iftest="${utilPage.currentPage!=utilPage.totalPage}">
               [<B><ahref="Customer?C=getLimitCustomer&currentPage=${utilPage.currentPage+1}">后一页</a></B>]
               [<B><ahref="Customer?C=getLimitCustomer&currentPage=${utilPage.currentPage=utilPage.totalPage}">尾页</a></B>]
               </c:if>
这是主要的实现思想和代码,只要有web基础的都能看明白啥意思,不是完整的程序!!!

原创粉丝点击