javaWeb监听器、过滤器、拦截器

拦截器是在SpringMVC中配置的,如果从整个项目中看,一个servlet请求的执行过程就变成了这样:

context-param   -->   listener   -->    filter    -->   servlet   -->  interceptor(拦截器)

为什么拦截器是在servlet执行之后,因为拦截器本身就是在servlet内部的

 

  • 1)过滤器:
  • 依赖于servlet容器
  • 在实现上基于函数回调
  • 可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。

使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:

  1. 在过滤器中修改字符编码;
  2. 在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等。
  • 2)拦截器:
  • 依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。
  • 在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。

由于拦截器是基于web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。

但是缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理

  • 3)监听器:

web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。

主要作用是:

感知到包括request(请求域),session(会话域)和applicaiton(应用程序)的初始化和属性的变化;

监听器的用途 :

  1.通常使用Web监听器做以下的内容:

  2.统计在线人数,利用HttpSessionLisener

  3.加载初始化信息:利用ServletContextListener

  4.统计网站访问量

  5.实现访问监控

  • 拦截器与过滤器的区别:

1、拦截器是基于java的反射机制的,而过滤器是基于函数回调 

2、过滤器依赖于servlet容器,而拦截器不依赖servlet容器 

3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用 

4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能 

5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次, 执行顺序 :

过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。

个人认为过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);

过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数据发给对应的Action;

Action处理完成返回后,拦截器还可以做其他过程,再向上返回到过滤器的后续操作。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值