过滤器和拦截器区别以及执行顺序

article/2025/9/12 4:41:57
  1. 过滤器和拦截器区别
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    觉得这个总结的很好,所以用来借鉴借鉴
    摘抄于网络,侵删

  2. 过滤器和拦截器执行顺序
    在SpringBoot中编写测试代码

    • 自定义过滤器
    /*** @Author: xiaoshijiu* @Date: 2019/5/22* @Description: 自定义过滤器*/
    public class MyFilter extends HttpFilter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {System.out.println("Filter----before");  chain.doFilter(request,response);System.out.println("Filter----after");}
    }
    
    • 自定义拦截器
      (有关SpringMVC的拦截器知识原理,可以参照我之前的博客)
      SpringMVC拦截器详解
      SpringMVC拦截器执行顺序原理解释

      /*** @Author: xiaoshijiu* @Date: 2019/5/22* @Description: $value$*/
      public class MyInterception implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception {System.out.println("Interception----before");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {System.out.println("Interception----before2");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response,Object handler, Exception ex) throws Exception {System.out.println("Interception----after");}
      }
      
      • 配置拦截器和过滤器
      /*** @Author xiaoshijiu* @Description 自定义Mvc配置,实现全面接管SpringMvc的配置* @Date 2019/5/13*/
      @Configuration
      public class MyWebMvc implements WebMvcConfigurer {/*** 注册自定义的filter 就相当于在普通web工程中,在web.xml中注册的<filter></filter>*/@Beanpublic FilterRegistrationBean myFilter() {return new FilterRegistrationBean(new MyFilter());}@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 添加自定义的拦截器registry.addInterceptor(new MyInterception()).addPathPatterns("/hello");}
      }
      
      • 编写Controller,测试
      /*** @Author: xiaoshijiu* @Date: 2019/5/22* @Description: 测试Controller*/
      @RestController
      public class Mycontroller {@RequestMapping("hello")public String hello() {System.out.println("hello...来了");return "hello";}
      }
      
      • 打印结果
        在这里插入图片描述
        这里可以看到拦截器和过滤器的执行顺序,对照着上面他们的区别也是很好理解的
        总结一下,执行顺序
        在这里插入图片描述
        这里还有一个问题就是发送/hello请求filter被执行了两次,我们可以获取url来判别一下
        自定义过滤器添加代码
      		HttpServletRequest servletRequest = (HttpServletRequest) request;System.out.println(servletRequest.getRequestURI());
      

      可以看到SpringBoot项目会发送图标的请求(/favicon.ico)
      在这里插入图片描述
      最后在补充一下,request获取请求的一些方法的内容
      在这里插入图片描述


http://chatgpt.dhexx.cn/article/WqcHSOL6.shtml

相关文章

过滤器和拦截器总结

过滤器和拦截器在日常业务开发中不是经常用到&#xff0c;近来项目中偶尔遇到了&#xff0c;对过滤器和拦截器进行了一次系统学习&#xff0c;现总结如下。 一、过滤器Filter 1.1 什么是过滤器 过滤器是Servlet的高级特性之一&#xff0c;是实现Filter接口的Java类。其基本功能…

Java 过滤器与拦截器的区别

什么是过滤器&#xff08;Filter&#xff09; 过滤器&#xff0c;是在java web中将你传入的request、response提前过滤掉一些信息&#xff0c;或者提前设置一些参数。然后再传入Servlet或Struts2的 action进行业务逻辑处理。比如过滤掉非法url&#xff08;不是login.do的地址请…

Java拦截器和过滤器的区别

过滤器和拦截器的区别&#xff1a; ①拦截器是基于java的反射机制的&#xff0c;而过滤器是基于函数回调。   ②拦截器不依赖与servlet容器&#xff0c;过滤器依赖与servlet容器。   ③拦截器只能对action请求起作用&#xff0c;而过滤器则可以对几乎所有的请求起作用。  …

Java过滤器与拦截器的区别

Java过滤器与拦截器的区别 1. 过滤器与拦截器概述1.1 过滤器 Filter1.2 拦截器 interceptor 2. 过滤器与拦截器区别3. 过滤器与拦截器实现3.1 过滤器&#xff08;Filter&#xff09;3.2 拦截器 (Interceptor)3.3 拦截器WebMvc配置3.4 切片&#xff08;Aspect&#xff09; 4. 过…

C语言pow函数的调用

1.pow函数的含义&#xff1a;在math.h的头文件中是指a的b次方。 2.对于pow函数的直接应用&#xff1a; #include<stdio.h> #include<math.h> //***math头文件 int main() {double a2,b3;double result;resultpow(2,3); …

mysql pow函数怎么用_pow函数怎么用

PHP pow函数表示指数表达式。 pow函数怎么用&#xff1f; php pow()函数 语法 作用&#xff1a;pow()函数的作用是将一个数进行n次方计算后返回 语法&#xff1a;pow(X,Y); 参数&#xff1a; X表示要做处理的数字 Y表示指定n次方中的n数值 说明&#xff1a;返回X的Y次方幂&…

c语言的pow函数运用

