Spring学习笔记(九):Spring拦截器和java过滤器的区别
来源:互联网 发布:seo与sem有和区别 编辑:程序博客网 时间:2024/06/10 16:40
1、如图:
2、多个拦截器的执行顺序,如下图:
3、web.xml中过滤器:
(1)过滤器也是java组件;
发生在用户请求之后,调用Servlet之前,所以Servlet对过滤器一无所知
(2)请求过滤器:(注:请求过滤器和响应过滤器都是实现了filter接口,没有所谓的requestFilter和responseFilter )
完成安全检查;
重新格式化请求首部或体;
建立请求日志
响应过滤器:
压缩响应流;
追加或修改响应流;
创建一个完全不同的响应;
(3)过滤器的生命周期:
init()
doFilter(ServletRequest req,ServletResponse res,FilterChain chain)
destroy()
(4)FilterChain是什么?
过滤器世界里,最酷的就要属FilterChain了。过滤器(更不用说servlet)并不知道请求所涉及的其他过滤器,但是必须有人知道过滤器执行的顺序才行,这就是FilterChain。它由DD中指定的filter元素驱动
(5)chain.doFilter()是干嘛的?
这个是为了明确接下来调用chain中的哪个过滤器(如果到了链尾,就调用servlet的service()方法),filter接口中的doFilter方法只是为了完成过滤。
(6)servlet-name和url-pattern会影响filterChain的顺序。
如下web.xml,
<filter-mapping> <filter-name>Filter1</filter-name> <url-pattern>/Test/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>Filter2</filter-name> <servlet-name>/Test/First.do</url-pattern> </filter-mapping> <filter-mapping> <filter-name>Filter3</filter-name> <url-pattern>/Test/Add/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>Filter4</filter-name> <servlet-name>/Test/Modify/Update.do</url-pattern> </filter-mapping> <filter-mapping> <filter-name>Filter5</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
对应的请求路径,调用顺序如下:
/Test/Second.do ————–1、5
/Test/First.do——————-1、5、2
/Test/Modify/Update.do——-1、5、4
/Demo.do———————–5
/Test/Add/A.do—————–1、3、5
- Spring学习笔记(九):Spring拦截器和java过滤器的区别
- 过滤器和spring拦截器的区别
- spring过滤器和拦截器的区别和联系
- spring过滤器和拦截器的区别和联系
- spring过滤器和拦截器的区别与联系
- Spring拦截器与过滤器的区别
- Spring Boot (九):过滤器、拦截器、监听器
- 浅谈:Filter(过滤器)与Interceptor(拦截器)和Spring AOP的区别?
- spring拦截器和spring过滤器
- java拦截器和过滤器的区别
- spring过滤器、监听器、拦截器直接的区别
- JAVA过滤器和拦截器的区别(个人理解)
- Servlet 过滤器(filter)和Spring 拦截器(Interceptor)区别
- spring 拦截器和过滤器的访问顺序
- Java Web学习笔记(九)spring
- Spring中拦截/和拦截/*的区别
- Java过滤器和springMvc拦截器的区别和联系
- Spring Boot学习之旅:(九)拦截器
- HDU 1711 Number Sequence(kmp)
- C++中int与char*、int与Byte、double与char*的相互装换
- 数据结构入门--笔记
- oracle用户密码过期的处理方法
- 读书笔记之TCP/IP1(2)
- Spring学习笔记(九):Spring拦截器和java过滤器的区别
- Servlet完全教程
- opengl 学习笔记(3) 2D 点、线、坐标、键盘
- Web第三周-Web前端利用Js实现简单计算器功能
- CSS选择器的浏览器支持
- Android中自动跳转到系统设置界面
- C语言中的#,##
- Android Handler Runnable Message Thread 简单用法
- VC打印机编程之两篇有用的文章获取打印机与打印作业的状态和设置打印机模式并预览打印