今天写了一个分页 说起分页网上有很多种,俺是菜鸟也写了一个是关于论坛。
该分页是从hibernate层开始分页获取数据的下图 dao层:
@Override
public List<Post> getPostPage(
int plateId, int pageid, int pagesize) {
Session session = this.getHibernateTemplate().getSessionFactory().openSession();
Query query = session.createQuery(("from Post m where m.plateId ="+plateId+"order by sendTime desc"));
query.setFirstResult((pageid-1)*pagesize);
query.setMaxResults(pagesize);
List<Post> listPage = (List<Post>)query.list();
session.close();
return listPage;
}
通过query可以得到你想要的页面的信息。int plateId 论坛模块Id, int pagei页数, int pagesize每页条数
service 层
@Override
public List<Post> getPostPage(int plateId, int pageid, int pagesize) {
List<Post> PostPage = postDao.getPostPage(plateId, pageid, pagesize);
return PostPage;
}
action层:第一个方法调用下面的方法获取最多页数
public String postList(){
/* String account = (String) request.getSession().getAttribute(
"accountName");*/
HttpServletRequest request = ServletActionContext.getRequest();
postList = postService.getPostPage(post.getPlateId(), page.getCurrentPage(), page.getPageSize());
//page.setAllPageNumber(postService.getPostListByPlateId(post.getPlateId()).size());
//page.setAllPageNumber(postListAll.size());
//获取总页数
page.setPages(postListAll());
request.setAttribute("pages",postListAll());
if(postList.size()>0)
return "ok";
else
return "fail";
}
public int postListAll(){
int allpages = postService.getPostListByPlateId(post.getPlateId()).size();
int pages = allpages/page.getPageSize();
int remainder = allpages%page.getPageSize();
if(remainder!=0)
{
pages++;
}
return pages;
}
jsp页面调用
<th><a href="forum/postAction_postList?post.plateId=1&page.currentPage=1&page.pageSize=5"><%//=plateList.get(i).getPlateName() %><!-- plateList.get(i).getPlateName() -->三年级二班</a></th>
<table class="table table-striped table-bordered table-condensed table-hover">
<thead>
<tr>
<th>主题</th>
<th>作者</th>
<th>时间</th>
</tr>
</thead>
<s:iterator value = "postList">
<tr>
<td><a href="forum/jsp/post_detail.jsp" ><s:property value = "theme"></s:property><a/></td>
<td><s:property value = "sendAccountName"></s:property></td>
<td><s:property value = "sendTime"></s:property></td>
</tr>
</s:iterator>
<tr>
<th></th>
<th></th>
<th>
<a href="forum/postAction_postList?post.plateId=1&page.currentPage=1&page.pageSize=<s:property value = "page.pageSize"/>">首页</a>
<a href="forum/postAction_postList?post.plateId=1&page.currentPage=<s:property value = "page.currentPage-1"/>&page.pageSize=<s:property value = "page.pageSize"/>">上一页</a>
<%
int sum = Integer.parseInt(request.getAttribute("pages").toString());
%>
<% for(int i=1;i<sum;i++){%>
<a href="forum/postAction_postList?post.plateId=1&page.currentPage=<%=i%>&page.pageSize=<s:property value = "page.pageSize"/>"><%=i%></a>
<% }
%>
<a href="forum/postAction_postList?post.plateId=1&page.currentPage=<s:property value = "page.currentPage+1"/>&page.pageSize=<s:property value = "page.pageSize"/>">下一页</a>
<a href="forum/postAction_postList?post.plateId=1&page.currentPage=<s:property value = "page.pages"/>&page.pageSize=<s:property value = "page.pageSize"/>">尾页</a>
</th>
</tr>
</table>