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

📄 intramartconnectfilter.java

📁 intra_mart是日本NDD公司开发的著名企业应用解决方案中间件。集成了J2ee服务器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * IntramartConnectFilter.java
 *
 * Created on 2003/11/10, 18:37:08
 */

package jp.co.intra_mart.framework.base.service;

import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
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;

import jp.co.intra_mart.framework.base.session.SessionManager;
import jp.co.intra_mart.framework.base.session.SessionManagerException;
import jp.co.intra_mart.framework.base.session.SessionPropertyException;
import jp.co.intra_mart.framework.base.session.SessionPropertyHandler;
import jp.co.intra_mart.framework.util.IntramartConnectUtil;

/**
 * intra-mart偺儁乕僕儀乕僗偺夋柺偐傜im-J2EE Framework偺夋柺偵慗堏偡傞帪偵巊偆僼傿儖僞偱偡丅
 * intra-mart偐傜棃傞儕僋僄僗僩傪im-J2EE Framework偱埖偆宍幃偵曄姺偟傑偡丅
 * 偙偺僼傿儖僞偱曄姺偝傟偨儕僋僄僗僩偼{@link ServiceServlet}偱埖偊傞傛偆偵側傝傑偡丅
 * <br><br>
 * 偙偺僼傿儖僞偼埲壓偺弶婜壔僷儔儊乕僞傪愝掕偡傞偙偲偑偱偒傑偡丅
 * <table>
 * <tr>
 * <th>僷儔儊乕僞柤</th>
 * <th>僷儔儊乕僞偺抣</th>
 * </tr>
 * <tr>
 * <td><code>referrerFormat</code></td>
 * <td>僙僢僔儑儞偵搊榐偝傟傞intramart偺儁乕僕儀乕僗傊偺夋柺偵栠傞偨傔偺URL偺彂幃傪寛掕偟傑偡丅<br>
 * <code>short</code>乮戝暥帤偲彫暥帤偼嬫暿偟側偄乯丗URL偐傜僾儘僩僐儖丄儂僗僩柤丄億乕僩斣崋偑徣棯偝傟偨宍幃傪僙僢僔儑儞偵搊榐<br>
 * 偦傟埲奜丗僷儔儊乕僞<code>referrer</code>偺撪梕傪偦偺傑傑僙僢僔儑儞偵搊榐</td>
 * </tr>
 * <tr>
 * <td><code>securityExt</code></td>
 * <td>僙僉儏儕僥傿偺桳岠乛柍岠傪愝掕偡傞奼挘巕偱偡丅<br>
 * 偙偺僷儔儊乕僞偑愝掕偝傟傞偲僙僉儏儕僥傿偑桳岠偵側傝傑偡丅<br>
 * {@link ServiceServlet}偵懳偡傞URL儅僢僺儞僌偼*.<i>奼挘巕</i>偲偡傞昁梫偑偁傝傑偡丅<br>
 * 奼挘巕乮僪僢僩偼娷傑側偄乯</td>
 * </tr>
 * </table>
 *
 * @author INTRAMART
 * @since 4.2
 * @deprecated 偙偺婡擻偼攑巭偝傟傑偟偨丅
 */
public class IntramartConnectFilter implements Filter {

    /**
     * 儘僌僀儞儐乕僓ID偺儕僋僄僗僩僷儔儊乕僞柤
     */
    public static final String PARAM_LOGIN_USER_ID =
        IntramartConnectUtil.PARAM_LOGIN_USER_ID;

    /**
     * 儘僌僀儞僌儖乕僾ID偺儕僋僄僗僩僷儔儊乕僞柤
     */
    public static final String PARAM_LOGIN_GROUP_ID =
        IntramartConnectUtil.PARAM_LOGIN_GROUP_ID;

    /**
     * 儁乕僕堷悢偺儕僋僄僗僩僷儔儊乕僞柤
     */
    public static final String PARAM_ARGUMENT =
        IntramartConnectUtil.PARAM_ARGUMENT;

    /**
     * 嶲徠尦URL偺儕僋僄僗僩僷儔儊乕僞柤
     */
    public static final String PARAM_REFERER =
        IntramartConnectUtil.PARAM_REFERER;

    /**
     * 儁乕僕堷悢偺僨儕儈僞
     */
    public static final String PARAM_ARGUMENT_DELIMITER = ",";

    /**
     * 儁乕僕堷悢偺墘嶼巕
     */
    public static final String PARAM_ARGUMENT_OPERATOR = "=";

