当涉及到数据在页面上逐条显示时,我们不可能将所有数据同时放在一个页面上,因此分页处理在Java网页的设计中十分重要
下面对几个关键步骤和需要注意的点做记录:
导入需要的jar包
在分页的过程中需要用到PageHelper的框架,因此需要导入相应的包。
在pom.xml中添加如下代码:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
Service层在方法中增加page和size参数
代码如下:
@Override
public List<UserInfo> findAll(int page,int size) {
PageHelper.startPage(page,size);
return userDao.findAll();
}
用于设置一个页面中显示的page号和数据条目数。
controller层
在UserController类的findAll()中增加pageInfo对象,并将查询到的数据项导入pageInfo中。
代码如下:
@RequestMapping("/findAll.do")
public ModelAndView findAll(@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "5") int size){
List<UserInfo> infos=userService.findAll(page,size);
PageInfo pageInfo=new PageInfo(infos);
ModelAndView mv=new ModelAndView();
mv.addObject("pageInfo",pageInfo);
mv.setViewName("user-list");
return mv;
}
更改页面路径
将user_list页面中的相应路径做修改,改为上一步中的pageInfo.list
<c:forEach var="user" items="${pageInfo.list}">
配置分页下的按钮
需要将user_list下的各按钮做设置,点击后显示相应的页面。
<div class="box-tools pull-right">
<ul class="pagination">
<li><a href="${pageContext.request.contextPath}/user/findAll.do?page=1&size=5" aria-label="Previous">首页</a></li>
<li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageInfo.pageNum-1}&size=5">上一页</a></li>
<c:forEach begin="1" end="${pageInfo.pages}" var="pageNum">
<li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageNum}&size=5">${pageNum}</a></li>
</c:forEach>
<li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageInfo.pageNum+1}&size=5">下一页</a></li>
<li><a href="${pageContext.request.contextPath}/user/findAll.do?page=${pageInfo.pages}&size=5" aria-label="Next">尾页</a></li>
</ul>
</div>
启动运行
登录成功
点击用户管理
点击下一页
成功啦