为了满足代码复用,使用时,只需要将下列jsp代码复制到列表下边,将beanName改成自己表对应的bean的类名就可以实现分页功能。
前台jsp:
<div>
<a href="util/pages!pagetotal?page=1&beanName=UserInfo" >首页</a>
<s:if test="page==1">
上一页
</s:if>
<s:else>
<a href="util/pages!pagetotal?page=${page-1 }&beanName=UserInfo" >上一页</a>
</s:else>
<s:iterator begin="1" end="totalPages" var="p">
<s:if test="#p==page">
<s:property value="#p" />
</s:if>
<s:else>
<a href="util/pages!pagetotal?page=<s:property value="#p" />&beanName=UserInfo"><s:property value="#p" /></a>
</s:else>
</s:iterator>
<s:if test="page==totalPages">
下一页
</s:if>
<s:else>
<a href="util/pages!pagetotal?page=${page+1 }&beanName=UserInfo" >下一页</a>
</s:else>
<a href="util/pages!pagetotal?page=${totalPages }&beanName=UserInfo" >末页</a>
</div>
struts.xml配置如下:
<package name="util" extends="struts-default" namespace="/util" >
<action name="pages" class="com.zhongluo.zhaopinjiuye.util.PageViewAction" >
<result name="success" >
/WEB-INF/personal/pages.jsp
</result>
</action>
</package>
PageViewAction代码如下:
public class PageViewAction extends BaseAction{
private int page = 1;
private int pageSize = 3;
private List list;
private int totalPages;
private String beanName;
public String pagetotal(){
WebApplicationContext cc = ContextLoader.getCurrentWebApplicationContext();
PageService pageService = (PageService)cc.getBean("PageService");
list = pageService.FindAll(page, pageSize,beanName);
totalPages = pageService.totalPages(pageSize,beanName);
return"success";
}
//省略相关属性get、set方法
}
DAO代码如下:
public class PageDao extends BaseDao {
private Session session = null;
public List findAll(int page, int pageSize,String beanName) {
String hql = "from "+beanName;
session = getCurrentSession();
Query query = session.createQuery(hql);
query.setFirstResult((page - 1) * pageSize);
query.setMaxResults(pageSize);
return query.list();
}
public int getTotalPages(int pageSize,String beanName) {
String hql = " select count(*) from "+beanName;
session = getCurrentSession();
Query query = session.createQuery(hql);
List list = query.list();
int totalRows = Integer.parseInt(list.get(0).toString());
if (totalRows % pageSize == 0) {
return totalRows / pageSize;
} else {
return totalRows / pageSize + 1;
}
}
}