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注入,因为这样够灵活
过滤器的执行流程按照filter-mapping的顺序,其中filterChain是后续要执行的过滤器
Init和destory 是容器初始化/销毁时执行,仅一次。
过滤器的执行流程:
执行第一个过滤器的chain.doFilter()之前的代码——>第二个过滤器的chain.doFilter()之前的代码——>……——>第n个过滤器的chain.doFilter()之前的代码——>所请求servlet的service()方法中的代码——>所请求servlet的doGet()或doPost()方法中的代码——>第n个过滤器的chain.doFilter()之后的代码——>……——>第二个过滤器的chain.doFilter()之后的代码——>第一个过滤器的chain.doFilter()之后的代码。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/gg_gogoing/article/details/47087235