分页实现思路:
1.首先确定使用的数据库分页语句,如limit
等,并编辑好查询语句及对应查询方法;
2.在JSP页面中放入一个表单里面放入存放页码的input(可以使用type="hiden"
隐藏起来);
3.点击下一页时调用js函数改变input的值并获取表单(document.forms[0]
此处0代表当前页第一个表单),在js函数中再调用form.submit();
方法提交表单就获得了相应页码的内容。
1.编辑底层sql语句、查询方法
在程序最底层编辑sql语句,并且在调用查询方法的时候需要需要形式参数(int currentPageNo, int pageSize)最终实现下列sql
//currentPageNo代表一页显示的内容数,pageSize表示第几页
sql = ".... limit " + currentPageNO + "," + pageSize;
编辑sql的方法有很多,总归最终编辑成功的sql要能在数据库中运行
2.在servlet层(表单提交到的位置)计算页码数
//设置页面大小,和初始页码为1
int pageSize = 20 ;
int currentPageNo = 1;
//注意,此处需要写一个查询数据总数的方法
int totalConut =studentService.getStudentCount();
int totalPageCount =((int)(totalConut/pageSize))+1;//总共有几页
//还需要对传入的数据进行判断,防止出错
if (currentPageNo < 1){
currentPageNo = 1;
}else if (currentPageNo>totalPageCount){
currentPageNo =totalPageCount;
}
if (pageIndex!=null){
currentPageNo =Integer.parseInt(pageIndex);
}
//把这些必要的数据传给jsp
req.setAttribute("totalCount",totalConut);//数据总数
req.setAttribute("currentPageNo",currentPageNo);//当前页
req.setAttribute("totalPageCount",totalPageCount);//总页数
3.在jsp页面写出上一页,下一页并传值
<script>
//获取表单并提交,此处也可以使用ajax实现,不过多赘述
function page_nav(frm,num){
//改变name 为 pageIndex的input的值
frm.pageIndex.value = num;
frm.submit();
}
</script>
<body>
<form action="${pageContext.request.contextPath}/jsp/user.do" method="post">
<!--用于标记当前页数的input,默认为1,跳转时-->
<input type="hidden" name="pageIndex" value="1" >
<!--判断并输出上一页、下一页按钮-->
<ul>
<!--获得后端传来的值-->
<li>共${pageContext.request.getAttribute("totalCount ")}条记录 ${pageContext.request.getAttribute("currentPageNo") }/${pageContext.request.getAttribute("totalPageCount")}页</li>
<c:if test="${pageContext.request.getAttribute("currentPageNo") > 1}">
<a href="javascript:page_nav(document.forms[0],1);">首页</a>
<a href='javascript:page_nav(document.forms[0],${pageContext.request.getAttribute("currentPageNo") -1});'>上一页</a>
</c:if>
<c:if test='${pageContext.request.getAttribute("currentPageNo") < pageContext.request.getAttribute("totalPageCount") }'>
<a href='javascript:page_nav(document.forms[0],${pageContext.request.getAttribute("currentPageNo")+1 });'>下一页</a>
<a href='javascript:page_nav(document.forms[0],${pageContext.request.getAttribute("totalPageCount")});'>最后一页</a>
</c:if>
</ul>
</body>
以上,分页功能完成。
内容如有不当,希望得到指正。
版权声明:本文为qq_42951382原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。