您的位置:首页 > 其它

Servlet过滤器

2016-04-24 15:28 393 查看
Filter可以改变一个request和修改一个response。Filter不是一个Servlet,它不能产生一个response,它能够在一个request到达Servlet之前预处理request,也可以在离开Servlet时处理response。

一个Filter必须实现javax.servlet.Filter接口并定义三个方法:
· public void init(FilterConfig config):Filter实例化后进行初始化的回调方法。
· public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain):处理过滤业务的方法。
· public void destory():Filter在释放时回调的方法。

package com.yyq.filter;
import javax.servlet.*;
import java.io.IOException;
/**
* Created by gao on 16-4-14.
*/
public class CharacterEncodingFilter implements Filter {
private FilterConfig filterConfig;
//Filter初始化时的回调方法
//FilterConfig接口实例中封装了这个Filter的初始化参数
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
//主要负责过滤工作
//FilterChain用于调用过滤器链中的下一个顾虑器
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//获取此Filter的初始化参数的值
String encoding = filterConfig.getInitParameter("encoding");
if (null != encoding && !"".equals(encoding)){
//设置请求数据的编码方式
servletRequest.setCharacterEncoding(encoding);
}
//把请求和响应对象传给过滤器链中的下一个要调用的过滤器或Servlet
filterChain.doFilter(servletRequest,servletResponse);
}
//此Filter被释放时的回调方法
@Override
public void destroy() {
//空
}
}


web.xml注册这个Filter实现类,并配置初始化参数

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<!--定义一个过滤器-->
<filter>
<!--过滤器的标识名-->
<filter-name>characterEncodingFilter</filter-name>
<!--过滤器实现类的全限定名-->
<filter-class>com.yyq.filter.CharacterEncodingFilter</filter-class>
<!--配置初始化参数-->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!--过滤器的映射配置-->
<filter-mapping>
<!--过滤器的标识名-->
<filter-name>characterEncodingFilter</filter-name>
<!--过滤器的URL匹配模式-->
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: