效果:首页  上一页  当前页  下一页  尾页

分页功能的实现:

  物理分页:一次只查n条记录,点击下一页,再去查后n条,使用sql语句进行控制的分页。

    缺点:经常需要和数据库交互;

    优点:数据量特别大,不会导致内存的溢出;

  逻辑分页:一次性将所有数据全部都查询出来,根据需要进行截取,List集合进行控制subList();

    缺点:数据量如果特别大,容易导致内存溢出;

    优点:与数据库交互次数少;

不同的数据库对分页的语句也是不一样的:

  oracle:使用sql嵌套;

  sqlserver:使用top关键字;

  mysql:使用limit关键字:

    eg:select * from table where...group by...having...order by...limit begin,pageSize;

    分析:begin:从第几条数据开始查询;pageSize:查询多少条数据

currPage begin pagesize
1 0 10
2 10 10
3 20 10

currPage:表示当前页码  

可以通过左方表格推算出各个参数之间的关系:

  begin =( currPage - 1 ) * pagesize

  参数的传递:

    前台--->后台:currPage

    后台--->前台:currPage【当前页】,totalPage【总页数】,totalCount【总记录数】,pageSize【每页显示条数】,List【显示数据集合】

      后台到前台传递的数据使用javabean来封装参数方便传递:

package pojo;

import java.util.List;

public class PageBean {
    private int currPage;//当前页
    private int totalCount;//总记录数
    private int totalPage;//总页数
    private int pageSize;//每页显示数
    private List<Product> productList;//显示数据集合
    public int getCurrPage() {
        return currPage;
    }
    public void setCurrPage(int currPage) {
        this.currPage = currPage;
    }
    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 getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public List<Product> getProductList() {
        return productList;
    }
    public void setProductList(List<Product> productList) {
        this.productList = productList;
    }
    
}
View Code

通过request域将该数据传递到jsp页面显示:

<c:if test="${pageBean.currPage != 1}">
    <a href = "${ pageContext.request.contextPath }/SearchByPage?currPage=1">首页</a>
    <a href = "${ pageContext.request.contextPath }/SearchByPage?currPage=${pageBean.currPage - 1}">上一页</a>
</c:if>
    &nbsp;&nbsp;&nbsp;${ pageBean.currPage }&nbsp;&nbsp;&nbsp;
<c:if test="${pageBean.currPage != pageBean.totalPage}">
    <a href = "${ pageContext.request.contextPath }/SearchByPage?currPage=${pageBean.currPage + 1}">下一页</a>
    <a href = "${ pageContext.request.contextPath }/SearchByPage?currPage=${pageBean.totalPage}">尾页</a>
</c:if>
View Code

 

posted on 2018-08-21 11:35  zeronexyz  阅读(200)  评论(0编辑  收藏  举报