03_过滤器的配置介绍(通过注解进行配置)

一、 拦截路径配置:配置方式有如下几种
    1. 具体资源路径: /index.jsp   只有访问index.jsp资源时,过滤器才会被执行
    2. 拦截目录: /user/*    访问/user下的所有资源时,过滤器都会被执行.这里的目录不是我们创建工程所指的目录,而是我们设置的虚拟资源路径的目录,如下所示:

03_过滤器的配置介绍(通过注解进行配置)_第1张图片
    3. 后缀名拦截: *.jsp        访问所有后缀名为jsp资源时,过滤器都会被执行
    4. 拦截所有资源:/*        访问所有资源时,过滤器都会被执行
二、 拦截方式配置:配置方式有如下两种:
    * 注解配置:
        * 设置dispatcherTypes属性,取值如下:
            1. REQUEST:默认值。浏览器直接请求资源
                @WebFilter(value="/index.jsp",dispatcherTypes = DispatcherType.REQUEST)//浏览器直接请求index.jsp资源时会执行过滤
            2. FORWARD:转发访问资源
                @WebFilter(value = "/index.jsp",dispatcherTypes = DispatcherType.FORWARD)//在发生转发请求时,如果转发请求的资源时index.jsp则执行过滤
            3. INCLUDE:包含访问资源
            4. ERROR:错误跳转资源
            5. ASYNC:异步访问资源
            注意:上述的取值可以同时存在多个,比如:
            @WebFilter(value = "/index.jsp",dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD})

            * web.xml配置
                * 设置标签即可
三、注意:
    1、如果拦截路径配置为"/*",而拦截方式设置了REQUEST和FORWARD,在执行请求资源中如果存在转发,则过滤在第一次请求和转发时都会被执行。

四、部分代码展示

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

//@WebFilter(value="/index.jsp",dispatcherTypes = DispatcherType.REQUEST)//浏览器直接请求index.jsp资源时会执行过滤
//@WebFilter(value = "/index.jsp",dispatcherTypes = DispatcherType.FORWARD)//在发生转发请求时,如果转发请求的资源时index.jsp则执行过滤
@WebFilter(value = "/index.jsp",dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD})//直接请求和转发时都执行过滤
public class FilterDemo05 implements Filter {

    public void init(FilterConfig config) throws ServletException {

    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        System.out.println("FilterDemo05...");
        chain.doFilter(req, resp);
    }

    public void destroy() {
    }


}

 

你可能感兴趣的:(10_Filter)