java字符编码过滤器配置源码

2014-11-24 10:24:23 · 作者: · 浏览: 0
package com.common.utils;
import javax.servlet.*;
import java.io.IOException;

public class SetCharacterEncodingFilter implements Filter {
       protected String encoding = null;               //编码方式
       protected FilterConfig filterConfig = null;     //参数配置对象
       rotected boolean ignore = true;                 //是否采用改编码
	   
        //读取两个参数的值
	    public void init(FilterConfig filterConfig) throws ServletException {
 
              this.filterConfig = filterConfig;
              this.encoding = filterConfig.getInitParameter("encoding");
              String value = filterConfig.getInitParameter("ignore");
              if (value == null)
                     this.ignore = true;
              else if (value.equalsIgnoreCase("true"))
                     this.ignore = true;
              else if (value.equalsIgnoreCase("yes"))
                     this.ignore = true;
              else
                     this.ignore = false;
       }
	   
	   //过滤处理,如果ignore为true,则使用该指定的编码
	   public void doFilter(ServletRequest request, ServletResponse response,
                     FilterChain chain) throws IOException, ServletException {
 
              // 有条件地选择设置字符编码使用
              if (ignore || (request.getCharacterEncoding() == null)) {
                     String encoding = this.encoding;
                     if (encoding != null)
                            request.setCharacterEncoding(encoding);
              }
 
              chain.doFilter(request, response);
 
       }
	   
	    //销毁时置空参数对象
       public void destroy() {
              this.encoding = null;
              this.filterConfig = null;
       }
	   
	}
 
 web.xml配置:

    SetCharacterEncodingFilter
    com.web0248.filter.SetCharacterEncodingFilter
   
    
   
      encoding
      utf-8
    
   
    
    
      ignore
      true
    


    SetCharacterEncodingFilter
    action


    SetCharacterEncodingFilter
    *.jsp




补充说明:在web.xml文件中,所有filter元素必须出现在任意filter-mapping元素之前,filter-mapping元素又必须出现在所有servlet或servlet-mapping元素之前。

从前到后的顺序为:...→filter→filter-mapping→listener→servlet→servlet-mapping→...

}