技术敏感度 ― 基层技术管理者必备
2012-10-12 16:07
330 查看
/** * @author sunbai email:85846536@163.com * @date 2012-1-14 && 上午11:01:40 */ package com.gangyi.util; import java.util.ArrayList; import java.util.List; import org.springframework.context.annotation.Scope; import com.gangyi.crm.vo.PageVo; /** * 分页算法处理类 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 上午11:01:40 */ @Scope("prototype") public class PageUtil { //每页行数 private int rows; //分页查询起始序列 private int limit; //首页A标签 private String fistPageHtml; //上一页A标签 private String upPageHtml; //下一页A标签 private String nextPageHtml; //末页A标签 private String lastPageHtml; //总记录数 private int recordCount; //总页数 private int allPage; //当前页 private int currPage; // 分页带页码 ,最大页签显示数 private final int CUTPAGE_MAX_PAGE = 6; // 分页带页码,多少页进行折叠 private final int CUTPAGE_LOOP_PAGE = 3; private void setRows(int rows) { this.rows = rows; } private void setLimit(int limit) { this.limit = limit; } private void setFistPageHtml(String fistPageHtml) { this.fistPageHtml = fistPageHtml; } private void setUpPageHtml(String upPageHtml) { this.upPageHtml = upPageHtml; } private void setNextPageHtml(String nextPageHtml) { this.nextPageHtml = nextPageHtml; } private void setLastPageHtml(String lastPageHtml) { this.lastPageHtml = lastPageHtml; } private void setRecordCount(int recordCount) { this.recordCount = recordCount; } private void setAllPage(int allPage) { this.allPage = allPage; } private void setCurrPage(int currPage) { this.currPage = currPage; } /** * 获得每页行数 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午03:53:50 * @return */ public int getRows() { return rows; } /** * 获得其实页序列 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午03:54:01 * @return */ public int getLimit() { return limit; } /** * 获得首页a标签 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午03:57:21 * @return */ public String getFistPageHtml() { return fistPageHtml; } /** * 获得上一页a标签 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午03:57:32 * @return */ public String getUpPageHtml() { return upPageHtml; } /** * 获得下一页a标签 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午03:57:44 * @return */ public String getNextPageHtml() { return nextPageHtml; } /** * 获得末页a标签 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午03:57:55 * @return */ public String getLastPageHtml() { return lastPageHtml; } /** * 获得总数据记录数 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午03:58:15 * @return */ public int getRecordCount() { return recordCount; } /** * 获得总页数 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午03:58:25 * @return */ public int getAllPage() { return allPage; } /** * 获得当前页 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午03:59:00 * @return */ public int getCurrPage() { return currPage; } /** * 传入需要的页码,和每页显示的行数算出mysql中分页的开始偏移数据,方便输入到sql语句中查询 * 如getLimtAndLines(10,10) * 返回map * map.get("limit") 等于90 * map.ger("rows") 等于10 * 那么在sql语句中即是:select * from table limit 90,10 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 上午11:06:34 * @param page 当前页 * @param lines 每页行数 * @return */ public Boolean getLimtAndLines(int page,int lines){ try { if(page < 1){ page = 1; } if(lines < 1){ lines = 15; } this.setLimit((page - 1) * lines); this.setRows(lines); } catch (Exception e) { return false; } return true; } /** * 生成页面分页代码主方法 * 根据总条数,以及ACTION路径、当前页和每页显示行数,计算出上一页,下一页等数据,并生成HTML中的A标签或者数字供前台调用 * 返回值是true 或 false * 当为false时 代表没有数据,也无需进行计算,页面直接判断是否为NULL显示与否即可 * 其余方法下取值如下 * PageUtil.getFistPageHtml() 获取首页标签 * PageUtil.getUpPageHtml() 获取上一页标签 * PageUtil.getNextPageHtml() 获取下一页标签 * PageUtil.getLastPageHtml() 获取末页标签 * PageUtil.getRecordCount() 获取总记录数 * PageUtil.getAllPage() 获取总页数 * PageUtil.getCurrPage() 获取当前页 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午02:56:14 * @param allCount 总记录数 * @param actionUrl ACTION路径 * @param lines 每页行数 * @param page 第几页 * @return */ public Boolean getPageHtml(int allCount,String actionUrl,int lines,int page){ try{ //判断是否有记录 if( allCount == 0){ return false; } //判断当前页数 if( page < 1){ page = 1; } //总记录数 int recordCount = allCount; //总页数 int allPage = recordCount % lines == 0 ? recordCount / lines : recordCount / lines + 1; //当前页 int currPage = page; //首页 int firstPage = 1; //末页 int lastPage = allPage; //上一页 int upPage = currPage - 1; //下一页 int nextPage = currPage + 1; //设置分页VO对象 PageVo pageVo = new PageVo(); pageVo.setRecordCount(recordCount); pageVo.setAllPage(allPage); pageVo.setCurrPage(currPage); pageVo.setFirstPage(firstPage); pageVo.setLastPage(allPage); pageVo.setUpPage(upPage > firstPage ? upPage : firstPage); pageVo.setNextPage(nextPage < lastPage ? nextPage : lastPage); //调用生成页面的方法 this.toHtmlFromPageMap(pageVo,actionUrl); }catch (Exception e) { return false; } return true; } /** * 生成页面分页代码,供主方法调用 * 根据分页VO以及ACTION路径、生成HTML中的A标签或者数字供前台调用 * 其取值如下 * PageUtil.getFistPageHtml() 获取首页标签 * PageUtil.getUpPageHtml() 获取上一页标签 * PageUtil.getNextPageHtml() 获取下一页标签 * PageUtil.getLastPageHtml() 获取末页标签 * PageUtil.getRecordCount() 获取总记录数 * PageUtil.getAllPage() 获取总页数 * PageUtil.getCurrPage() 获取当前页 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午03:04:25 * @param pageVo 分页VO * @param actionUrl ACTION路径 * @return */ private void toHtmlFromPageMap(PageVo pageVo,String actionUrl){ this.setFistPageHtml("<a href= <%=request.getContextPath()%>"+actionUrl+"?page="+pageVo.getFirstPage()+">首页</a>"); this.setUpPageHtml("<a href= <%=request.getContextPath()%>"+actionUrl+"?page="+pageVo.getUpPage()+">上一页</a>"); this.setNextPageHtml("<a href= <%=request.getContextPath()%>"+actionUrl+"?page="+pageVo.getNextPage()+">下一页</a>"); this.setLastPageHtml("<a href= <%=request.getContextPath()%>"+actionUrl+"?page="+pageVo.getLastPage()+">末页</a>"); //总记录数 this.setRecordCount(pageVo.getRecordCount()); //总页数 this.setAllPage(pageVo.getAllPage()); //当前页 this.setCurrPage(pageVo.getCurrPage()); } /** * 根据总页数获得当前页面page页码集合 * @author sunbai email:85846536@163.com * @date 2012-1-14 && 下午04:16:51 * @param allpage 总页数 * @param currpage 当前页 * @return */ public List<String> getPageNumbersList(int allpage, int currpage) { // pageye 存放页面,页码集合 List<String> pageye = new ArrayList<String>(); // 需要展示的标签页数小于展示页数常量 if (allpage <= CUTPAGE_MAX_PAGE) for (int i = 1; i <= allpage; i++) pageye.add(String.valueOf(i)); // 需要展示的标签页数大于展示页数常量 if (allpage > CUTPAGE_MAX_PAGE) { // 当前页小于展示也数常量 if (currpage <= CUTPAGE_LOOP_PAGE) for (int i = 1; i <= CUTPAGE_MAX_PAGE; i++) pageye.add(String.valueOf(i)); // 当前页大于展示也数常量 if (currpage > CUTPAGE_LOOP_PAGE) for (int i = currpage - CUTPAGE_LOOP_PAGE; i <= (currpage + CUTPAGE_LOOP_PAGE - 1 > allpage ? allpage : currpage + CUTPAGE_LOOP_PAGE - 1); i++) pageye.add(String.valueOf(i)); } return pageye; } }
相关文章推荐
- 基层技术管理者必备: 技术敏感度
- 技术敏感度 — 基层技术管理者必备
- 技术敏感度 — 基层技术管理者必备
- 技术敏感度 — 基层技术管理者必备
- 技术敏感度 — 基层技术管理者必备 推荐
- 技术敏感度 — 基层技术管理者必备 分类: 项目管理 2014-07-03 08:23 416人阅读 评论(0) 收藏
- 技术敏感度 — 基层技术管理者必备
- 技术敏感度 — 基层技术管理者必备
- 技术敏感度 — 基层技术管理者必备
- 技术敏感度 — 基层技术管理者必备
- 基层技术管理者必备
- 基层技术管理者
- 技术基层管理者交流QQ群243460070
- 你是否拥有技术管理者必备的能力及解决常见问题 之 技术来源于一线,永远不能脱离一线。
- 写技术文章必备的几个小工具
- 未来五年10大必备网络技术[看看自己往哪个方向发展]
- 不只是技术!成为IT经理必备的十大软技能
- 常耀俊老师经典《从技术走向管理——新任管理者必修课》课程
- 从技术骨干到管理者的转变——众博达石油培训记
- [一分钟先生]童耿华:技术管理者应以“技”服人,以“德”服人