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

📄 frameworkparametersettingfilter.java

📁 intra_mart是日本NDD公司开发的著名企业应用解决方案中间件。集成了J2ee服务器
💻 JAVA
字号:
package jp.co.intra_mart.framework.base.service;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;

/**
 * 埲慜偺僶乕僕儑儞偺僒乕價僗僼儗乕儉儚乕僋偑巊梡偟偰偄偨傾僾儕働乕僔儑儞ID媦傃僒乕價僗ID傪
 * 儕僋僄僗僩偺僷儔儊乕僞偵愝掕偟傑偡丅<BR>
 * 
 * 偙偺僼傿儖僞傪巊梡偡傞偙偲偵傛傝{@link javax.servlet.ServletRequest#getParameter(String)}偐傜
 * 傾僾儕働乕僔儑儞ID媦傃僒乕價僗ID傪庢摼偡傞偙偲偑偱偒傑偡偑丄偙偺曽朄偼惓偟偔偁傝傑偣傫丅<BR>
 * 惓偟偔偼埲壓偺儊僜僢僪傪巊梡偟偰偔偩偝偄丅<BR>
 * <BR>
 * {@link jp.co.intra_mart.framework.base.service.ServiceManager#getApplication(HttpServletRequest, HttpServletResponse)}<BR>
 * {@link jp.co.intra_mart.framework.base.service.ServiceManager#getService(HttpServletRequest, HttpServletResponse)}<BR>
 *
 * @author INTRAMART
 * @version 1.0
 * @since 5.0
 * @deprecated 偙偺僼傿儖僞偼壓埵屳姺偺偨傔偺僼傿儖僞偱偡丅彨棃攑巭偝傟傞壜擻惈偑偁傝傑偡丅
 */
public class FrameworkParameterSettingFilter implements Filter {

	private FilterConfig filterConfig;
	private ServiceManager serviceManager;
	private ServicePropertyHandler servicePropertyHandler;
	private String applicationParamName;
	private String serviceParamName;
	
	/**
     * 儕僋僄僗僩偺僷儔儊乕僞乕傪愝掕屻丄師偺張棟偵慗堏偟傑偡丅<BR>
     * 僷儔儊乕僞柤偼埲壓偺儊僜僢僪偐傜庢摼偟偨傕偺傪巊梡偟傑偡丅<BR>
     * {@link jp.co.intra_mart.framework.base.service.ServicePropertyHandler#getApplicationParamName()}<BR>
     * {@link jp.co.intra_mart.framework.base.service.ServicePropertyHandler#getServiceParamName()}<BR>
     *
     * @param servletRequest 儕僋僄僗僩
     * @param servletResponse 儗僗億儞僗
     * @param filterChain 僼傿儖僞偺僠僃乕儞
     * @throws IOException 僼傿儖僞張棟幚峴帪偵IOException偑敪惗
     * @throws ServletException 僼傿儖僞張棟幚峴帪偵ServletException偑敪惗
     */
	public void doFilter(
			ServletRequest servletRequest,
			ServletResponse servletResponse,
			FilterChain filterChain)
	throws ServletException, IOException {

        HttpServletRequest request = (HttpServletRequest)servletRequest;
        HttpServletResponse response = (HttpServletResponse)servletResponse;
        String application;
        String service;
        
    	try {
			application = serviceManager.getApplication(request, response);
			service = serviceManager.getService(request, response);
		} catch (ServicePropertyException e) {
			throw new ServletException(e.getMessage(), e);
		}

        // 儕僋僄僗僩偲偭偐偊偰師偺僼傿儖僞偵慗堏
		HttpServletRequestImpl requestImpl = new HttpServletRequestImpl(request, application, service);
        filterChain.doFilter(requestImpl, servletResponse);
	}

	/**
	 * 僼傿儖僞傪弶婜壔偟傑偡丅
	 * @param filterConfig 僼傿儖僞愝掕僆僽僕僃僋僩
	 * @throws ServletException 僼傿儖僞傪弶婜壔帪偵椺奜偑敪惗丅
	 */
	public void init(FilterConfig filterConfig) throws ServletException {
		try {
			serviceManager = ServiceManager.getServiceManager();
			servicePropertyHandler = serviceManager.getServicePropertyHandler();
			applicationParamName = servicePropertyHandler.getApplicationParamName();
			serviceParamName = servicePropertyHandler.getServiceParamName();
		} catch (ServiceManagerException e) {
			throw new ServletException(e.getMessage(), e);
		} catch (ServicePropertyException e) {
			throw new ServletException(e.getMessage(), e);
		}
		this.filterConfig = filterConfig; 
	}

	/**
	 * 僼傿儖僞傪攋婞偟傑偡丅
	 */
	public void destroy() {
		filterConfig = null;
		serviceManager = null;
		servicePropertyHandler = null;
		applicationParamName = null;
		serviceParamName = null;
	}
	
	private class HttpServletRequestImpl extends HttpServletRequestWrapper{

		String application;
		String service;
		
		public HttpServletRequestImpl(HttpServletRequest request, String application, String service) {
			super(request);
			this.application = application;
			this.service = service;
		}
		
		public String getParameter(String name) {
			if(name.equals(applicationParamName)) {
				if(super.getParameter(applicationParamName) == null) {
					return application;
				}
			} else if(name.equals(serviceParamName)) {
				if(super.getParameter(serviceParamName) == null) {
					return service;
				}
			}
			return super.getParameter(name);
		}

		public Map getParameterMap() {
			Map map = new HashMap(super.getParameterMap());
			if(map.get(applicationParamName) == null) {
				map.put(applicationParamName, application);
			}
			if(map.get(serviceParamName) == null) {
				map.put(serviceParamName, service);
			}			
			return map;
		}

		public Enumeration getParameterNames() {
			Vector vector = new Vector();
			Enumeration enum = super.getParameterNames();
			while(enum.hasMoreElements()) {
				vector.add(enum.nextElement());
			}
			vector.add(applicationParamName);
			vector.add(serviceParamName);
			return vector.elements();
		}

		public String[] getParameterValues(String name) {
			if (name.equals(applicationParamName) || name.equals(serviceParamName)) {
				ArrayList list = new ArrayList();
				if (super.getParameterValues(name) != null) {
					String[] params = super.getParameterValues(name);
					for(int i = 0; i < params.length; i ++) {
						list.add(params[i]);
					}
				}
				if (name.equals(applicationParamName)) {
					list.add(application);
				} else if(name.equals(serviceParamName)) {
					list.add(service);
				}
				return (String[])list.toArray(new String[list.size()]);
			} else {
				return super.getParameterValues(name);
			}
		}
	}
}

⌨️ 快捷键说明

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