Inteceptor
时间: 2023-12-31 09:40:17 浏览: 26
拦截器(Interceptor)是在处理器执行前、执行后或渲染视图前拦截请求的组件。拦截器需要通过配置类进行具体的配置,定义在不同的情况下使用不同的拦截器。在配置类中,可以指定拦截哪些映射路径,并针对这些路径使用我们定义的哪些拦截器。\[1\]
拦截器的执行流程是在Handler业务逻辑执行之前拦截一次,在Handler逻辑执行完毕但未跳转页面之前拦截一次,在跳转页面之后拦截一次。\[2\]
拦截器与过滤器的区别在于:
1. 拦截器是基于Java的反射机制,而过滤器是基于函数回调。
2. 拦截器不依赖于Servlet容器,而过滤器依赖于Servlet容器。
3. 拦截器只能对Action请求起作用,而过滤器可以对几乎所有的请求起作用。
4. 拦截器可以访问Action上下文、值栈里的对象,而过滤器不能访问。
5. 在Action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
6. 拦截器可以获取IOC容器中的各个Bean,而过滤器不行。这点很重要,因为在拦截器里注入一个Service,可以调用业务逻辑。\[3\]
#### 引用[.reference_title]
- *1* [拦截器(Inteceptor)和过滤器(Filter)的使用](https://blog.csdn.net/weixin_44070630/article/details/110954916)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Spring MVC--拦截器(Inteceptor)使用](https://blog.csdn.net/qq_40977467/article/details/117279750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [拦截器(inteceptor)与过滤器(filter)的新认识](https://blog.csdn.net/weixin_41931278/article/details/118157178)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]