过滤器和拦截器区别以及执行顺序
过滤器和拦截器区别
觉得这个总结的很好,所以用来借鉴借鉴
摘抄于网络,侵删过滤器和拦截器执行顺序
在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获取请求的一些方法的内容
过滤器和拦截器区别以及执行顺序相关推荐
- Java过滤器与拦截器区别与执行先后关系
拦截器和过滤器的区别 过滤器和拦截器的区别: 首先关于文件目录要注意的地方: 把jsp文件放在WEB-INF目录下其实是: 为了保证系统的安全性,web应用的内容结构中,把所有的静态内容放在web-c ...
- 聊聊过滤器与拦截器区别
开发者(KaiFaX) 面向全栈工程师的开发者专注于前端.Java/Python/Go/PHP的技术社区 1. 过滤器(Filter) Servlet 中的过滤器 Filter 实现了 javax.s ...
- 关于springmvc拦截器 controll aop执行顺序
拦截器部分代码 control部分代码 aop部分代码 执行之后的结果 可以看出进入顺序是 1.拦截器preHandle- 2.control-aop- 3.拦截器postHandle- 4.拦截器a ...
- 一口气说出 过滤器 和 拦截器 6个区别,别再傻傻分不清了
周末有个小伙伴加我微信,向我请教了一个问题:老哥,「过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊?」 听到题目我的第一感觉就是:「简单」! 毕竟这两种工具开发中用到的频 ...
- SpringMVC中过滤器和拦截器的区别
文章目录 1.引言 2.共同点 3.区别 3.1.拦截器 3.2.过滤器 4.具体实现 4.1.拦截器 4.1.1.拦截实现方式 4.1.2.拦截实现 4.2.过滤器 4.2.1.过滤器实现方式 4. ...
- tomcat 拦截指定url_一口气说出 过滤器 和 拦截器 6个区别,别再傻傻分不清了
点击" 程序员内点事 "关注,选择" 设置星标 " 坚持学习,好文每日送达! 周末有个小伙伴加我微信,向我请教了一个问题:老哥,「过滤器 (Filter) 和 ...
- 过滤器 和 拦截器 6个区别,别再傻傻分不清了
周末有个小伙伴加我微信,向我请教了一个问题:老哥,过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊? 听到题目我的第一感觉就是:简单! 毕竟这两种工具开发中用到的频率都相当 ...
- spring 两次进入拦截器_过滤器和拦截器的 6 个区别,别再傻傻分不清了
点击上方 肉眼品世界,选择 设为星标 深度价值体系传递 作者 :程序员内点事 来源 :toutiao.com/i6834310440495874563 毕竟这两种工具开发中用到的频率都相当高,应用起来 ...
- SpringBoot实现过滤器、拦截器与切片
作者:七印miss juejin.im/post/5c6901206fb9a049af6dcdcf Q:使用过滤器.拦截器与切片实现每个请求耗时的统计,并比较三者的区别与联系 过滤器Filter 过滤 ...
- Spring Boot实战:过滤器、拦截器与切片
Spring Boot实战:过滤器.拦截器与切片 Q:使用过滤器.拦截器与切片实现每个请求耗时的统计,并比较三者的区别与联系 过滤器Filter 过滤器概念 Filter是J2E中来的,可以看做是Se ...
最新文章
- redis删除过期key的算法_面试官别再问我Redis内存满了该怎么办了
- python中的文件操作
- ApplicationContext容器的设计原理
- Qt学习笔记-基于QGraphicsScene的打地鼠游戏
- webpack5 模块联邦 single-spa基座微前端 systemjs
- cocos2d-x AssetsManager libcurl使用心得
- windows远程桌面神器
- C# 线程thread
- 使用ffmpeg下载m3u8流媒体
- csgo删除服务器地图在哪个文件夹,CSGO de_cache地图
- 刘宝瑞相声《珍珠翡翠白玉汤》台词
- 大数据——舆情监控系统
- 为火狐浏览器安装debug(小虫子)调试工具
- LibreCAD for windows 编译
- 服务器ghost备份后无法进入系统还原,使用Ghost备份/还原系统的速度很慢原因分析与解决...
- Bat调用/弹出文件或文件夹选择对话框
- 血与荣耀(第一章-激战)
- 物理机服务器装系统,物理机安装黑群晖DSM6.1.7系统
- 【GCN-RS】SOTA 对比学习:SimpleX: A Simple and Strong Baseline for Collaborative Filtering (CIKM‘21)
- 编译部署LANP环境