⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pagehelper.java

📁 用ajax在ssh框架下发挥
💻 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 = 
		  "<table width='20%' align='center'><tr><td height='5'></td></tr></table>" +
		  "<table width='780' align=center cellpadding='0' cellspacing='0' bgcolor='#F4F4F4'" +
		  " style='border: 1 solid #CCCCCC'> <tr><td height='30' class='font0' align='center' valign='middle'>&nbsp;&nbsp;共 " +
		  "<font color=blue>#total}</font> 条记录&nbsp;#firstPageStart}首 页#firstPageEnd}&nbsp;" +
		  "#perPageStart}上一页#perPageEnd}&nbsp;#nextPageStart}下一页#nextPageEnd}&nbsp;#lastPageStart}" +
		  "尾 页#lastPageEnd}&nbsp;&nbsp;&nbsp;页次:#page}/#allPage}&nbsp;&nbsp;每页显示 #numPage} 条&nbsp;" +
		  "&nbsp; 跳转到第&nbsp;#jumpPage}&nbsp;页</td></tr></table>";
	
	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("<select name=\"perPage\" ");
		numPageBuffer.append(" onchange=\"");
		numPageBuffer.append(" if(this.options[this.selectedIndex]");
		numPageBuffer.append(".value!=''){");
		numPageBuffer.append(" location='" + url + "?");
		numPageBuffer.append("page=1");
		numPageBuffer.append("&perPage='+this.options[this.selectedIndex]");
		numPageBuffer.append(".value+");
		if(isHaveParam){
			numPageBuffer.append("'&"+param+"'");
		}
		numPageBuffer.append(";}\">");
		for (int i = 1; i <= 4; i++) {
			numPageBuffer.append("<option value=\"" + (i * 10) + "\"");
			if ((i * 10) == perPage) {
				numPageBuffer.append(" selected>" + (i * 10) + "</option>");
			} else {
				numPageBuffer.append(">" + (i * 10) + "</option>");
			}
		}
		numPageBuffer.append("</select>");

		/**
		 * 跳转到第几页
		 */
		StringBuffer jumpPageBuffer = new StringBuffer();
		jumpPageBuffer.append("<select name=\"pages\"");
		jumpPageBuffer.append(" onchange=\"");
		jumpPageBuffer.append(" if(this.options[this.selectedIndex]");
		jumpPageBuffer.append(".value!=''){location='" + url + "?");
		jumpPageBuffer.append("page='+this.options[this.selectedIndex]");
		jumpPageBuffer.append(".value+");
		if(isHaveParam){
			jumpPageBuffer.append("'&"+param+"'");
		}
		jumpPageBuffer.append(";}\">");
		for (int i = 1; i <= totalPage; i++) {
			jumpPageBuffer.append("<option value=\"" + i + "\"");
			if (i == page) {
				jumpPageBuffer.append("selected");
			}
			jumpPageBuffer.append(">" + i + "</option>");
		}
		jumpPageBuffer.append("</select>");
		
		/**
		 * 整个分页条
		 */
		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}",
						"<a href=\""+firstPageBuffer.toString()+"\">");
				deTemplateString = deTemplateString.replaceAll("#firstPageEnd}","</a>");
			}else{
				deTemplateString = deTemplateString.replaceAll("#firstPageStart}","");
				deTemplateString = deTemplateString.replaceAll("#firstPageEnd}","");
			}
			if (display2) {
				deTemplateString = deTemplateString.replaceAll("#perPageStart}",
						"<a href=\""+perPageBuffer.toString()+"\">");
				deTemplateString = deTemplateString.replaceAll("#perPageEnd}","</a>");
			}else{
				deTemplateString = deTemplateString.replaceAll("#perPageStart}","");
				deTemplateString = deTemplateString.replaceAll("#perPageEnd}","");
			}
			if (display3) {
				deTemplateString = deTemplateString.replaceAll("#nextPageStart}",
						"<a href=\""+nextPageBuffer.toString()+"\">");
				deTemplateString = deTemplateString.replaceAll("#nextPageEnd}","</a>");
			}else{
				deTemplateString = deTemplateString.replaceAll("#nextPageStart}","");
				deTemplateString = deTemplateString.replaceAll("#nextPageEnd}","");
			}
			if (display4) {
				deTemplateString = deTemplateString.replaceAll("#lastPageStart}",
						"<a href=\""+lastPageBuffer.toString()+"\">");
				deTemplateString = deTemplateString.replaceAll("#lastPageEnd}","</a>");
			}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;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -