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

📄 encodingfilter.java

📁 intra_mart是日本NDD公司开发的著名企业应用解决方案中间件。集成了J2ee服务器
💻 JAVA
字号:
/*
 * EncodingFilter.java
 *
 * Created on 2001/12/17, 13:59
 */

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

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;

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.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 儕僋僄僗僩偺僄儞僐乕僪傪愝掕偟傑偡丅
 * 儕僋僄僗僩偵懳偡傞僄儞僐乕僪偼
 * <OL>
 * <LI>{@link ServicePropertyHandler#getClientEncoding()}偱庢摼偝傟傞傕偺
 * <LI>{@link ServiceManager#getLocale(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)}
 * </OL>
 * 偺弴埵偱寛掕偝傟傑偡丅<BR><BR>
 * 偙偺帪偵庢摼偝傟偨僄儞僐乕僪偼{@link javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String)}偵愝掕偝傟丄
 * 偝傜偵{@link javax.servlet.http.HttpSession}偑懚嵼偡傟偽偦偺拞偵傕愝掕偝傟傑偡丅偙偺応崌偺懏惈柤偼{@link ServicePropertyHandler#getEncodingAttributeName()}偱庢摼偝傟傞傕偺偱偡丅
 *
 * @author INTRAMART
 * @version 1.0
 */
public class EncodingFilter implements Filter {

    /**
     * Filter Config
     */
    private FilterConfig filterConfig;

    /**
     * 僒乕價僗儅僱乕僕儍
     */
    private ServiceManager manager;

    /**
     * 僒乕價僗僾儘僷僥傿僴儞僪儔
     */
    private ServicePropertyHandler handler;

    /**
     * 僄儞僐乕僨傿儞僌梡偺僼傿儖僞傪弶婜壔偟傑偡丅
     *
     * @param filterConfig FilterConfig
     * @throws ServletException 僼傿儖僞撪偱椺奜偑敪惗
     */
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;

        // 僒乕價僗儅僱乕僕儍偺庢摼
        try {
            this.manager = ServiceManager.getServiceManager();
        } catch (ServiceManagerException e) {
            throw new ServletException(e.getMessage(), e);
        }

        // 僒乕價僗僾儘僷僥傿僴儞僪儔偺庢摼
        this.handler = this.manager.getServicePropertyHandler();
    }

    /**
     * 儕僋僄僗僩偺僄儞僐乕僪傪愝掕偟傑偡丅
     *
     * @param servletRequest 儕僋僄僗僩
     * @param servletResponse 儗僗億儞僗
     * @param filterChain 僼傿儖僞
     * @throws IOException 僼傿儖僞張棟幚峴帪偵IOException偑敪惗
     * @throws ServletException 僼傿儖僞張棟幚峴帪偵ServletException偑敪惗
     */
    public void doFilter(
        ServletRequest servletRequest,
        ServletResponse servletResponse,
        FilterChain filterChain)
        throws IOException, ServletException {

        String encoding = null;
        HttpServletRequest request = (HttpServletRequest)servletRequest;
        HttpServletResponse response = (HttpServletResponse)servletResponse;
        HttpSession session = request.getSession(false);

        // 僄儞僐乕僨傿儞僌傪庢摼
        try {
            encoding = this.manager.getEncoding(request, response);
        } catch (ServicePropertyException e) {
            throw new ServletException(e.getMessage(), e);
        }

        // 僙僢僔儑儞偵僄儞僐乕僨傿儞僌傪搊榐
        if (session != null) {
            try {
                session.setAttribute(
                    this.handler.getEncodingAttributeName(),
                    encoding);
            } catch (ServicePropertyException e) {
                throw new ServletException(e.getMessage(), e);
            }
        }

        // 儕僋僄僗僩偵僋儔僀傾儞僩僄儞僐乕僨傿儞僌傪愝掕
        if(Charset.isSupported(encoding)) {
            try {
                servletRequest.setCharacterEncoding(encoding);
            } catch (UnsupportedEncodingException e) {
                throw new ServletException(e.getMessage(), e);
            }
        }

        // 師偺僼傿儖僞偵慗堏
        filterChain.doFilter(servletRequest, servletResponse);
    }

    /**
     * 僼傿儖僞傪攋婞偟傑偡丅
     */
    public void destroy() {
        this.handler = null;
        this.filterConfig = null;
    }
}

⌨️ 快捷键说明

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