如何实现分页功能(一)?(分析)
1、根据淘宝的分页模型分析
(1)currentPage->客户端传递给服务端处理:根据用户选择指定的页码传递给服务端,进行业务逻辑处理,返回规定记录数的页面数据信息和分页信息。
(2)pageSize->规定每页可以显示的记录数(除最后一页可能不是规定的记录数),其决定因素:自己定义的page类中pageSize默认设置的记录数;或者可以在分页的按钮button“确定”后面再添加一个每页规定显示记录数的输入框,这样自己就可以根据自己的需求去选择每页可以显示的记录数。
(3)pageTotalCount->总记录数:总记录数要根据数据库中存储的数据来获得,可以使用获取
select count(*) from t_shop
(4)pageTotal->总页数:决定因素主要是pageTotalCount和pageSize,总页数可以通过pageTotalCount/pageSize获得。最后一页不满足pageSize会影响到总页数,因此要使得pageTotalCount%pageTotal>1则pageTotal+1,否则为pageTotal。
(5)items->当前页显示的数据信息:根据currentPage和pageSize决定显示当前页显示的多少个记录信息,因为要从数据库中取数据,所以需要用到sql,那么如何获取呢?
select * from t_shop limit begin,pageSize
那么如何得到得到begin呢?
例如pageSize为10,当前页currentPage为1:begin=(currentPage-1)*10=0;
当前页currentPage为2:begin=(currentPage-1)*10=10;
当前页currentPage为3:begin=(currentPage-1)*10=20;
2.实现初步分页
这里提供一个page的javabean和page的jsp页面分页代码:
javabean
public class Page<T> {
public static final Integer PAGE_SIZE=10;
private Integer currentPage;
private Integer pageTotal;
private Integer pageTotalCount;
private Integer pageSize;
private List<T> items;
private String url;
//下面是setter和getter,构造器,toStrng的生成,大家自行操作
分页的jsp代码
<div id="page_nav">
<c:if test="${requestScope.page.currentPage>1}">
<a href="${requestScope.page.url}¤tPage=1">首页</a>
<a href="${requestScope.page.url}&pageNo=${requestScope.page.currentPage-1}">上一页</a>
</c:if>
<c:forEach begin="${begin}" end="${end}" var="i">
<c:if test="${i==requestScope.page.currentPage}">
<a href="${requestScope.page.url}¤tPage=${i}">[${i}]</a>
</c:if>
<c:if test="${i!=requestScope.page.currentPage}">
<a href="${requestScope.page.url}¤tPage=${i}">${i}</a>
</c:if>
</c:forEach>
<c:if test="${requestScope.page.currentPage<requestScope.page.pageTotal}">
<a href="${requestScope.page.url}¤tPage=${requestScope.page.pageNo+1}">下一页</a>
<a href="${requestScope.page.url}¤tPage=${requestScope.page.pageTotal}">末页</a>
</c:if>
共${ requestScope.page.pageTotal }页,${ requestScope.page.pageTotalCount }条记录
到第<input value="${empty requestScope.page.currentPage?"":requestScope.page.currentPage}" name="pn" id="pn_input"/>页
<input type="button" id="searchPageBtn" value="确定">
</div>
</div>
本期主要是实现商品初步分页,下期将分享如何根据输入指定页码跳转到指定页面,其次如何显示指定连续的页码例如我想让五个页码连续显示,同时点击指定页码会跳转到相应页面。