您的位置:首页 > 其它

技术敏感度 ― 基层技术管理者必备

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: