jsp分页


import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alensic.nursing.utils.StringUtil;

/**
 * 分页
 * 
 * @author zhchen
 *
 */

public class PagingService{
	
	/**
	 * 首页
	 * 
	 * @param pageMap
	 * @return
	 */
	public Map doFirstPage(Map pageMap){
		Map resultMap = new HashMap();
		PageBean page = new PageBean();
		//初始化分页参数
		if(!initPageBean(pageMap, resultMap, page)) return resultMap;
		//当前页
		page.setPageNum(1);
		
		//返回结果赋值
		setResultMap(resultMap, pageMap, page);
	    
	    return resultMap;
	}
	
	/**
	 * 下一页
	 * 
	 * @param pageMap
	 * @return
	 */
	public Map doNextPage(Map pageMap){
		Map resultMap = new HashMap();
		PageBean page = new PageBean();
		//初始化分页参数
		if(!initPageBean(pageMap, resultMap, page)) return resultMap;
		int maxPage = page.getMaxPage();
		//当前页
		int start = Integer.parseInt(pageMap.get("cur_page_num") == null?"0":pageMap.get("cur_page_num").toString());
		if(start+1 > maxPage){
			
		}else{
			start = start+1;
		}
		//当前页
		page.setPageNum(start);
		
		//返回结果赋值
		setResultMap(resultMap, pageMap, page);
	    
	    return resultMap;
	}
	
	/**
	 * 上一页
	 * 
	 * @param pageMap
	 * @return
	 */
	public Map doPrePage(Map pageMap){
		Map resultMap = new HashMap();
		PageBean page = new PageBean();
		//初始化分页参数
		if(!initPageBean(pageMap, resultMap, page)) return resultMap;
		//当前页
		int start = Integer.parseInt(pageMap.get("cur_page_num") == null?"0":pageMap.get("cur_page_num").toString());
		if(start-1 < 1){
			
		}else{
			start = start-1;
		}
		//当前页
		page.setPageNum(start);
		//返回结果赋值
		setResultMap(resultMap, pageMap, page);
	    
	    return resultMap;
	}
	
	/**
	 * 最后一页
	 * 
	 * @param pageMap
	 * @return
	 */
	public Map doLastPage(Map pageMap){
		Map resultMap = new HashMap();
		PageBean page = new PageBean();
		//初始化分页参数
		if(!initPageBean(pageMap, resultMap, page)) return resultMap;
		int maxPage = page.getMaxPage();
		//当前页
		page.setPageNum(maxPage);
	    //返回结果赋值
		setResultMap(resultMap, pageMap, page);
	    return resultMap;
	}
	
	/**
	 * 根据页面查询页面信息
	 * 
	 * @param pageMap
	 * @return
	 */
	public Map doGoToPage(Map pageMap){
		Map resultMap = new HashMap();
		PageBean page = new PageBean();
		//初始化分页参数
		if(!initPageBean(pageMap, resultMap, page)) return resultMap;
		int maxPage = page.getMaxPage();
		//最后页码
		String pageNum = pageMap.get("page_num") == null?"0":pageMap.get("page_num").toString();
		//验证传入的参数是否为数字
		boolean isNum = pageNum.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$");
		if(!isNum){
			resultMap.put("errorMsg", "页面输入的值不是数字");
			return resultMap;
		}
		int start = Integer.parseInt(pageNum);
		if(start < 1){
			start = 1;
		}else if(start > maxPage){
			start = maxPage;
		}
		//当前页
		page.setPageNum(start);
		//返回结果赋值
		setResultMap(resultMap, pageMap, page);
	    return resultMap;
	}
	
	/**
	 * 初始化分页参数
	 * 
	 * @param pageMap 页面传入的参数
	 * @param resultMap 返回结果
	 * @param page 分页bean
	 * @return boolean true:成功,false:失败
	 */
	private boolean initPageBean(Map pageMap,Map resultMap,PageBean page){
		//查询总记录数
		String pageMax = pageMap.get("page_max") == null ?"":pageMap.get("page_max").toString();
		String queryCondition = pageMap.get("query_condition") == null ?"":pageMap.get("query_condition").toString();
		if(StringUtil.isEmpty(pageMax)){
			resultMap.put("errorMsg", "没有设置变量--每页显示多少条");
			return false;
		}
		int maxResult = getMaxPage(queryCondition);
		page.setMaxResult(maxResult);
		page.setPageMax(Integer.parseInt(pageMax));
		page.setMaxPage();
		return true;
	}
	
	/**
	 * 返回结果赋值
	 * 
	 * @param resultMap 返回集合
	 * @param pageMap 页面传入的条件
	 * @param page page对象
	 * 
	 */
	private void setResultMap(Map resultMap,Map pageMap,PageBean page){
		//查询当前页的信息
		String condition = pageMap.get("query_condition") == null ?"":pageMap.get("query_condition").toString();
		int pageMax = page.getPageMax();
		int pageNum = page.getPageNum();
	    List list = findPageInfo((pageNum-1)*pageMax, pageMax,condition);
	    Map pageResultMap = new HashMap();
	    pageResultMap.put("pageNum", page.getPageNum());
	    pageResultMap.put("maxResult", page.getMaxResult());
	    pageResultMap.put("pageMax", page.getPageMax());
	    pageResultMap.put("maxPage", page.getMaxPage());
	    resultMap.put("page", pageResultMap);
	    resultMap.put("query_result", list);
	}
	
	/**
	 * 查询当前页的信息
	 * 
	 * @param offset 起始行号
	 * @param size 返回记录数
	 * @param condition 查询条件
	 * @return list
	 */
	public List findPageInfo(int offset,int size,String condition){
		return null;
	}

	/**
	 * 获取总记录数
	 * 
	 * @param queryCondition 查询条件
	 * @return int
	 */
	public int getMaxPage(String queryCondition) {
		int maxPage = 0;
		return maxPage;
	}
}



/**
 * 分页组建
 * 
 * @author zhchen
 */
public class PageBean {

	private int pageNum = 1; // 当前页
	
	private int maxResult; // 总记录数
	
	private int pageMax; // 每页显示数
	
	private int maxPage; // 总页数

	public int getPageMax() {
		return pageMax;
	}

	public void setPageMax(int pageMax) {
		this.pageMax = pageMax;
	}

	public int getPageNum() {
		return pageNum;
	}

	public void setPageNum(int pageNum) {
		this.pageNum = pageNum;
	}

	public int getMaxPage() {
		return maxPage;
	}

	public void setMaxPage() {
		this.maxPage = (maxResult % pageMax == 0 ? maxResult / pageMax
				: maxResult / pageMax + 1);
	}

	public int getMaxResult() {
		return maxResult;
	}

	public void setMaxResult(int maxResult) {
		this.maxResult = maxResult;
	}
}

猜你喜欢

转载自zhihchen.iteye.com/blog/1911564