JSP分页功能实现

分页实现思路:
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 ")}条记录&nbsp;&nbsp; ${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>
				&nbsp;&nbsp;
			</ul>
</body>

以上,分页功能完成。
内容如有不当,希望得到指正。


版权声明:本文为qq_42951382原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。