Filter过滤器,xml配置和@WebFilter注解说明

<!-- 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的常用属性
Filter过滤器,xml配置和@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.....");
    }
}

Filter过滤器,xml配置和@WebFilter注解说明
在urlPatterns 后,需要过滤访问的代码。
1、可以在filter中根据条件决定是否调用chain.doFilter(request, response)方法, 即是否让目标资源执行
2、在让目标资源执行之前,可以对request\response作预处理,再让目标资源执行
3、在目标资源执行之后,可以捕获目标资源的执行结果,从而实现一些特殊的功能
doFilter()方法是对进行拦截, chain.doFilter(req, resp);之前的代码是请求之前执行的代码,之后的代码是响应的时候执行的代码;init()方法在服务器打开的时候执行,并且只执行一次;destroy()在服务器关闭的时候执行,并且只执行一次。

上一篇:6.4、定制类


下一篇:CF607A Chain Reaction