当前位置:编程学习 > JAVA >>

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

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配置:
<filter>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <filter-class>com.web0248.filter.SetCharacterEncodingFilter</filter-class>
   
    <init-param>
   <!-- 定义编码格式,我用的是utf-8 -->
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
   
    <init-param>
    <!-- ignore参数是在过滤器类定义的 -->
      <param-name>ignore</param-name>
      <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <servlet-name>action</servlet-name>
</filter-mapping>
<filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <servlet-name>*.jsp</servlet-name>
</filter-mapping>


 


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

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

 

}

 

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,