========Constants.java
public class Constants {
public final static String USERNAME_KEY = "username";
public final static int pageSize = 25;
public final static int pageNo =1;
}
========Pager.java
public class Pager {
// 页面大小
protected int[] pageSizeList = { 10, 25, 50, 100, 200, 300, 500 };
// 一页显示的记录数
protected int pageSize = Constants.pageSize;
// 当前页码
protected int pageNo = Constants.pageNo;
// 记录总数
protected int rowCount = 0;
// 总页数
protected int pageCount = 1;
// 起始行数
protected int startIndex = 1;
// 结束行数
protected int endIndex = 1;
protected int firstPageNo = 1;
protected int prePageNo = 1;
protected int nextPageNo = 1;
protected int lastPageNo = 1;
// 结果集存放List
protected List resultList;
public Pager(int pageSize, int pageNo, int rowCount, List resultList) {
this.pageSize = pageSize;
this.pageNo = pageNo;
this.rowCount = rowCount;
this.resultList = resultList;
if (rowCount % pageSize == 0) {
this.pageCount = rowCount / pageSize;
} else {
this.pageCount = rowCount / pageSize + 1;
}
this.startIndex = pageSize * (pageNo - 1);
this.endIndex = this.startIndex + resultList.size();
this.lastPageNo = this.pageCount;
if (this.pageNo > 1) this.prePageNo = this.pageNo -1;
if (this.pageNo == this.lastPageNo){
this.nextPageNo = this.lastPageNo;
} else {
this.nextPageNo = this.pageNo + 1;
}
}
public Object[] getPageSizeIndexs() {
List result = new ArrayList(pageSizeList.length);
for (int i = 0; i < pageSizeList.length; i++) {
result.add(String.valueOf(pageSizeList[i]));
}
Object[] indexs = (result.toArray());
return indexs;
}
public Object[] getPageNoIndexs() {
List result = new ArrayList(pageCount);
for (int i = 0; i < pageCount; i++) {
result.add(String.valueOf(i + 1));
}
Object[] indexs = (result.toArray());
return indexs;
}
public int getEndIndex() {
return endIndex;
}
public void setEndIndex(int endIndex) {
this.endIndex = endIndex;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int[] getPageSizeList() {
return pageSizeList;
}
public void setPageSizeList(int[] pageSizeList) {
this.pageSizeList = pageSizeList;
}
public List getResultList() {
return resultList;
}
public void setResultList(List resultList) {
this.resultList = resultList;
}
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
public int getStartIndex() {
return startIndex;
}
public void setStartIndex(int startIndex) {
this.startIndex = startIndex;
}
public int getFirstPageNo() {
return firstPageNo;
}
public void setFirstPageNo(int firstPageNo) {
this.firstPageNo = firstPageNo;
}
public int getLastPageNo() {
return lastPageNo;
}
public void setLastPageNo(int lastPageNo) {
this.lastPageNo = lastPageNo;
}
public int getNextPageNo() {
return nextPageNo;
}
public void setNextPageNo(int nextPageNo) {
this.nextPageNo = nextPageNo;
}
public int getPrePageNo() {
return prePageNo;
}
public void setPrePageNo(int prePageNo) {
this.prePageNo = prePageNo;
}
}
=========index.jsp
<TABLE border="0" width="100%">
<TR class="tableheader">
<TD><s:text name="address.page.name" /></TD>
<TD><s:text name="address.page.sex" /></TD>
<TD><s:text name="address.page.mobile" /></TD>
<TD><s:text name="address.page.email" /></TD>
<TD><s:text name="address.page.qq" /></TD>
<TD><s:text name="address.page.company" /></TD>
<TD><s:text name="address.page.address" /></TD>
<TD><s:text name="address.page.postcode" /></TD>
<TD><s:text name="button.operation" /></TD>
</TR>
<s:iterator value="pager.resultList">
<TR>
<TD><s:property value="name"/></TD>
<TD><s:property value="sex"/></TD>
<TD><s:property value="mobile"/></TD>
<TD><s:property value="email"/></TD>
<TD><s:property value="qq"/></TD>
<TD><s:property value="company"/></TD>
<TD><s:property value="address"/></TD>
<TD><s:property value="postcode"/></TD>
<TD><a href='address!edit.do?id=<s:property value="id"/>'><s:text name="button.edit" /></a>
<a href="address!delete.do?id=<s:property value="id"/>"><s:text name="button.delete" /></a></TD>
</TR>
</s:iterator>
</TABLE>
<TABLE border="0" width="100%" class="pager">
<TR>
<s:form action="address!list.do" method="post" name="form1">
<TD align="left"><s:text name="pager.pageSize" />
<s:select name="pageSize" key="pager.pageSize" list="pager.pageSizeIndexs" value="pager.pageSize" οnchange="document.all.pageNo.value='1';document.all.form1.submit();"/>
</TD>
<TD align="center">
<s:text name="pager.rowCount" /><s:property value="pager.rowCount" />
</TD>
<TD align="right">
<a href="javascript:document.all.pageNo.value='<s:property value="pager.firstPageNo" />';document.all.form1.submit();"><s:text name="pager.firstPageNo" /></a>
<a href="javascript:document.all.pageNo.value='<s:property value="pager.prePageNo" />';document.all.form1.submit();"><s:text name="pager.prePageNo" /></a>
<a href="javascript:document.all.pageNo.value='<s:property value="pager.nextPageNo" />';document.all.form1.submit();"><s:text name="pager.nextPageNo" /></a>
<a href="javascript:document.all.pageNo.value='<s:property value="pager.lastPageNo" />';document.all.form1.submit();"><s:text name="pager.lastPageNo" /></a>
<s:select name="pageNo" list="pager.pageNoIndexs" value="pager.pageNo" οnchange="document.all.form1.submit();"/>
</TD>
<TD width="20"></TD>
</TR>
</TABLE>
</s:form>
=========dao
public Pager findPagerByUsername(final String username, final int pageSize,
final int pageNo) {
Session session = getHibernateTemplate().getSessionFactory().openSession();
// set query condition
Criteria criteria = session.createCriteria(Address.class);
criteria.add(Restrictions.eq("username", username));
// get total count
int rowCount = ((Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);
// get current page list
int startIndex = pageSize * (pageNo - 1);
criteria.addOrder(Order.asc("name"));
criteria.setFirstResult(startIndex);
criteria.setMaxResults(pageSize);
List result = criteria.list();
session.close();
return new Pager(pageSize, pageNo, rowCount, result);
}