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

📄 localefilter.java

📁 intra_mart是日本NDD公司开发的著名企业应用解决方案中间件。集成了J2ee服务器
💻 JAVA
字号:
/*
 * LocaleFilter.java
 *
 * Created on 2003/08/26, 19:00
 */

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

import java.io.IOException;
import java.util.Locale;

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;

/**
 * 儕僋僄僗僩偺儘働乕儖傪愝掕偟傑偡丅
 * 儕僋僄僗僩偵懳偡傞儘働乕儖偺寛掕曽朄偼{@link ServiceManager#getLocale(HttpServletRequest, HttpServletResponse)}偲摨偠偱偡丅<BR><BR>
 * 偙偺帪偵庢摼偝傟偨儘働乕儖偼HttpSession偑懚嵼偡傟偽偦偺拞偵愝掕偝傟傑偡丅偙偺応崌偺懏惈柤偼{@link ServicePropertyHandler#getLocaleAttributeName()}偱庢摼偝傟傞傕偺偱偡丅
 *
 * @author INTRAMART
 * @since 4.2
 */
public class LocaleFilter 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 {

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

        // 儘働乕儖偺庢摼
        try {
            locale = this.manager.getLocale(request, response);
        } catch (ServicePropertyException e) {
            throw new ServletException(e.getMessage(), e);
        }

        // 儘働乕儖偺愝掕
        if (session != null) {
            try {
                session.setAttribute(
                    this.handler.getLocaleAttributeName(),
                    locale);
            } catch (ServicePropertyException e) {
                throw new ServletException(e.getMessage(), e);
            }
        }

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

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

⌨️ 快捷键说明

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