通用分页

========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);
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值