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

📄 setlocalefilter.java

📁 Java Web开发详解课本源码(孙鑫)
💻 JAVA
字号:
package org.sunxin.lesson.jsp.ch21;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
import java.util.ResourceBundle;

public class SetLocaleFilter implements Filter
{
    private String resourceName = null;
    
    public void init(FilterConfig filterConfig) throws ServletException
    {
        //获取过滤器的初始化参数,resourceName参数用于指定资源包系列的基名。
        resourceName=filterConfig.getInitParameter("resourceName");
        if(null==resourceName)
        {
            throw new UnavailableException("no define resource");   
        }
    }
    
    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain)
                  throws IOException, ServletException
    {
        HttpServletRequest httpReq=(HttpServletRequest)request;
        
        //得到Accept-Language请求报头
        String clientLang=httpReq.getHeader("Accept-Language");
        Locale locale=null;
        ResourceBundle bundle=null;
        
        //判断是否是中文用户
        if(clientLang.indexOf("zh-cn")!=-1)
        {
            locale=new Locale("zh","CN");
            bundle=ResourceBundle.getBundle(resourceName,locale);
            response.setContentType("text/html;charset=GBK");
        }
        //在实际应用中,读者可以继续添加else if语句,判断其它的语言。
        //如果没有匹配的资源,则使用英文资源。
        else
        {
            locale=new Locale("en");
            bundle=ResourceBundle.getBundle(resourceName,locale);
            response.setContentType("text/html;charset=ISO-8859-1");
        }
        HttpSession session=httpReq.getSession();
        
        //将资源包对象设置为Session对象的属性。
        //在其它页面中,可以直接从Session对象中得到资源包。
        session.setAttribute("resource",bundle);
                
        chain.doFilter(request, response);
    }
   
    public void destroy()
    {
        resourceName=null;
    }
}

⌨️ 快捷键说明

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