<!-- Filter -->
2 <filter>
3 <!-- filter名可以随便起,但要与下面的mapping中的filter-name保持一致 -->
4 <filter-name>SuiBian</filter-name>
5 <!-- 实现类所在目录 -->
6 <filter-class>com.filter.SuiBianFilter</filter-class>
7 </filter>
8
9 <!-- filter映射 -->
10 <filter-mapping>
11 <!-- 对应的filter名,和上边的filter名保持一致保持映射关系 -->
12 <filter-name>SuiBian</filter-name>
13 <!-- 要进行拦截过滤的目录 /*代表拦截全部。或者输入具体需要拦截的目录名-->
14 <url-pattern>/*</url-pattern>
15 <filter-mapping>
16
以上是在xml配置文件中进行配置。
@WebFilter的配置
在以后的高版本的web项目中,不需要再对xml进行配置了,只需要写一个普通的java类实现Filter接口,对该类进行@WebFilter说明就可以。下面说一下如何对@WebFilter配置。
@WebFilter的常用属性
示例:
package com.Filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(filterName = "MyFilter",urlPatterns = {"/FilterServlet"})
public class MyFilter implements javax.servlet.Filter {
public void init(FilterConfig config) throws ServletException {
System.out.println("过滤器的初始化init.....");
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("过滤器之前........");
chain.doFilter(req, resp);
System.out.println("过滤器之后........");
}
public void destroy() {
System.out.println("过滤器的销毁destroy.....");
}
}
在urlPatterns 后,需要过滤访问的代码。
1、可以在filter中根据条件决定是否调用chain.doFilter(request, response)方法, 即是否让目标资源执行
2、在让目标资源执行之前,可以对request\response作预处理,再让目标资源执行
3、在目标资源执行之后,可以捕获目标资源的执行结果,从而实现一些特殊的功能
doFilter()方法是对进行拦截, chain.doFilter(req, resp);之前的代码是请求之前执行的代码,之后的代码是响应的时候执行的代码;init()方法在服务器打开的时候执行,并且只执行一次;destroy()在服务器关闭的时候执行,并且只执行一次。