Java过滤器&&监听器
date
Oct 24, 2018
slug
Java过滤器&&监听器
status
Published
tags
Java
summary
type
Post
category
过滤器
过滤器是对web资源的请求拦截,完成特殊操作,尤其是对请求的预处理。
- 应用场景
- web资源权限访问控制
- 请求字符集编码处理(中文字符)
- 内容敏感字符词汇过滤
- 相应信息压缩处理
- 过滤器生命周期
- web应用程序启动时,web服务器创建filter的实例对象及初始化
- 当请求访问与过滤器关联的web资源时,过滤器拦截请求,完成指定功能
- Filter对象创建后会驻留在内存,在web应用移除或服务器停止时才销毁
- init->doFilter->destroy
- 过滤器实现步骤
- 编写Filter接口,实现doFilter方法
- 在web.xml文件中对filter类进行注册,并设置所拦截的资源
- 过滤器链
- 在一个web应用中,多个过滤器组合起来称之为一个过滤器链
- 过滤器的调用顺序取决于过滤器在web.xml
- 文件中的注册顺序(注册顺序决定的事过滤器预处理的调用顺序,响应后处理调用顺序是注册顺序的逆序 )
- filter-mapping子元素dispatcheer
- REQUEST(默认)
- INCLUDE 需要在jsp中使用<jsp:include page=”/xxx.jsp”/>
- FORWARD 使用forward转发
- ERROR 错误,需要定义error-page
监听器
可参照这里
- 按监听器对象分类:
- ServletContext context上下文监听
- HttpSession 回话监听
- ServletRequest 请求对象监听
- 按监听事件分类
- 域对象自身的创建和销毁事件监听器(以生命周期)
- ServletContext->ServletContextListener
- HttpSession->HttpSessionListener
- ServletRequest->ServletRequestListener
- 域对象中属性的创建、替换和消除事件监听器
- ServletContext->ServletContextAttributeListener
- HttpSession->HttpSessionAttributeListener
- ServletRequest->ServletRequestAttributeListener
- 绑定在session中的某个对象的状态事件监听器(HttpSessionBindingListener)
- valueBound(HttpSessionBindingEvent event) 当监听器对戏那个绑定至HTTP会话调用
- valueUnbound(HttpSessionBindingEvent event) 当监听器对象从HTTP会话内修改、移除或会话销毁时调用