首页 > 其他分享 >Fitter-细节-过滤器拦截方式配置 Fitter-细节-过滤器链(多个过滤器)

Fitter-细节-过滤器拦截方式配置 Fitter-细节-过滤器链(多个过滤器)

时间:2023-01-30 15:45:40浏览次数:39  
标签:Fitter void Filter Override 细节 过滤器 import public

Fitter-细节-过滤器拦截方式配置   

拦截方式配置:资源被访问的方式

  注解配置:

  设置dispatcherTypes属性

    1. REQUEST:默认值。浏览器直接请求资源

    2. FORWARD:转发访问资源

    3. INCLUDE:包含访问资源

    4. ERROR:错误跳转资源

    5. ASYNC:异步访问资源

package com.example.day_19_fitterlistener.filter;

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

/**
 * 过滤器快速入门
 */

//浏览器直接请求index.jsp资源时,该过滤器会被执行
//@WebFilter(value="/index.jsp",dispatcherTypes = DispatcherType.REQUEST)

//只有转发index.jsp时,该过滤器才会被执行
//@WebFilter(value="/index.jsp",dispatcherTypes = DispatcherType.FORWARD)


//浏览器直接请求index.jsp资源或者转发index.jsp,该过滤器会被执行
@WebFilter(value="/index.jsp",dispatcherTypes ={ DispatcherType.FORWARD})
public class FilterDemo5 implements Filter {


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("FitterDemo5......");
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }
}

 

  web.xml配置

    设置<dispatcher></dispatcher>标签即可

    <filter>
        <filter-name>demo1</filter-name>
        <filter-class>com.example.day_19_fitterlistener.filter.FilterDemo1</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>demo1</filter-name>

        <!-- 拦截路径-->
        <url-pattern>/*</url-pattern>

       <!-- <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>-->
        <dispatcher>ASYNC</dispatcher>
    </filter-mapping>

 

Fitter-细节-过滤器链(多个过滤器)  

过滤器链(配置多个过滤器)

执行顺序:如果有两个过滤器:过滤器1和过滤器2

  1. 过滤器1

  2. 过滤器2

  3. 资源执行

  4. 过滤器2

  5. 过滤器1

创建FitterDemo6

package com.example.day_19_fitterlistener.filter;

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



@WebFilter(value="/*")
public class FilterDemo6 implements Filter {


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("FitterDemo6......");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("FitterDemo6回来了");
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }
}

 

创建FitterDemo7

package com.example.day_19_fitterlistener.filter;

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



@WebFilter(value="/*")
public class FilterDemo7 implements Filter {


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("FitterDemo7......");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("FitterDemo7回来了");
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }
}

 

运行代码,访问index.jsp

 

 

 

过滤器先后顺序问题:

1. 注解配置:按照类名的字符串比较规则比较,值小的先执行

  如: AFilter 和 BFilter,AFilter就先执行了。

2. web.xml配置: <filter-mapping> 谁定义在上边,谁先执行

标签:Fitter,void,Filter,Override,细节,过滤器,import,public
From: https://www.cnblogs.com/yuzong/p/17076170.html

相关文章

  • django 自定义模版过滤器
    虽然DTL给我们内置了许多好用的过滤器。但是有些时候还是不能满足我们的需求。因此Django给我们提供了一个接口,可以让我们自定义过滤器,实现自己的需求。模版过滤器必须要......
  • django 模版常用过滤器
    模版常用过滤器在模版中,有时候需要对一些数据进行处理以后才能使用。一般在Python中我们是通过函数的形式来完成的。而在模版中,则是通过过滤器来实现的。过滤器使用的是|......
  • Fitter-细节-过滤器拦截路径配置
    Fitter-细节-过滤器拦截路径配置1.具体资源路径:/index.jsp只有访问index.jsp资源时,过滤器才会被执行2.拦截目录:/user/*访问/user下的所有资源时,过滤器都会被执行3......
  • Fitter-细节-web.xml配置方式 Fitter-细节-执行流程&生命周期
    Fitter-细节-web.xml配置方式咱们先把之前写的那个FitterDemo1里面的那个WebFitter注解,注释掉才可以写web.xml<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns......
  • 过滤器拦截路径配置以及过滤器拦截方式配置和过滤器链
    过滤器拦截路径配置1.具体资源路径:/index.jsp只有访问index.jsp资源时,过滤器才会被执行2.拦截目录:/user/*访问/user下的所有资源时,过滤器都会被执行3.后......
  • 过滤器
    目录原生注解boot方式原生注解1:添加注解,实现接口@WebFilter(urlPatterns="/*")publicclassTIFAuthenticationFilterimplementsFilter{}2:启动类上加注解@Serv......
  • Filter细节web.xml配置方式以及执行流程&生命周期
    Filter细节web.xml配置方式<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/200......
  • 布隆过滤器(BloomFilter)
    避免缓存击穿的利器之BloomFilterBloomFilter概念布隆过滤器(英语:BloomFilter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射......
  • vue 3.x基础入门:vue 的指令与过滤器
    前置基础知识:​​Vue3.0入门:基本使用以及vue的调试工具​​文章目录​​一、vue的指令与过滤器​​​​1.1指令的概念​​​​1.2内容渲染指令​​​​v-text​​​​{{}......
  • 过滤器
    过滤器由Servlet提供,拦截器是springmvc提供功能通过配置过滤器,来实现未登录的用户访问后台页面的时候直接跳转到登录页面代码范例@WebFilter(filterName="loginCh......