pagehelper.java~2~
来自「hibernate+spring的相片上传项目」· JAVA~2~ 代码 · 共 387 行 · 第 1/2 页
JAVA~2~
387 行
package org.lenovoAC.Page;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
/**
* 分页器助手类
*
* @author pure
*
*/
public class PageHelper {
/**
* 如果需要在分页条上保存一些状态信息,需要用到request对象
*/
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;
}
/**
* 根据模板生成翻页条
*
* @param pageObject
* @return 返回翻页条字符串
*/
public String getPageBreakStr(Page pageObject) {
// 取分页器参数
int page = pageObject.getPage();
int total = pageObject.getTotal();
int perPage = pageObject.getPerPage();
int viewPage = pageObject.getViewPage();
int cNum = pageObject.getCNum();
/**
* 计算前、后可见页码起始位置
*/
int startPage = ((page - 1) / viewPage) * viewPage + 1;
int remberStart = 0;
String contextPath = pageObject.getContextPath();
String url = contextPath + "/" + pageObject.getUrl();
String param = pageObject.getParam();
/**
* 图片滤镜样式
*/
String imgStyle = "style=\"filter:gray\"";
/**
* 是否翻页可用 首页 上一页 下一页 最后一页 true 可用 false 不可用
*/
boolean display1 = false;
boolean display2 = false;
boolean display3 = false;
boolean display4 = false;
/**
* 是否有url参数
*/
boolean isHaveParam = false;
if (null != param && !"".equals(param)) {
isHaveParam = true;
}
/**
* 绝对路径
*/
String realPath = pageObject.getRealPath();
/**
* 翻页模板名
*/
String pageTemplate = pageObject.getPageTemplate();
/**
* 计算总页数
*/
int totalPage = sumPage(total, perPage);
page = getCpage(total, perPage, page);
if (totalPage <= 0)
return "";
/**
* 保存当前页码
*/
this.request.setAttribute("cpage", String.valueOf(page));
// 计算页数序列(每次显示10个页数)1..10 11..20 21..30 ....
StringBuffer pageBarBuffer = new StringBuffer();
StringBuffer prevPageNumStart = new StringBuffer();
StringBuffer prevPageNumEnd = new StringBuffer();
StringBuffer nextPageNumStart = new StringBuffer();
StringBuffer nextPageNumEnd = new StringBuffer();
/**
* 是否在前?页和后?页图片上使用样式
*/
boolean isPrevPageNumStyle = false;
boolean isNextPageNumStyle = false;
pageBarBuffer.append(" ");
if (startPage > viewPage) {
prevPageNumStart.append("<a href='" + url);
prevPageNumStart.append("?page=" + (startPage - 1) + "' >");
if (isHaveParam) {
prevPageNumStart.append("&" + param);
}
prevPageNumEnd.append("</a>");
} else {
isPrevPageNumStyle = true;
}
/**
* 分页页码条
*/
for (remberStart = startPage; remberStart < startPage + viewPage; remberStart++) {
if (remberStart == page) {
pageBarBuffer
.append("<font color=\"red\" face=\"arial,sans-serif\"><b>"
+ remberStart + "</b></font> ");
} else {
if (isHaveParam) {
pageBarBuffer
.append("<a href=\""
+ url
+ "?page="
+ remberStart
+ "&"
+ param
+ "\"><font face=\"arial,sans-serif\" color=\"#000000\"><b>"
+ remberStart + "</b></font></a> ");
} else {
pageBarBuffer
.append("<a href=\""
+ url
+ "?page="
+ remberStart
+ "\"><font face=\"arial,sans-serif\" color=\"#000000\"><b>"
+ remberStart + "</b></font></a> ");
}
}
if (remberStart == totalPage)
break;
}
if ((remberStart - startPage) == viewPage) {
nextPageNumStart.append("<a href='" + url);
nextPageNumStart.append("?page=" + remberStart + "'>");
if (isHaveParam) {
nextPageNumStart.append("&" + param);
}
nextPageNumEnd.append("</a>");
} else {
isNextPageNumStyle = true;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?