编写处理用户请求和响应的 servlet中request 和 response的编码方式的过滤器
新建EncodeFilter.java servlet 实现Filter接口
public class EncodeFilter implements Filter{
//实现接口中的方法
//定义变量 type 从配置文件中读取值
private String type ;
//初始化
public void init(FilterConfig arg0) throws ServletException {
//从web.xml中读取值
this.type =arg0.getInitParameter("type");
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
//将ServletRequest类型强制转换成HttpServletRequest
HttpServletRequest request=(HttpServletRequest)arg0;
//将ServletResponse类型强制转换成HttpServletResponse
HttpServletResponse response=(HttpServletResponse)arg1;
//设置请求编码
request.setCharacterEncoding( type);
//设置应答的html编码
response.setCharacterEncoding( "text/html;charset="+type );
//当请求的资源满足规则时容器就会调用doFilter()方法
arg2.doFilter(arg0, arg1);
}
public void destroy() {
}
}
在web.xml中配置过滤器
<!-- 设置过滤器的别名和在工程中的路径 -->
<filter>
<filter-name> encodeFilter</filter-name >
<filter-class> com.filter.servlet.EncodeFilter</filter-class >
<!-- 设置初始化参数 -->
<init-param>
<param-name> type</param-name >
<param-value> utf-8</param-value >
</init-param>
</filter>
<!-- 设置过滤器的映射 -->
<!-- 过滤链中的执行顺序与设定的filter-mapping先后顺序有关 -->
<filter-mapping >
<filter-name> encodeFilter</filter-name >
<!-- 即所有后缀为.do的 url请求都采用过滤器别名为encodeFilter过滤器 -->
<url-pattern> *.do</url-pattern >
<!-- 过滤所有资源
<url-pattern>/*</url-pattern>
-->
</filter-mapping >
测试运行,完成filter的基本配置和运行
过滤器的使用小案例
原文:http://www.cnblogs.com/baojianfu/p/5122605.html