基于Spring的web分页

Spring提供了两个分页的类,分别是pager和pageable,下面使用这两个类完成web数据的分页及显示.

假设表test中只有a、b两个属性:

前台页面:

<tr><th>a<th>b</th></tr>
<c:forEach items="${pageTest.content}" var="user">
<tr>
<td>${user.a}</td>
<td>${user.b}</td>
</tr>
</c:forEach>
共${pageTest.totalPages}页,每页${pageTest.size}条
<c:forEach end="${pageTest.totalPages}" var="te" step="1" begin="1" varStatus="name">
<a href="${ctx}/account/test/testPageList?pageNo=${te}">${te}</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</c:forEach>


pageTest是从后台通过model传到前台的数据,其中content是指数据的内容。totalPages是总页数,size是每页的数据条数。

后台:

控制层controller

public String testPageList(@PathParam("pageNo", required = false) String pageNo,Model model) {
Integer currentPage=0;
if(pageNo!=null){
currentPage=Integer.valueOf(pageNo);
currentPage=currentPage-1;
}
PageRequest pagerequset = new PageRequest(currentPage, 2,new Sort( new Sort.Order(Sort.Direction.DESC,"id")));
Page<Test> pageTest=testService.findAll(pagerequset);
//pageTest.get
model.addAttribute("pageTest", pageTest);
return "account/testList";
}

service层:

public Page<Test> findAll(Pageable pageable){
return testDao.findAll(pageable);
} 

 

使用hibernate的分页方法:

// startRecord是查询的起始位置
// pageSize    获取记录的最大条数
       public List <Test> getPage(int startRecord,int pageSize)
    {
         final Query listQuery = em.createQuery(QUERY_USER_BY_ALL);
         listQuery.setFirstResult(startRecord);
         listQuery.setMaxResults(pageSize);
         return listQuery.getResultList();
    }

其中:QUERY_USER_BY_ALL是HQL查询语句

posted on 2012-08-24 21:03  zhuyanyan  阅读(1131)  评论(0编辑  收藏  举报