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>

浙公网安备 33010602011771号