对于进行web开发的工程师来说,分页问题很常见。所以将学习分页过程思路记录下来,方便以后复习整理。
个人感觉分页的关键要点在于前端如何展示以及后端如何得到页码等数据
首先我要需要一个Bean有如下几个条件:
private int pageNum; //当前页,从前端请求那边传过来。
private int pageSize; //每页显示的数据条数,自己设定。
private int totalRecord; //总的记录条数。查询数据库得到的数据
private int totalPage; //总页数,通过totalRecord和pageSize计算可以得来
//开始索引,也就是我们在数据库中要从第几行数据开始拿,有了startIndex和pageSize,
//就知道了limit语句的两个数据,就能获得每页需要显示的数据了
private int startIndex; //开始索引
通过totalReccord和pageSize得到显示的总页数:
if(totalRecord%pageSize==0){
//说明整除,正好每页显示pageSize条数据,没有多余一页要显示少于pageSize条数据的
this.totalPage = totalRecord / pageSize;//totalPage 总页数
}else{
//不整除,就要在加一页,来显示多余的数据。
this.totalPage = totalRecord / pageSize +1;
}
得到每页记录的起始位置:
this.startIndex = (pageNum-1)*pageSize ;
--------------------------------------------------------------------------------------
前端部分显示思路(我们一次显示5页),用jstl实现:
后台传输到前端的数据我们装到一个request.setAttribute("pageBean",pageBean);
如果当前页为第一页时:{
使显示页面从start=1循环end=5,变量i{
如果当前页==i:则显示i,否则显示一个超链接<a href="##"?pageNum=${i}>${i}</a>
}
<a href="###"?pageNum=pageNum+1>下一页</a>
}
如果当前页不是第一页,也不是最后一页,即2-4页:{
<a href="###"?pageNum=pageNum-1>上一页</a>
使显示页面从start=1循环到end=5,变量i{
如果当前页==i,显示${i},否则超链接,同上。
}
<a href="###"?pageNum=pageNum+1>下一页</a>
}
如果当前页>4,小于总页数{
同上
}
如果当前页是最后一页:{
取消下一页
}