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处理完成返回后,拦截器还可以做其他过程,再向上返回到过滤器的后续操作。

 

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 10:52
点赞 评论 收藏
分享
11-24 00:11
已编辑
广东工业大学 算法工程师
避雷深圳  yidao,试用期 6 个月。好嘛,试用期还没结束,就直接告诉你尽快找下一家吧,我谢谢您嘞
牛客75408465号:笑死,直属领导和 hr 口径都没统一,各自说了一些离谱的被裁理由,你们能不能认真一点呀,哈哈哈哈哈😅😅😅
点赞 评论 收藏
分享
像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务