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 ,