springboot 过滤器、拦截器、消息转换器、切片执行顺序 及区别

摘要:
拦截器只能处理操作请求,而过滤器可以处理几乎所有的请求。拦截器可以访问操作上下文和值堆栈中的对象,但过滤器不能。在操作的生命周期中,拦截器可以被多次调用,而过滤器只能在容器初始化时被调用一次。

request 请求 -->
1:过滤器 doFilter
2:拦截器 preHandle
3:消息转换器 readInternal
4:AOP before
5:Controller
6:Response
7:AOP after
8:消息转换器 writeInternal
9:拦截器 postHandle

过滤器:
可以拿到原始的Http请求和响应的信息,只能获得其请求和响应携带的参数,但是却拿不到真正处理请求的控制器和方法的信息
拦截器: 可以拿到原始Http请求和响应的信息 也可拿到请求的方法的信息
切片 :可拿到请求的方法的值 ,拿不到原始的Http的请求和响应的对象)

拦截器与过滤器的区别 :
拦截器是基于java的反射机制的,而过滤器是基于函数回调。
拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

免责声明:文章转载自《springboot 过滤器、拦截器、消息转换器、切片执行顺序 及区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C++ 匿名namespace的作用以及与static的区别apex:iframe 调用其他visaulforce page下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

第18章-使用WebSocket和STOMP实现消息功能

Spring 4.0为WebSocket通信提供了支持,包括: 发送和接收消息的低层级API; 发送和接收消息的高级API; 用来发送消息的模板; 支持SockJS,用来解决浏览器端、服务器以及代理不支持WebSocket的问题。 1 使用Spring的低层级WebSocket API 按照其最简单的形式,WebSocket只是两个应用之间通信的通道。...

北洋大讲堂之“斯凯网络CEO宋涛我的创业之路”感想

最近听到的看到的关于创业的消息比较多,先后有两个朋友辞去了一家创业公司的工作开始专心做自己的事情,在微信上也在读关于创业的《失业的程序员》连载,正好今天又听了96级校友宋涛先生的精彩报告,写下来一些东西记录关于创业的一些思考。 尤其在IT行业,创业公司遍地开花,北京之类的大城市创业氛围也比较浓,这里的人们大多有技术、有想法,也有一定的人脉,都很想发挥自己更大...

UCOSII使用之信号量,邮箱

信号量在ucos-II中,为了实现任务之间的同步,用到的同步机制有:信号量,邮箱和消息队列。其中这里我主要说下对信号量的使用经验。信号量在创建时,      调用OSSemCreate(INT16U cnt)函数。cnt为信号量的初始值。对cnt赋予不同的值,所起到的作用不同。如果Semp = OSSemCreate(0), 该信号量表示等待一个事件或者多...

找到一个不错的消息提示组件 ymPrompt V4.0

找到一个不错的消息提示组件,分享给朋友们,本文转载于ymPrompt V4.0版本发布【2009-03-02更新】,本文是参考它的demo。非常感谢原作者: ymPrompt消息提示组件4.0版使用简介 更换皮肤:QQ Simple SimpleGray VISTA dmm-Green bluebar black  修改默认配置:拖动窗体的透明度: 遮...

涨姿势了解一下Kafka消费位移可好?

摘要:Kafka中的位移是个极其重要的概念,因为数据一致性、准确性是一个很重要的语义,我们都不希望消息重复消费或者丢失。而位移就是控制消费进度的大佬。本文就详细聊聊kafka消费位移的那些事,包括: 概念剖析 kafka的两种位移 关于位移(Offset),其实在kafka的世界里有两种位移: 分区位移:生产者向分区写入消息,每条消息在分区中的位置信息...

linux shell脚本编程笔记(五): 重定向

I/O重定向 简述: 默认情况下始终有3个"文件"处于打开状态, stdin (键盘), stdout (屏幕), and stderr (错误消息输出到屏幕上). 这3个文件和其他打开的文件都可以被重定向. 对于重定向简单的解释就是捕捉一个文件, 命令, 程序, 脚本, 或者甚至是脚本中的代码块的输出, 然后将这些输出作为输入发送到另一个文件, 命令,...