1.实现javax.servlet.Filter接口来创建对象
package com.shinecode.jfreechart.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* 字符编码过滤器
*
* 统一所有的web组件的字符编码
*
* @author Alax
*
* @version 1.0 $Date:2008-04-03 10:28
*
*/
public class EncodingFilter implements Filter {
// 过滤配置对象,有服务器加载的时候创建
private FilterConfig config = null;
// 字符编码,可以从web.xml中设置
private String encoding = null;
// 是否在控制台显示字符集
private boolean encodingShow = false;
/**
* 销毁服务变量
*/
public void destroy() {
this.encoding = null;
this.config = null;
}
/**
* 执行过滤
*/
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// 起始时间
long startTime = System.currentTimeMillis();
if (this.config != null) {
if (this.encoding != null) {
arg0.setCharacterEncoding(this.encoding);
arg1.setCharacterEncoding(this.encoding);
}
if (this.encodingShow) {
System.out.println(this.encoding);
}
}
// 结束时间
long stopTime = System.currentTimeMillis();
// 输出事件日志
config.getServletContext().log(
this.toString() + ": " + (stopTime - startTime)
+ " milliseconds");
// 传到下一个过滤器(过滤链)
arg2.doFilter(arg0, arg1);
}
/**
* 初始化信息
*/
public void init(FilterConfig arg0) throws ServletException {
this.config = arg0;
this.encoding = config.getInitParameter("encoding").toString();
this.encodingShow = Boolean.parseBoolean(config.getInitParameter(
"encodingShow").toString());
// web.xml中过滤器的名称
// System.out.println(arg0.getFilterName());
}
}
2.配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 配置过滤器 -->
<filter>
<filter-name>filter</filter-name>
<filter-class>
com.shinecode.jfreechart.filter.EncodingFilter
</filter-class>
<!-- 字符集 -->
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<!-- 是否在控制台显示字符集 -->
<init-param>
<param-name>encodingShow</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!--所有请求都要进行过滤 -->
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
3.启用服务器测试