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

📄 pagehelper.java

📁 struts spring hibernate实现的简单新闻系统
💻 JAVA
字号:
package com.pure.comm;

import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;

public class PageHelper {
	private HttpServletRequest request;

	private HttpSession session;

	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 = ParamUtil.getString(this.request, "perPage", "");
		if (!"".equals(cPerPage)) {
			this.session.setAttribute("cPerPage", cPerPage);
		}
		cUserPerPage = (String) this.session.getAttribute("cPerPage");
		if (null != cUserPerPage) {
			perPage = Integer.parseInt(cUserPerPage);
		}
		return perPage;
	}

	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();
		boolean display1 = false;
		boolean display2 = false;
		boolean display3 = false;
		boolean display4 = false;
		boolean isHaveParam=false;
		
		if(null!=param && !"".equals(param)){
			isHaveParam = true;
		}

		// 绝对路径
		String realPath = pageObject.getRealPath();
		// 翻页模板名
		String pageTemplate = pageObject.getPageTemplate();

		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;}\">");
		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;}\">");
		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>");

		Configuration cfg = new Configuration();
		Template newsTemplate = null;
		String deTemplateString = "";
		try {
			cfg.setDirectoryForTemplateLoading(new File(realPath
					+ "/WEB-INF/templates/page"));
			cfg.setObjectWrapper(new DefaultObjectWrapper());

			newsTemplate = cfg.getTemplate(pageTemplate, "UTF-8");

			deTemplateString = newsTemplate.toString();
			deTemplateString = deTemplateString.replace("${total}", String
					.valueOf(total));
			deTemplateString = deTemplateString.replace("${page}", String
					.valueOf(page));
			deTemplateString = deTemplateString.replace("${allPage}", String
					.valueOf(totalPage));
			if (display1) {
				deTemplateString = deTemplateString.replace("${firstPageStart}",
						"<a href=\""+firstPageBuffer.toString()+"\">");
				deTemplateString = deTemplateString.replace("${firstPageEnd}","</a>");
			}else{
				deTemplateString = deTemplateString.replace("${firstPageStart}","");
				deTemplateString = deTemplateString.replace("${firstPageEnd}","");
			}
			if (display2) {
				deTemplateString = deTemplateString.replace("${perPageStart}",
						"<a href=\""+perPageBuffer.toString()+"\">");
				deTemplateString = deTemplateString.replace("${perPageEnd}","</a>");
			}else{
				deTemplateString = deTemplateString.replace("${perPageStart}","");
				deTemplateString = deTemplateString.replace("${perPageEnd}","");
			}
			if (display3) {
				deTemplateString = deTemplateString.replace("${nextPageStart}",
						"<a href=\""+nextPageBuffer.toString()+"\">");
				deTemplateString = deTemplateString.replace("${nextPageEnd}","</a>");
			}else{
				deTemplateString = deTemplateString.replace("${nextPageStart}","");
				deTemplateString = deTemplateString.replace("${nextPageEnd}","");
			}
			if (display4) {
				deTemplateString = deTemplateString.replace("${lastPageStart}",
						"<a href=\""+lastPageBuffer.toString()+"\">");
				deTemplateString = deTemplateString.replace("${lastPageEnd}","</a>");
			}else{
				deTemplateString = deTemplateString.replace("${lastPageStart}","");
				deTemplateString = deTemplateString.replace("${lastPageEnd}","");
			}
			deTemplateString = deTemplateString.replace("${numPage}",
					numPageBuffer.toString());
			deTemplateString = deTemplateString.replace("${jumpPage}",
					jumpPageBuffer.toString());
		} catch (IOException e) {
			e.printStackTrace();
		}
		return deTemplateString;
	}
}

⌨️ 快捷键说明

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