Servlet实现后台分页查询

原文链接: http://www.cnblogs.com/shabusi/p/7686656.html

相信大家在搭建后台的时候,经常会使用到分页功能,当然,目前有不少框架(如esayUI)都自带分页的实现,为了更好的理解分页原理,近期本人自己摸索了关于分页查询的一些心得。

归根结底,分页的核心还是在封装PageBean,并通过一定的算法对其进行判断,赋值

 

public class PageBean implements Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private int currentPage; //当前第几页 ,请求传过来
     private int pageCount;  // 每页显示多少条数据
     private int totalCount; //总记录数,查询数据获得
     
     private int totalPage;  //总页数, 通过  totalCount 和 pageCount计算获得
     
     private int startIndex; //开始索引,与pageCount 组成 limit 条件
     
     private List pageData;
     
     //分页显示的页数,如 1,2,3,4
     private int start;
     private int end;
     
     public PageBean(int currentPage,int pageCount,int totalCount){
         this.currentPage=currentPage;
         this.pageCount=pageCount;
         this.totalCount=totalCount;
         
         if(totalCount % pageCount==0){
             this.totalPage = totalCount/ pageCount;
         }else{
             this.totalPage= totalCount/pageCount+1;
         }
         
         this.startIndex = (currentPage-1)*pageCount;
         
         this.start=1;
         this.end=5;
         
         if(pageCount<=5){
             this.end= this.totalPage;
         }else{

             this.start=currentPage-2;
             this.end = currentPage+2;
             
             if(start<=0){
                 this.start=1;
                 this.end=5;
             }
             if(this.end > this.totalPage){
                 this.end=totalPage;
                 this.start=end-4;
             }
         }
     }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getStartIndex() {
        return startIndex;
    }

    public void setStartIndex(int startIndex) {
        this.startIndex = startIndex;
    }

    public List getPageData() {
        return pageData;
    }

    public void setPageData(List pageData) {
        this.pageData = pageData;
    }

    public int getStart() {
        return start;
    }

    public void setStart(int start) {
        this.start = start;
    }

    public int getEnd() {
        return end;
    }

    public void setEnd(int end) {
        this.end = end;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }
     
     
     
}

 

 

Controller层

1         int currentPage = Integer.valueOf(request.getParameter("currentPage"));
2         
3         int pageCount=7;
4         
5         BlogTypeService blogType = new BlogTypeServiceImpl();
6         
7         PageBean page = blogType.page(currentPage, pageCount);
8         request.setAttribute("page", page);
9         request.getRequestDispatcher("/jsp/blogType.jsp").forward(request, response);

service层

public PageBean page(int currentPage,int pageCount) {
        int totalCount=blogType.getTotal();
        
        PageBean pageBean = new PageBean<>(currentPage, pageCount, totalCount);
        int startIndex = pageBean.getStartIndex();
        pageBean.setPageData(blogType.page(startIndex, pageCount));
        return pageBean;
    }

dao层

public List page(int currentPage,int pageCount){
        String sql = "select * from t_blogtype limit ?,?";
        PageBean pageBean =null;
        Connection conn =null;
        PreparedStatement ps =null;
        ResultSet rs =null;
        BlogType blogType =null;
        try {
            conn =DBDao.connection();
            ps=conn.prepareStatement(sql);
            ps.setInt(1, currentPage);
            ps.setInt(2, pageCount);
            rs=ps.executeQuery();
            List list =new ArrayList();
            while(rs.next()){
                blogType = new BlogType();
                blogType.setId(rs.getInt("id"));
                blogType.setTypeName(rs.getString("typeName"));
                blogType.setOrderNum(pageCount);
                list.add(blogType);
            }
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    
    public int getTotal() {
        String sql ="select count(id) from t_blogtype";
        Connection conn =null;
        PreparedStatement ps=null;  
        ResultSet rs=null;  
        int count=0;  
        try{  
            conn= DBDao.connection();
            ps=conn.prepareStatement(sql);  
            rs=ps.executeQuery();  
            rs.next();  
            count=rs.getInt(1);
              
        }catch(Exception e){
            e.printStackTrace();
        }
        return count;  
        
        
    }

   因为本文主要在说分页查询,所以关于 数据库的连接就一并放到dao里了!

  (其实本人是不知道将数据库的连接放在哪里。。。。嘻嘻)

 

jsp

 1 
 2     共有${page.totalCount }个分类,共有${page.pageCount }页,当前为第${page.currentPage }页,每页显示${page.pageCount }条
 3      4 5 6 7 8 9101112
13                 1415161718192021222324
选择 序号 博客类别 博客排序 操作
${page.id } ${page.typeName } ${page.orderNum } 修改|删除
25 26
27 首页 28 29 if test="${page.currentPage==1 }"> 30 31 if test="${page.currentPage == i}"> 32 ${i} 33 if> 34 if test="${page.currentPage != i}"> 35 ${i} 36 if> 37 38 下一页 39 if> 40 41 if test="${page.currentPage>1 && page.currentPage 42 上一页 43 44 if test="${page.currentPage == i}"> 45 ${i} 46 if> 47 if test="${page.currentPage != i}"> 48 ${i} 49 if> 50 51 下一页 52 if> 53 54 if test="${page.currentPage==page.totalPage }"> 55 上一页 56 57 if test="${page.currentPage == i}"> 58 ${i} 59 if> 60 if test="${page.currentPage != i}"> 61 ${i} 62 if> 63 64 65 if> 66 尾页 67
68 69

 

 

 

转载于:https://www.cnblogs.com/shabusi/p/7686656.html

你可能感兴趣的:(Servlet实现后台分页查询)