概念
context-param:
就是一些需要初始化的配置,放入context-param中,
从而被监听器(这里特指org.springframework.web.context.ContextLoaderListener)监听,然后加载;
监听器(listener):
就是对项目起到监听的作用,它能感知到包括request(请求域),session(会话域)和applicaiton(应用程序)的初始化和属性的变化,
活动在整个request和response周期中;
Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。
下面将介绍几种常用的监听器
分类及介绍:
ServletContextListener:
用于监听WEB 应用启动和销毁的事件,监听器类需要实现javax.servlet.ServletContextListener 接口。
ServletContextAttributeListener:
用于监听WEB应用属性改变的事件,包括:增加属性、删除属性、修改属性, 监听器类需要实现javax.servlet.ServletContextAttributeListener接口。
HttpSessionListener:
用于监听Session对象的创建和销毁,监听器类需要实现javax.servlet.http.HttpSessionListener接口 或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。
HttpSessionActivationListener:
用于监听Session对象的钝化/活化事件,监听器类需要实现javax.servlet.http.HttpSessionListener接口 或者javax.servlet.http.HttpSessionActivationListener接口,或者两个都实现。(没用过)
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的内部,具体来说有三个地方:
控制层执行之前
控制层执行之后视图层渲染之前
视图层渲染之后servlet结束之前
HandlerInterceptor
其中preHandle、postHandle、afterComplication三个方法执行顺序:preHandle——handler——postHandle——view渲染——afterComplication
总结
context-param-->listener-->filter-->servlet-->interceptor(listener贯穿servlet)