码迷,mamicode.com
首页 > 编程语言 > 详细

java-web 过滤器监听器

时间:2015-07-27 19:05:27      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:web应用   servlet   

servlet规范
servlet/filter/listener/interceptor区别与联系
http://blog.csdn.net/sundenskyqq/article/details/8549932
http://hejiajunsh.iteye.com/blog/1776571
技术分享
application:上下文对象,是由容器创建和初始化的,它的范围是整个的web应用,而且整个web应用中只会有一个 application对象存在,当web服务器关闭时,就会将application对象销毁
session:是一种保存上下文信息的机制,它是针对每个会话的,它是放在服务器端,通过SessionId区分的,在浏览器和服务器结束后,都会将session销毁
request对象:是当客户端发送请求时,容器就会创建一个ServletRequest对象,来进行封装请求数据,同时会创建一个servletResponse对象来进行封装相应数据,当结束封装请求之后,就会销毁该对象
WEB监听器,就是监听这3个对象的创建,销毁,和它们的属性发生的变化
用途:统计在线人数、统计访问量、系统变量初始化、Spring

使用:
1. 创建 继承相应的接口
2. web.xml中注册
一个application、HttpSession、ServletRequest都可以有多个监听器
ServletContext 全局一个,使用context-Parm的全局参数。容器启动结束时使用。
HttpSession 多个,HttpSessionListener可以有多个。创建销毁时运行
Web.xml中设置session超时等属性
对监听域中的属性(Attribute之间传值,放在request域中,parameter是参数)增删监听
HttpSession 绑定就是setAttribute() 钝化活化是因为session太多了,内存不够用,序列化到文件。重载时自动加载。
1. 域对象
session/request/application
2.事件
创建/销毁/属性变更/servlet状态改变
3.顺序
监听器->过滤器->Servlet
PS:Webx、Struts都通过filter注入,因为这样够灵活

  1. 通过控制对chain.doFilter的方法的调用,来决定是否需要访问目标资源。
    比如,可以在用户权限验证等等。判断用户是否有访问某些资源的权限,有权限放行,没权限不执行chain.doFilter方法。
  2. 通过在调用chain.doFilter方法之前,做些处理来达到某些目的。
    比如,解决中文乱码的问题等等。可以在doFilter方法前,执行设置请求编码与响应的编码。甚至可以对request接口进行封装装饰来处理get请求方式的中文乱码问题(重写相应的request.getParameter方法)。
  3. 通过在调用chain.doFilter方法之后,做些处理来达到某些目的。
    比如对整个web网站进行压缩。在调用chain.doFilter方法之前用类A对response对象进行封装装饰,重写getOutputStream和重写getWriter方法。在类A内部中,将输出内容缓存进ByteArrayOutputStream流中,然后在chain.doFilter方法执行后,获取类A中ByteArrayOutputStream流缓存数据,用GZIPOutputStream流进行压缩下。

过滤器的执行流程按照filter-mapping的顺序,其中filterChain是后续要执行的过滤器
Init和destory 是容器初始化/销毁时执行,仅一次。
过滤器的执行流程:
执行第一个过滤器的chain.doFilter()之前的代码——>第二个过滤器的chain.doFilter()之前的代码——>……——>第n个过滤器的chain.doFilter()之前的代码——>所请求servlet的service()方法中的代码——>所请求servlet的doGet()或doPost()方法中的代码——>第n个过滤器的chain.doFilter()之后的代码——>……——>第二个过滤器的chain.doFilter()之后的代码——>第一个过滤器的chain.doFilter()之后的代码。

版权声明:本文为博主原创文章,未经博主允许不得转载。

java-web 过滤器监听器

标签:web应用   servlet   

原文地址:http://blog.csdn.net/gg_gogoing/article/details/47087235

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!