www.pudn.com > j2EEnews_struts_hibernate_spring.rar > PageHelper.java


package com.news.page; 
  
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpSession; 
 
 
/** 
 * 数据分页辅助类 
 * 定义每页显示记录数,并生成HTML格式的分页条 
 * @author Yinzhi Geng 
 */ 
public class PageHelper { 
	 /** 
	   * 分页条HTML代码 
	   */ 
	  public static final String BREAKPAGE =  
		  "
" + "
  共 " + "#total} 条记录 #firstPageStart}首 页#firstPageEnd} " + "#perPageStart}上一页#perPageEnd} #nextPageStart}下一页#nextPageEnd} #lastPageStart}" + "尾 页#lastPageEnd}   页次:#page}/#allPage}  每页显示 #numPage} 条 " + "  跳转到第 #jumpPage} 页
"; private HttpServletRequest request; private HttpSession session; /** * 完成初始化 * 构造器 * @param request */ public PageHelper(HttpServletRequest request) { this.request = request; this.session = this.request.getSession(); } /** * 用于计算用户自定义每页显示记录数 * * @return */ public int doCustomPerPage(int defaultPerPage) { int perPage = defaultPerPage; String cUserPerPage = null; String cPerPage = StringUtil.getString(request.getParameter("perPage")); if (!"".equals(cPerPage)) { this.session.setAttribute("cPerPage", cPerPage); } cUserPerPage = (String) this.session.getAttribute("cPerPage"); if (null != cUserPerPage) { perPage = Integer.parseInt(cUserPerPage); } return perPage; } /** * 获取HTML格式分页条 * @param pageObject * @return */ public String getPageBreakStr(Page pageObject) { int page = 1; int total = 0; int perPage = 20; /** * 取分页器参数 */ page = pageObject.getPage(); total = pageObject.getTotal(); perPage = pageObject.getPerPage(); String contextPath = pageObject.getContextPath(); String url = contextPath + pageObject.getUrl(); String param = pageObject.getParam(); /** * 定义显示控制 * display1:首页 * display2:上一页 * display3:下一页 * display4:最后一页 */ boolean display1 = false; boolean display2 = false; boolean display3 = false; boolean display4 = false; boolean isHaveParam=false; if(null!=param && !"".equals(param)){ isHaveParam = true; } int totalPage = (total + perPage - 1) / perPage; if (page > totalPage || page < 0) { page = 1; } /** * 首页 */ StringBuffer firstPageBuffer = new StringBuffer(); if (totalPage > 1) { firstPageBuffer.append(url + "?page=1"); if(isHaveParam){ firstPageBuffer.append("&"+param); } display1 = true; } /** * 上一页 */ StringBuffer perPageBuffer = new StringBuffer(); if (page > 1) { perPageBuffer.append(url + "?page=" + (page - 1)); if(isHaveParam){ perPageBuffer.append("&"+param); } display2 = true; } /** * 下一页 */ StringBuffer nextPageBuffer = new StringBuffer(); if (page < totalPage) { nextPageBuffer.append(url + "?page=" + (page + 1)); if(isHaveParam){ nextPageBuffer.append("&"+param); } display3 = true; } /** * 最后一页 */ StringBuffer lastPageBuffer = new StringBuffer(); if (totalPage > 1) { lastPageBuffer.append(url + "?page=" + totalPage); if(isHaveParam){ lastPageBuffer.append("&"+param); } display4 = true; } /** * 每页显示记录数 */ StringBuffer numPageBuffer = new StringBuffer(); numPageBuffer.append(""); /** * 跳转到第几页 */ StringBuffer jumpPageBuffer = new StringBuffer(); jumpPageBuffer.append(""); /** * 整个分页条 */ String deTemplateString = ""; try { /** * 获取分页条HTML显示 */ deTemplateString = BREAKPAGE; /** * 替换HTML代码的标记 */ deTemplateString = deTemplateString.replaceAll("#total}", String .valueOf(total)); deTemplateString = deTemplateString.replaceAll("#page}", String .valueOf(page)); deTemplateString = deTemplateString.replaceAll("#allPage}", String .valueOf(totalPage)); if (display1) { deTemplateString = deTemplateString.replaceAll("#firstPageStart}", ""); deTemplateString = deTemplateString.replaceAll("#firstPageEnd}",""); }else{ deTemplateString = deTemplateString.replaceAll("#firstPageStart}",""); deTemplateString = deTemplateString.replaceAll("#firstPageEnd}",""); } if (display2) { deTemplateString = deTemplateString.replaceAll("#perPageStart}", ""); deTemplateString = deTemplateString.replaceAll("#perPageEnd}",""); }else{ deTemplateString = deTemplateString.replaceAll("#perPageStart}",""); deTemplateString = deTemplateString.replaceAll("#perPageEnd}",""); } if (display3) { deTemplateString = deTemplateString.replaceAll("#nextPageStart}", ""); deTemplateString = deTemplateString.replaceAll("#nextPageEnd}",""); }else{ deTemplateString = deTemplateString.replaceAll("#nextPageStart}",""); deTemplateString = deTemplateString.replaceAll("#nextPageEnd}",""); } if (display4) { deTemplateString = deTemplateString.replaceAll("#lastPageStart}", ""); deTemplateString = deTemplateString.replaceAll("#lastPageEnd}",""); }else{ deTemplateString = deTemplateString.replaceAll("#lastPageStart}",""); deTemplateString = deTemplateString.replaceAll("#lastPageEnd}",""); } deTemplateString = deTemplateString.replaceAll("#numPage}", numPageBuffer.toString()); deTemplateString = deTemplateString.replaceAll("#jumpPage}", jumpPageBuffer.toString()); } catch (Exception e) { e.printStackTrace(); } System.out.println(deTemplateString); return deTemplateString; } }