filter中文编码

JAVA中通过filter过滤器解决中文乱码问题

1。首先定义一个过滤器类MyFilter。实现Filter接口的 init(),doFilter(),destroy()方法。

           A。定义全局变量String encoding = null,程序的编码方式。

           B。定义 全局变量FilterConfig filterConfig = null。配置文件信息。

            以上是程序启动的时候调用init方法时候使用。

//初始化方法
public void init(FilterConfig filterConfig) throws ServletException {
   this.filterConfig = filterConfig;//将配置文件信息存放在全局变量 filterConfig 中。
   this.encoding = filterConfig.getInitParameter("encoding");//通过filterConfig 配置文件信息获取编码方式
}

//过滤处理方法
public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
   // TODO Auto-generated method stub
   if (encoding!=null){ // 判断配置文件中的编码方式是否为空。
    //对请求进行编码设置
    request.setCharacterEncoding(encoding); // 设置编码方式
   }
   //将处理权转交给下一个处理器
   chain.doFilter(request,response); // 处理器链
}

//销毁方法
public void destroy() {
   // TODO Auto-generated method stub
   this.encoding = null;//程序结束的时候将编码方式制定为null。
   this.filterConfig = null;//将配置文件信息从Tomcat 清空。
}

配置文件中的信息

<filter>
<filter-name>setchar</filter-name><!--   自己制定的名称   --!>
<filter-class>com.family.tools.MyFilter</filter-class><!-- 要进行处理的类的路径 --!>
<init-param>
   <param-name>encoding</param-name><!--   处理类中要获取的参数 --!>
   <param-value>UTF-8</param-value><!--   制定的编码方式   --!>
</init-param>
</filter>
<filter-mapping>
<filter-name>setchar</filter-name><!--   filter   中 filter-name 节点制定的名称 --!>
<url-pattern>/*</url-pattern><!--   程序运行过程中要进行处理的地方   --!>
</filter-mapping>

posted @ 2012-10-24 14:19  岂能无  阅读(141)  评论(0)    收藏  举报