java web三⼤器:监听器、过滤器、拦截器

java web三⼤器:监听器、过滤器、拦截器(spring框架)
spring、springMVC与springBoot的关系详见:
⼀、启动顺序
监听器--->过滤器--->拦截器
案例理解:接到上级命令,要求对电话进去监听,过滤出恐怖分⼦,然后,拦截他们的恐怖袭击⾏动。
配置位置:
监听器、过滤器⼀般配置在web.xml中,拦截器⼀般配置在springmvc.xml配置⽂件中
⼆、概念
监听器:
Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener
接⼝的服务器端程序,它也是随web应⽤的启动⽽启动,只初始化⼀次,随web应⽤的停⽌⽽销毁。
主要作⽤是:做⼀些初始化的内容添加⼯作、设置⼀些基本的内容、⽐如⼀些参数或者是⼀些固定的对象等等
Filter过滤器:
过滤器拦截web访问url地址。严格意义上讲,filter只是适⽤于web中,依赖于Servlet容器,利⽤Java的回调机制进⾏实现。
Filter过滤器:和框架⽆关,可以控制最初的http请求,但是更细⼀点的类和⽅法控制不了。
过滤器可以拦截到⽅法的请求和响应(ServletRequest request, ServletResponse response),并对请求响应做出像响应的过滤操作,
⽐如设置字符编码,鉴权操作等
⽐如:(不是login.do的地址请求,如果⽤户没有登陆都过滤掉),或者在传⼊servlet或者struts的action前统⼀设置字符集,或者去除掉⼀些
⾮法字符。主要为了减轻服务器负载,减少压⼒。
Interceptor拦截器:
拦截器拦截以 .action结尾的url,拦截Action的访问。 Interfactor是基于Java的反射机制(APO思想)进⾏实现,不依赖Servlet容器。
拦截器可以在⽅法执⾏之前(preHandle)和⽅法执⾏之后(afterCompletion)进⾏操作,回调操作(postHandle),可以获取执⾏的⽅法的名
称,请求(HttpServletRequest)
Interceptor:可以控制请求的控制器和⽅法,但控制不了请求⽅法⾥的参数(只能获取参数的名称,不能获取到参数的值)
(⽤于处理页⾯提交的请求响应并进⾏处理,例如做国际化,做主题更换,过滤等)。
过滤器与拦截器的联系与区别:
拦截器是基于java的反射机制,使⽤代理模式,⽽过滤器是基于函数回调。
拦截器不依赖servlet容器,过滤器依赖于servlet容器。
拦截器只能对action起作⽤,⽽过滤器可以对⼏乎所有的请求起作⽤(可以保护资源)。
拦截器可以访问action上下⽂,堆栈⾥⾯的对象,⽽过滤器不可以。
执⾏顺序:过滤前-拦截前-Action处理-拦截后-过滤后。

posted on 2022-04-27 16:45  HHHuskie  阅读(135)  评论(0编辑  收藏  举报

导航