📄 pagehelper.java
字号:
package com.estore.struts.utils;import javax.servlet.http.HttpServletRequest;/****************************************** * 分页辅助类 * 用法示例: * PageHelper pageHelper=new PageHelper(); * pageHelper.setPageSize(10);(可选),设置页面大小 * pageHelper.getRequestPage();获取请求的页面值 ,如页面中的page=2参数。或以其他方式获得page值则用setCurrentPage(int)方法设置当前页 * newsList=xxx.getNews(catalogId, pageHelper.getSkip(), pageHelper.getMax());获取该页面的一段数据记录 * * out.print(pageHelper.showNavigation());用在页面中,打印导航信息 ******************************************/public class PageHelper { final static private int DEFAULT_CURRENT_PAGE=1;//默认当前页 final static private int DEFAULT_PAGESIZE=10; //默认页面大小 private String CURRENT_PAGE_STR="page"; //页面中分页的参数 private HttpServletRequest request; private int _currentPage; //当前页 private int _pageSize; //页面大小 private int _skip; //跳过的记录数 private int _max; //获取记录的数量 private String _queryStr=null; //其他查询参数字符串 private int _maxCount=-1; //总记录数 private int _maxPage=-1; //总页数 public PageHelper(){ this(DEFAULT_CURRENT_PAGE,DEFAULT_PAGESIZE); } public PageHelper(int currentPage){ this(currentPage,DEFAULT_PAGESIZE); } public PageHelper(int currentPage,int pageSize){ _currentPage=filterPageNum(currentPage); _pageSize=pageSize; calculateSpan(); } public void setCurrentPage(int currentPage){ _currentPage=filterPageNum(currentPage); calculateSpan(); } public void setPageSize(int pageSize){ if(pageSize<1) pageSize=DEFAULT_PAGESIZE; _pageSize=pageSize; calculateSpan(); } public void setQueryStr(String queryStr){ this._queryStr=queryStr; } public void setMaxCount(int maxCount){ _maxCount=maxCount; if(_maxCount%_pageSize!=0) _maxPage=_maxCount/_pageSize+1; else _maxPage=_maxCount/_pageSize; } public void setMaxPage(int maxPage){ this._maxPage=maxPage; } public int getCurrentPage(){ return this._currentPage; } public int getPageSize(){ return this._pageSize; } public int getSkip(){ return this._skip; } public int getMax(){ return this._max; } public int getMaxCount(){ return this._maxCount; } public int getMaxPage(){ return this._maxPage; } public String getQueryStr(){ return this._queryStr; } public HttpServletRequest getRequest() { return request; } public void setRequest(HttpServletRequest request) { this.request = request; } /*********************************** * 获取页面中的“page=int的的参数,并计算出 * 该获取的一段记录 ***********************************/ public void getRequestPage(){ try{ _currentPage=Integer.parseInt(request.getParameter(CURRENT_PAGE_STR)); }catch(Exception e){ _currentPage=1; } _currentPage=filterPageNum(_currentPage); calculateSpan(); } /*********************************** * 生成导航信息,如上一页、下一页等 ***********************************/ public String showNavigation(String methodname){ StringBuffer str=new StringBuffer(); int former=_currentPage-1; int next=_currentPage+1; //将页数做合法处理; former=filterPageNum(former); next=filterPageNum(next); str.append("第"+_currentPage+"页 "); str.append("每页"+_pageSize+"条 "); if(_maxPage>=0&&_maxCount>=0) str.append("共"+_maxPage+"页/"+_maxCount+"条记录"); str.append(" "); ///////////////首页///////////////// str.append("<a href=\"?method="+methodname+"&"+CURRENT_PAGE_STR+"=1\">首页</a> "); ///////////////上一页///////////////// if(_currentPage>1){ str.append("<a href=\"?method="+methodname+"&"+CURRENT_PAGE_STR+"="+String.valueOf(former)); if(_queryStr!=null) str.append("&"+_queryStr); str.append("\">上一页</a> "); } else str.append("上一页 "); ///////////////下一页///////////////// if(_maxPage>0&&_currentPage<_maxPage){ str.append("<a href=\"?method="+methodname+"&"+CURRENT_PAGE_STR+"="+String.valueOf(next)); if(_queryStr!=null) str.append("&"+_queryStr); str.append("\">下一页</a> "); } else str.append("下一页 "); ////////////////尾页/////////////// if(_maxPage>0) str.append("<a href=\"?method="+methodname+"&"+CURRENT_PAGE_STR+"="+this._maxPage+"\">尾页</a> "); return str.toString(); } /*********************************** * 计算跳过的记录数和获取记录的数量 ***********************************/ private void calculateSpan(){ _skip=(this._currentPage-1)*_pageSize; _max=_pageSize; } /*********************************** * 使页面数值不能小于1或大于最大页面数 ***********************************/ private int filterPageNum(int pageNum){ if(_maxPage>0){ if(pageNum>_maxPage) pageNum=_maxPage; } if (pageNum<1) pageNum=1; return pageNum; } public static void main(String[] args){ PageHelper p=new PageHelper(); p.setPageSize(10); p.setMaxCount(100); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -