⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pageparametermaker.java

📁 适合各种数据库的分页程序
💻 JAVA
字号:
package com.ztes.commons.dbo.pagination;

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

import javax.servlet.http.HttpServletRequest;

/**
 * 获取request传递的一些参数,从而构造分页所需的参数。
 * 当构造该实例时,程序自动获取当前页码、每页显示记录两个参数值,
 * 以及请求页面的URI,如果翻页链接需要传递参数,请使用{@link #putParameter(String, String)}}
 * 和{@link #putParameter(String, String[])}设置。
 * 
 * @author tiannet(曾次清)
 */
public class PageParameterMaker extends PageParameterSimple implements PageParameter {
	
	/**
	 * 请求页面的URI
	 */
	private String URI;
	
	/**
	 * 参数名称与值的对应关系。
	 */
	private Map parameterMap = new HashMap();
	
	
	/**
	 * 指定HttpServletRequest对象构造实例,
	 * 构造函数会根据HttpServletRequest获取当前页面的URI,页码、页尺寸等参数。
	 * @param request HttpServletRequest对象。
	 */
	public PageParameterMaker(HttpServletRequest request) {
		setRequest( request );
	}
	
	/**
	 * 获取request中传递的当前页码,前提是使用默认的参数名(即PageInfo.PNAME_CURRENT_PAGENO)。
	 * @param request 持有当前页码参数的HttpServletRequest对象。
	 * @return request中传递的当前页码,如果不存在则返回1。
	 */
	public static int getCurrentPageNo(HttpServletRequest request) {
		String no = request.getParameter(PageInfo.PNAME_CURRENT_PAGENO);
		if( no != null && !no.trim().equals("") ) {
			return Integer.parseInt(no.trim());
		} else {
			return 1;
		}
			
	}
	
	/**
	 * 获取request中传递的页尺寸,前提是使用默认的参数名(即PageInfo.PNAME_PAGESIZE)。
	 * @param request 持有页尺寸参数的HttpServletRequest对象。
	 * @return request中传递的页尺寸,如果不存在则返回默认值。
	 */
	public static int getPageSize(HttpServletRequest request) {
		String size = request.getParameter(PageInfo.PNAME_PAGESIZE);
		if( size != null && !size.trim().equals("") ) {
			return Integer.parseInt(size.trim());
		} else {
			return PageConfig.DEFAULT_PAGESIZE;
		}
			
	}
	

	/**
	 * 返回请求页面的URI。
	 * @return 请求页面的URI。
	 */
	public String getURI() {
		return URI;
	}

	/**
	 * 设置请求页面的URI
	 * @param uri 请求页面的URI.
	 */
	public void setURI(String uri) {
		URI = uri;
	}
	
	/**
	 * 设置一个url传递的参数名称与值的对应关系。
	 * @param name 参数名称。
	 * @param value 参数值。
	 */
	public void putParameter(String name, String value) {
		putParameter(name, new String[]{value});
	}
	
	/**
	 * 设置一个url传递的参数名称与值的对应关系。
	 * @param name 参数名称。
	 * @param value 参数值。
	 */
	@SuppressWarnings("unchecked")
	public void putParameter(String name, String[] value) {
		parameterMap.put(name, value);
	}
	
	/**
	 * 返回参数名与值的对应关系。
	 * @return 参数名与值的对应关系。
	 */
	public Map getParameterMap() {
		return parameterMap;
	}

	/**
	 * 设置参数名与值的对应关系
	 * @param parameterMap 参数名与值的对应关系.
	 */
	public void setParameterMap(Map parameterMap) {
		this.parameterMap = parameterMap;
	}
	
	/**
	 * 设置HttpServletRequest,同时获取请求页面URI及页码、页尺寸。
	 * @param request HttpServletRequest.
	 */
	private void setRequest(HttpServletRequest request) {
		setURI("");
		//setURI( request.getRequestURI() );
		String size = request.getParameter(PageInfo.PNAME_PAGESIZE);
		if( size != null && !size.trim().equals("") ) {
			setPageSize( Integer.parseInt(size) );
		}
		String no = request.getParameter(PageInfo.PNAME_CURRENT_PAGENO);
		if( no != null && !no.trim().equals("")) {
			setCurrentPageNo( Integer.parseInt(no) );
		}
	}

	/**
	 * 获取翻页地址,
	 * 它型如:index.jsp?id=1&curretPageNo={0}&pageSize={1}。
	 * 也可能是一个Javascript函数,它包含两个占位符,型如:javascript:goto({0},{1});
	 * 在点击翻页链接时,执行指定的脚本函数,并且两个占位符分别被当前页码和页尺寸大小替代。
	 * 
	 * @return 翻页链接地址。
	 */
	@SuppressWarnings("unchecked")
	public String getPageUrl() {
		String pageUrl = super.getPageUrl();
		//如果已设置了pageUrl,则直接返回。
		if( pageUrl != null ) {
			return pageUrl;
		}
		StringBuffer sb = new StringBuffer( getURI() );
		sb.append("?" + PageInfo.PNAME_CURRENT_PAGENO + "={0}");
		sb.append("&" + PageInfo.PNAME_PAGESIZE + "={1}");
		String[] keys = new String[parameterMap.keySet().size()];
		parameterMap.keySet().toArray(keys);
		for( int i = 0;i < keys.length;i ++ ) {
			String[] a = (String[])parameterMap.get(keys[i]);
			for( int j = 0;j < a.length;j ++ ) {
				sb.append("&" + keys[i] + "=" + a[j]);
			}
		}
		pageUrl = sb.toString();
		//在父类中设置地址,以便下次获取时不用重新构造
		super.setPageUrl(pageUrl);
		return pageUrl;
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -