在界面完成分页控制,也就是在循环显示的时候进行控制。通常显示信息的代码是通过<c:forEach>控制的,所以需要在<c:forEach>中控制,只显示满足条件的记录。<c:forEach>标签提供了两个属性begin和end可以控制集合中的记录从什么地方开始显示以及显示到什么地方结束。
另外在分页控制的时候需要得到总的页数,而总的页数是由总的记录数决定的,所以需要在处理文件中添加一个方法得到总页数。
要在界面上完成分页控制,需要两步:
- 修改处理文件,添加获取页数的方法,并且传递当前页数和总页数,通常通过request传递。
- 修改显示文件,添加页码控制的代码(上一页、下一页、最后一页和第一页等的控制),以及控制信息示的代码。
处理文件中添加一个方法即可,并且传递当前页数和总页数即可,下面主要介绍JSP页面如何处理,假设当前页面是findAllUser。
要添加到第1页的超链接,可以使用下面的代码:
<a href="findAllUser?pageNo="1">第一页</a>
findAllUser后面的问号表示要传递参数,pageNo是参数的名字,1是参数的值,通过这种方式传递值与通过表单提交信息的方式的效果完全相同,相当于有一个表单元素,表单元素的名字是pageNo,表单元素的值是1。
要添加到上一页的超链接,可以使用下面的代码:
<a href="findAllUser?pageNo=${pageNo-1}">上一页</a>
要添加到下一页的超链接,可以使用下面的代码:
<a href="findAllUser?pageNo=${pageNo+1}">下一页</a>
要添加到最后一页的超链接,可以使用下面的代码:
<a href="findAllUser?pageNo=${pageCount}">最后一页</a>
如果当前页是第一页,则不用显示“第一页”和“首页”超链,如果是最后一页,则不用显示“尾页”和“下一页”超链。对这两种情况需要控制,进行控制的代码如下:
<!--如果是第一页,则不显示超链接-->
<c:if test="${pageNo==1}">
第一页
上一页
</c:if>
<!--如果不是第一页,则显示超链接-->
<c:if test="${pageNo!=1}">
<a href="findAllUser?pageNo=1">第一页</a>
<a href="findAllUser?pageNo=${pageNo-1}">上一页</a>
</c:if>
<!--如果是最后一页,则不显示超链接-->
<c:if test="${pageNo==pageCount}">
下一页
最后一页
</c:if>
<!--如果不是第一页,则显示超链接-->
<c:if test="${pageNo!=pageCount}">
<a href="findAllUser?pageNo=${pageNo+1}">下一页</a>
<a href="findAllUser?pageNo=${pageCount}">最后一页</a>
</c:if>
<form action="findAllUser">
跳转到<input type="text" name="pageNo">页<input type="submit" value="跳转">
</form>
在显示信息的时候,需要进行控制,只要为<c:forEach>添加begin和end属性即可,控制的代码如下:
<c:forEach items="${userlist}" var="user" begin="${(pageNo-1)*10}"
end="${pageNo*10}">
另外需要添加一个能够输入页码的输入框,就是一个简单的表单。代码如下: