通用分页帮助类

package utils;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

/**
 * 分页JavaBean
 *
 *
 */
public class PageBean {
 /* 当前页 */
 private int curPage = 1;

 /* 总记录数 */
 private int totalRecord = 0;

 /* 每页记录数 */
 private int pageRecord = 10;

 /* 是否分页,默认分页 */
 private boolean paginate = true;

 /* 请求的URL */
 private String url;

 /* 请求中的参数 */
 private Map<String, String[]> parameters = new HashMap<String, String[]>();

 public PageBean() {
  super();
 }

 public PageBean(HttpServletRequest request) {
  super();
  this.setRequest(request);
 }

 /**
  * 使用HttpServletRequest对象对分页Bean进行初始化
  *
  */
 @SuppressWarnings("unchecked")
 public void setRequest(HttpServletRequest request) {
  this.setCurPage(request.getParameter("curPage"));// 从请求中获取当前页
  this.setPageRecord(request.getParameter("pageRecord"));// 从请求中获取页大小
  this.setPaginate(request.getParameter("paginate"));// 获取用来判断是否分页的参数
  this.setUrl(request.getContextPath() + request.getServletPath());// 获取表示请求资源的URL
  this.setParameters(new HashMap<String, String[]>(request
    .getParameterMap()));// 获取请求中的所有参数
 }

 /**
  * true表示进行分页
  *
  * @return
  */
 public boolean isPaginate() {
  return paginate;
 }

 /**
  * 设置是否分页true分页,false不分页
  *
  * @param paginate
  */
 public void setPaginate(boolean paginate) {
  this.paginate = paginate;
 }

 /**
  * 设置是否分页true分页,false不分页
  *
  * @param paginate
  */
 public void setPaginate(String paginate) {
  if (null != paginate && paginate.trim().equalsIgnoreCase("false")) {
   this.setPaginate(false);
  } else {
   this.setPaginate(true);
  }
 }

 public Map<String, String[]> getParameters() {
  return parameters;
 }

 public void setParameters(Map<String, String[]> parameters) {
  this.parameters = parameters;
 }

 public String getUrl() {
  return url;
 }

 public void setUrl(String url) {
  this.url = url;
 }

 public int getCurPage() {
  return curPage;
 }

 public void setCurPage(int curPage) {
  if (curPage > 1) {
   this.curPage = curPage;
  }
 }

 public void setCurPage(String curPage) {
  if (null == curPage || curPage.trim().equals("")) {
   return;
  }
  int acurPage = Integer.parseInt(curPage);
  this.setCurPage(acurPage);
 }

 public int getPageRecord() {
  return pageRecord;
 }

 public void setPageRecord(int pageRecord) {
  this.pageRecord = pageRecord;
 }

 public void setPageRecord(String pageRecord) {
  if (null != pageRecord && !pageRecord.trim().equals("")) {
   this.pageRecord = Integer.parseInt(pageRecord);
  }
 }

 public int getTotalRecord() {
  return totalRecord;
 }

 public void setTotalRecord(int totalRecord) {
  this.totalRecord = totalRecord;
 }

 /**
  * 返回下一页页码
  *
  * @return
  */
 public int getNextPageNumber() {
  int nextPageNumber = this.curPage + 1;
  if (nextPageNumber > this.getMaxPageNumber()) {
   nextPageNumber = this.getMaxPageNumber();
  }
  return nextPageNumber;
 }

 /**
  * 返回上一页页码
  *
  * @return
  */
 public int getPreviousPageNumber() {
  int previousPageNumber = this.curPage - 1;
  if (previousPageNumber < 1) {
   previousPageNumber = 1;
  }
  return previousPageNumber;
 }

 /**
  * 返回最大页码编号
  *
  * @return
  */
 public int getMaxPageNumber() {
  int maxPageNumber = 1;
  if (this.totalRecord > this.pageRecord) {
   if (0 == this.totalRecord % this.pageRecord) {
    maxPageNumber = this.totalRecord / this.pageRecord;
   } else {
    maxPageNumber = this.totalRecord / this.pageRecord + 1;
   }
  }
  return maxPageNumber;
 }

 /**
  * 获取起始记录下标
  *
  * @return
  */
 public int getStartRecordIndex() {
  return this.pageRecord * (this.curPage - 1);
 }

 /**
  * 获取结束记录下标
  *
  * @return
  */
 public int getEndRecordIndex() {
  int end = this.pageRecord * this.curPage - 1;
  if (end > (this.totalRecord - 1)) {
   end = (this.totalRecord - 1);
  }
  return end;
 }

 public String toString() {
  // 保存请求的参数到一个表单对象中,以供下次查询使用
  StringBuffer bf = new StringBuffer();
  bf.append("<form name='pageBeanForm' action='" + this.getUrl()
    + "' method='post'>");
  bf.append("<input type='hidden' name='curPage' value=''/>");// 当前页是目前是空,但在点击分页按钮时会进行设置
  Map<String, String[]> parameters = this.getParameters();// 请求中的所有参数
  String paramName = null;
  String[] paramValues = null;
  Iterator it = parameters.keySet().iterator();
  while (it.hasNext()) {
   paramName = (String) it.next();// 参数名
   if ("curPage".equals(paramName)) {
    continue;// 把当前页参数忽略掉
   }
   paramValues = parameters.get(paramName);// 参数值
   for (int i = 0; null != paramValues && i < paramValues.length; i++) {
    bf.append("<input type='hidden' name='" + paramName
      + "' value='" + paramValues[i] + "'/>");
   }
  }
  bf.append("</form>");

  // 显示分页按钮
  bf.append("每页 " + this.getPageRecord() + " 行");
  bf.append(" 共 " + this.getTotalRecord() + " 行");
  bf.append(" 第 " + this.getCurPage() + " 页");
  bf.append(" 共 " + this.getMaxPageNumber() + " 页");
  bf.append(" <a href='javascript:gotoPage(" + 1 + ")'>首页</a>");
  bf.append(" <a href='javascript:gotoPage("
    + this.getPreviousPageNumber() + ")'>上一页</a>");
  bf.append(" <a href='javascript:gotoPage(" + this.getNextPageNumber()
    + ")'>下一页</a>");
  bf.append(" <a href='javascript:gotoPage(" + this.getMaxPageNumber()
    + ")'>尾页</a>");
  bf.append(" 页数 <input type='text' id='pageNumber'  style='width:20px;' /> <a href='javascript:jumpPage()'>GO</a>");

  // 动态生成js
  bf.append("<script>");
  bf.append("function gotoPage(curPage){document.pageBeanForm.curPage.value=curPage;document.pageBeanForm.submit();}");
  bf.append("var maxPageNumber =" + this.getMaxPageNumber() + ";");
  bf.append("function jumpPage(){var curPage=document.getElementById('pageNumber').value;if(curPage==''||isNaN(curPage)||parseInt(curPage)<1||parseInt(curPage)>maxPageNumber){alert('请输入一个正确的页码');return;}gotoPage(curPage);}");
  bf.append("</script>");
  return bf.toString();
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值