📄 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 =
"<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'> 共 " +
"<font color=blue>#total}</font> 条记录 #firstPageStart}首 页#firstPageEnd} " +
"#perPageStart}上一页#perPageEnd} #nextPageStart}下一页#nextPageEnd} #lastPageStart}" +
"尾 页#lastPageEnd} 页次:#page}/#allPage} 每页显示 #numPage} 条 " +
" 跳转到第 #jumpPage} 页</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 + -