📄 pagehelper.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 + -