JavaWeb中的监听器、过滤器、拦截器、适配器简述

原创
2019/02/27 18:37
阅读数 384

概念


context-param:

就是一些需要初始化的配置,放入context-param中,
从而被监听器(这里特指org.springframework.web.context.ContextLoaderListener)监听,然后加载;

监听器(listener):

就是对项目起到监听的作用,它能感知到包括request(请求域),session(会话域)和applicaiton(应用程序)的初始化和属性的变化,
活动在整个request和response周期中;

Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。
下面将介绍几种常用的监听器
  • 分类及介绍:
    1. ServletContextListener:
      用于监听WEB 应用启动和销毁的事件,监听器类需要实现javax.servlet.ServletContextListener 接口。
    2. ServletContextAttributeListener:
      用于监听WEB应用属性改变的事件,包括:增加属性、删除属性、修改属性, 监听器类需要实现javax.servlet.ServletContextAttributeListener接口。
    3. HttpSessionListener:
      用于监听Session对象的创建和销毁,监听器类需要实现javax.servlet.http.HttpSessionListener接口 或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。
    4. HttpSessionActivationListener:
      用于监听Session对象的钝化/活化事件,监听器类需要实现javax.servlet.http.HttpSessionListener接口 或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。(没用过)
    5. HttpSessionAttributeListener:
      用于监听Session对象属性的改变事件,监听器类需要实现javax.servlet.http.HttpSessionAttributeListener接口。 (没用过)

过滤器(filter):

Servlet过滤器是在java servlet规范2.3中定义的,他能够对servlet容器的请求和响应对象进行检查和修改。

过滤器是JavaEE标准,采用函数回调的方式进行。

Servlet过滤器本身并不产生请求和响应对象,他只能提供过滤作用,servlet过滤能够在servlet被调用之前检查request对象,
修改request的header和request内容,在调用后检查response对象,修改response的头和内容。

Servlet过滤负责过滤的web组件可以是servlet,jsp或html文件。
就是对请求起到过滤的作用,作用在servlet之前,对请求进行过滤;
  • 特点:
    • 过滤器可以检查和修改request和response对象
    • 过滤器可以被指定url,当访问到该url时才会触发过滤
    • 过滤器可以有很多个,串联使用,形成过滤器链。

servlet:

就是对request和response进行处理的容器,它在filter之后执行,servlet其中的一部分就是controller层,
还包括渲染视图层和进入controller之前系统的一些处理部分

拦截器(interceptor):

就是对请求和响应进行拦截,它作用在servlet的内部,具体来说有三个地方:
  1. 控制层执行之前
  2. 控制层执行之后视图层渲染之前
  3. 视图层渲染之后servlet结束之前

HandlerInterceptor

其中preHandle、postHandle、afterComplication三个方法执行顺序:preHandle——handler——postHandle——view渲染——afterComplication

总结


context-param-->listener-->filter-->servlet-->interceptor(listener贯穿servlet)

展开阅读全文
打赏
0
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部