在c语言当中我们要计算一个数的n次方时候&#xff0c;可以使用多种方法&#xff0c;但是也有一种比较简单的方法&#xff0c;便是调用一个函数pow函数。 pow函数在使用时候需要引用头文件#include<math.h>&#xff0c;接下来可以引用一个例子&#xff1a; 如果现在假设我…

C语言中的pow函数

在我们学习C语言时&#xff0c;在一些算法的问题上常常会遇到让我们求一个数的n次方&#xff0c;这时候为了方便我们可以使用C语言函数库给我们的pow函数&#xff0c;*因为这是从C语言函数库调用出来的所以我们在使用前需要引入头文件#include<math.h>。 比如当我们输入…

pow函数python_python pow函数怎么用

python中的pow函数的功能是计算x的y次幂。本篇文章将带大家一起了解一下&#xff0c;pow()函数在Python中的用法。感兴趣的朋友了解一下。 以下是 math 模块 pow() 方法的语法:import math math.pow( x, y ) 内置的 pow() 方法pow(x, y[, z]) 函数是计算x的y次方&#xff0c;如…

计算机里pow函数是什么,pow函数是什么?

pow函数&#xff1a; C/C中的数学函数&#xff1b; pow() 函数用来求 x 的 y 次幂(次方)&#xff0c;x、y及函数值都是double型 pow()用来计算以x 为底的 y 次方值&#xff0c;然后将结果返回。设返回值为 ret&#xff0c;则 ret xy。 可能导致错误的情况&#xff1a; 如果底数…

WebClient 连接池配置

背景 项目中调用第三方接口&#xff0c;第三方接口响应时间不稳定&#xff0c;并且并发越大响应时间越长&#xff0c;如果使用BIO模式可能会导致服务器连接占用过高&#xff0c;所以采用WebClient reactor模式来调用第三方接口。 网络IO模型 连接池相关配置 maxConnections…

WebClient用法小结

进来的项目中要实现能够在windows service中调用指定项目的链接页面。由于访问页面时候使用的是ie浏览器或其他浏览器&#xff0c;所以想起用webclient类。 如果只想从特定的URI请求文件&#xff0c;则使用WebClient&#xff0c;它是最简单的.NET类&#xff0c;它只用一两条命…

WebClient类的使用方法(C#---网络编程)

WebClient类的使用方法&#xff08;C#---网络编程&#xff09; 1、WebClient类 WebClient类提供向URI标识的任何本地、Intranet或Internet资源发送数据以及从这些资源接收数据的公共方法。 默认情况下&#xff0c;WebClient实例不能发送可选的HTTP报头。如果要发送可选报头&a…

WebClient 用法总结

一、WebClient概述 WebClient提供向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法&#xff0c; WebClient 类提供向 URI 标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法。 WebClient 类使用 WebRequest 类提供对资源…

C#-WebClient

using ( var wc new System.Net.WebClient() ) {var imagebytes wc.DownloadData( hag.ImagePath );using ( MemoryStream ms new MemoryStream( imagebytes ) ) {picImage.Image Image.FromStream( ms );} } C#中HttpWebRequest、WebClient、HttpClient的使用 HttpWebRe…

webclient学习1.webclient是什么?

1.webclient是什么&#xff1f; WebClient 软件包是 RT-Thread 自主研发的&#xff0c;基于 HTTP 协议的客户端的实现&#xff0c;它提供设备与 HTTP Server 的通讯的基本功能。 2.软件包功能特点 WebClient 软件包功能特点&#xff1a; 支持 IPV4/IPV6 地址 WebClient 软…

SpringBoot - 网络请求客户端WebClient使用详解

在 Spring 5 之前&#xff0c;如果我们想要调用其他系统提供的 HTTP 服务&#xff0c;通常可以使用 Spring 提供的 RestTemplate 来访问&#xff0c;不过由于 RestTemplate 是 Spring 3 中引入的同步阻塞式 HTTP 客户端&#xff0c;因此存在一定性能瓶颈。根据 Spring 官方文档…

【QString 函数学习篇】

【QString 函数学习篇】 【1】UI设计布局【2】QChar | setAlignment |【3】sprintf | asprintf | setNum | number |【4】toInt | toUpper [十进制->十六进制 | 十进制->二进制]【5】clear | append【6】二进制->十六进制 | 二进制->十进制【7】prepend【8】strimm…

Qt扫盲-QString使用总结

QString使用总结 一、概述二、初始化字符串1、极速版2、原理版 三、操作字符串1、极速版1. 增加2. 删除3. 修改4. 插入5. 转换 2、原理版 四、查询字符串五、字符串格式转换六、Null 字符串和 Empty 字符串的区别七、字符串参数格式化八、更高效的字符串构造九、最大大小和出现…

Qt之QString字符串类的详细介绍及功能函数示例用法

前序&#xff1a;为了加深对Qt各个类的认识和了解&#xff0c;决定以后再闲暇的时间对Qt类进行详细的阅读&#xff08;基于Qt cteater 的帮助文档&#xff09;&#xff0c;这样既可以提高自己的英文阅读能力&#xff0c;也可以对各个类有一个更加深入的认识和了解。 注&#xf…