    /**
     * 僙僢僔儑儞偵搊榐偡傞intra-mart偺僒乕僽儗僢僩偺URL偺懏惈柤
     */
    public static final String INTRAMART_URL_NAME =
        IntramartConnectUtil.INTRAMART_URL_NAME;

    /**
     * URL巜掕僞僀僾偺僷儔儊乕僞柤
     *
     * @since 4.2.4
     */
    static final String PARAM_REFERER_FORMAT =
        IntramartConnectUtil.PARAM_REFERER_FORMAT;

    /**
     * 僙僉儏儕僥傿偺奼挘巕
     *
     * @since 4.3
     */
    public static final String PARAM_SECURITY_EXT = "securityExt";

    /**
     * intra-mart偺儊僯儏乕偐傜搉偝傟傞忣曬傪尦偵惗惉偝傟傞im-J2EE Framework偺儕僋僄僗僩偱偡丅
     */
    private class IntramartConnectRequest extends HttpServletRequestWrapper {

        /**
         * 僷儔儊乕僞
         */
        private Map parameters = null;

        /**
         * 傾僾儕働乕僔儑儞ID僷儔儊乕僞柤
         */
        private String applicationParamName = null;

        /**
         * 傾僾儕働乕僔儑儞ID
         */
        private String applicationID = null;

        /**
         * 僒乕價僗ID僷儔儊乕僞柤
         */
        private String serviceParamName = null;

        /**
         * 僒乕價僗ID
         */
        private String serviceID = null;

        /**
         * 僐儞僗僩儔僋僞
         *
         * @param request 儕僋僄僗僩
         * @param applicationParamName 傾僾儕働乕僔儑儞ID僷儔儊乕僞柤
         * @param applicationID 傾僾儕働乕僔儑儞ID
         * @param serviceParamName 僒乕價僗ID僷儔儊乕僞柤
         * @param serviceID 僒乕價僗ID
         */
        public IntramartConnectRequest(
            HttpServletRequest request,
            String applicationParamName,
            String applicationID,
            String serviceParamName,
            String serviceID) {

            super(request);
            this.parameters = new HashMap();
            this.applicationParamName = applicationParamName;
            this.applicationID = applicationID;
            this.serviceParamName = serviceParamName;
            this.serviceID = serviceID;
        }

        /**
         * @param name
         * @return
         */
        public String getParameter(String name) {
            // 傾僾儕働乕僔儑儞ID偺僠僃僢僋
            if (name != null
                && this.applicationParamName != null
                && name.equals(this.applicationParamName)) {

                return this.applicationID;
            }

            // 僒乕價僗ID偺僠僃僢僋
            if (name != null
                && this.serviceParamName != null
                && name.equals(this.serviceParamName)) {

                return this.serviceID;
            }

            return super.getParameter(name);
        }

        /**
         * @return
         */
        public Map getParameterMap() {
            Map parameterMap = super.getParameterMap();
            Map resultMap = new HashMap();

            Iterator parameterKeys = parameterMap.keySet().iterator();
            while (parameterKeys.hasNext()) {
                String parameterKey = (String)parameterKeys.next();
                String[] parameterValues =
                    (String[])parameterMap.get(parameterKey);
                if (this.applicationParamName != null
                    && parameterKey.equals(this.applicationParamName)) {

                    String[] values = null;
                    if (parameterValues == null) {
                        values = new String[1];
                        values[0] = this.applicationID;
                    } else {
                        values = new String[parameterValues.length + 1];
                        System.arraycopy(
                            parameterValues,
                            0,
                            values,
                            1,
                            parameterValues.length);
                        values[0] = this.applicationID;
                    }
                    resultMap.put(parameterKey, values);
                } else if (
                    this.serviceParamName != null
                        && parameterKey.equals(this.serviceParamName)) {

                    String[] values = null;
                    if (parameterValues == null) {
                        values = new String[1];
                        values[0] = this.applicationID;
                    } else {
                        values = new String[parameterValues.length + 1];
                        System.arraycopy(
                            parameterValues,
                            0,
                            values,
                            1,
                            parameterValues.length);
                        values[0] = this.serviceID;
                    }
                    resultMap.put(parameterKey, values);
                } else {
                    resultMap.put(parameterKey, parameterValues);
                }
            }
            return resultMap;
        }

        /**
         * @return
         */
        public Enumeration getParameterNames() {
            return new Vector(getParameterMap().keySet()).elements();
        }

        /**
         * @param name
         * @return
         */
        public String[] getParameterValues(String name) {
            return (String[])getParameterMap().get(name);
        }
    }

⌨️ 快捷键说明

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