Filter可以认为是Servlet的一种加强版,主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。
Filter的作用有:
- 拦截客户的HttpServletRequest, 修改其头和数据
- 拦截到达客户的HttpServletResponse,修改其头和数据
1 创建Filter类
创建Fileter类必须实现javax.servlet.Filter接口,在这个接口中有三个方法,init, destroy, doFilter
@WebFilter(filterName="log",urlPattern={"/*"})
public class LogFileter implements Filter
{
private FilterConfig config;
public void init(FilterConfig config)
{
this.config = config;
}
public void destroy()
{
this.config = null;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException
{
}
2 配置Filter
配置方法除了上面用@WebFilter注解来进行配置之外,还可以通过web.xml来配置
<filter>
<filter-name>log</filter-name>
<filter-class>kevin.LogFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在实际项目中很多Servlet中涉及到的权限控制、记录日志等代码是重复的,这样就可以放到Filter中进行。