首页 > 其他分享 >过滤器(Filter)

过滤器(Filter)

时间:2024-09-15 16:25:00浏览次数:3  
标签:System Filter println 过滤器 拦截 public

Filter概述

  • 概念:Filter 过滤器,是JavaWeb 三大组件(Servlet、Filter、Listener)之一。
  • 过滤器可以把对资源的请求拦截拦截下来,从而实现一些特殊的功能。
  • 过滤器一般完成一些通用的操作,比如:登录校验、统一编码处理、敏感字符处理等。

Filter快速入门

  1. 定义Filter:定义一个类,实现 Filter 接口,并重写其所有方法。
  2. 配置Filter: Filter类上加 @WebFilter 注解,配置拦截资源的路径。引导类上加 @ServletcomponentScan 开启Servlet组件
@WebFilter(urlPatterns = "/*")//设置拦截请求路径,当前拦截所有请求
public class DemoFilter implements Filter {
    //初始化方法,Web服务器启动,创建Filter时调用,只调用一次
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("init方法运行了");
    }
    //拦截到请求时,调用该方法,可调用多次
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("doFilter方法运行了");
        filterChain.doFilter(servletRequest, servletResponse);//放行操作
    }
    //销毁方法,服务器关闭时调用,只调用一次
    public void destroy() {
        System.out.println("destroy方法运行了");
    }
}

@ServletComponentScan//开启Servlet组件
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

Filter详解

  • Filter执行流程

请求 -->放行前逻辑 -->放行 -->资源 -->放行后逻辑
在这里插入图片描述

  //拦截到请求时,调用该方法,可调用多次
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("doFilter方法运行了");

        System.out.println("放行前的操作");

        filterChain.doFilter(servletRequest, servletResponse);//放行操作

        System.out.println("放行后的操作");
    }
  • Filter拦截路径
    Filter 可以根据需求,配置不同的拦截资源路径

@WebFilter(urlPatterns = “/*”)访问所有资源,都会被拦截

拦截路径urlPatterns值含义
拦截具体路径/login只有访问 /ogin 路径时,才会被拦截
目录拦截/emps/*访问/emps下的所有资源,都会被拦截
拦截所有/*访问所有资源,都会被拦截
  • 过滤器链
    介绍:一个web应用中,可以配置多个过滤器,这多个过滤器就形成了一个过滤器链。
    顺序:注解配置的Filter,优先级是按照过滤器类名(字符串)的自然排序
    执行流程如图所示:
    在这里插入图片描述

注意:当有多个Filter时,会按照过滤器的类名(字符串)的顺序来执行的。
比如:AFilter过滤器比BFilter过滤器先执行

标签:System,Filter,println,过滤器,拦截,public
From: https://blog.csdn.net/qq_52848267/article/details/142284703

相关文章

  • 十三,Spring Boot 中注入 Servlet,Filter,Listener
    十三,SpringBoot中注入Servlet,Filter,Listener@目录十三,SpringBoot中注入Servlet,Filter,Listener1.基本介绍2.第一种方式:使用注解方式注入:Servlet,Filter,Listener2.1使用注解方式注入:Servlet2.2使用注解方式注入:Filter2.3使用注解方式注入:Listener3.第二种方式:使用Regis......
  • Vue中过滤器的使用
    下面是一个日期格式的过滤器用moment.js来做的一个日期过滤器:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><......
  • 布隆过滤器(Bloom Filter)原理+实战
    布隆过滤器的作用是:可用来判断值可能在集合中和绝对不在集合中介绍布隆过滤器(BloomFilter)是1970年由布隆提出的。它实际上是一个很长的二进制向量(位图)和一系列随机映射函数(hash函数)。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远......
  • 面试官:Vue中的过滤器了解吗?过滤器的应用场景有哪些?
    一、是什么过滤器(filter)是输送介质管道上不可缺少的一种装置大白话,就是把一些不必要的东西过滤掉过滤器实质不改变原始数据,只是对数据进行加工处理后返回过滤后的数据再进行调用处理,我们也可以理解其为一个纯函数Vue允许你自定义过滤器,可被用于一些常见的文本格式化p......
  • 如何使用Filter(过滤器二)
    目录一、过滤器链二、执行顺序三、示例说明一、过滤器链本片文章接如何使用Filter(过滤器一)-CSDN博客https://blog.csdn.net/u011529483/article/details/142059978?spm=1001.2014.3001.5502继续说说过滤器的执行顺序。过滤器和拦截器一样都是可以配置多个的,以链式的形......
  • Python中的`map()`函数和`filter()`函数及其应用场景
    在Python中,map()和filter()是两个内置的高阶函数,它们接受函数作为参数,并对序列(如列表、元组等)中的每个元素应用该函数。这两个函数虽然功能相似,但在使用目的和返回结果上有所不同。下面,我将分别详细解释map()和filter()函数的工作原理、应用场景,并探讨它们的异同点。1. map()......
  • Excel--FILTER函数
    FILTER函数=FILTER(查询区域,条件,查不到结果返回的值)FILTER函数是一个筛选函数,可根据指定条件筛选出一个或多少数据。单条件筛选:下面为只筛选一个条件性别为女多条件筛选:+连接两个筛选条件,相当于”或“,其中一个条件成立既可以被筛选出来*连接两个筛选条件,相当于”......
  • .net 使用IAsyncResultFilter或IResultFilter 进行restful统一风格在swagger ui中不显
    1.现实swaggerIOperationFilter 过滤器接口publicclassSwaggerOperationFilter:IOperationFilter{privatereadonlyISchemaGenerator_schemaGenerator;publicSwaggerOperationFilter(ISchemaGeneratorschemaGenerator){_schemaGenerator=......
  • 042.CI4框架CodeIgniter,控制器过滤器Filter配合Services的使用
    01、Config中的Services.php代码如下:<?phpnamespaceConfig;useApp\Libraries\Tx_Auth;useCodeIgniter\Config\BaseService;classServicesextendsBaseService{//用户权限类publicstaticfunctionuser_auth($getShared=true){echo......
  • 041.CI4框架CodeIgniter,控制器过滤器Filter的使用
    01、我们在Filters目录,创建一个MyFilter.php文件<?phpnamespaceApp\Filters;useCodeIgniter\Filters\FilterInterface;useCodeIgniter\HTTP\RequestInterface;useCodeIgniter\HTTP\ResponseInterface;classMyFilterimplementsFilterInterface{publicfu......