Servlet Life Cycle
Servlet Life Cycle
http://docs.oracle.com/javaee/5/tutorial/doc/bnafi.html
Servlet Filters and Event Listeners
http://docs.oracle.com/cd/B14099_19/web.1012/b14017/filters.htm
在web.xml 中出现的先后顺序
① listener
② filter
③ servlet
原因是:
监听器有六种监听,可以监听上下文属性变化,上下文初始化,request初始化(这些先于servlet),还可以监听request的session创建属性变化和销毁等
而过滤器就好比在servlet之前加基层过滤网

项目实验:
─src
└───main
├───java
│ └───cn
│ └───zno
│ │ TestServlet.java
│ │
│ └───listner
│ My1ServletContextListener.java
│ My2ServletContextAttributeListener.java
│ My3HttpSessionListener.java
│ My4HttpSessionAttributeListner.java
│ My5ServletRequestListner.java
│ My6ServletRequestAttributeListner.java
│
├───resources
└───webapp
│ index.jsp
│
└───WEB-INF
web.xml
// 添加一些上下文属性
18:09:55,430 INFO [stdout] (ServerService Thread Pool -- 59) 2.1 18:09:55,436 INFO [stdout] (ServerService Thread Pool -- 59) cn.zno.listner.My2ServletContextAttributeListener@355255d7 18:09:55,437 INFO [stdout] (ServerService Thread Pool -- 59) org.apache.jasper.Constants.CODE_SOURCE_ATTRIBUTE_NAME 18:09:55,438 INFO [stdout] (ServerService Thread Pool -- 59) org.apache.jasper.JSP_TAG_LIBRARIES 18:09:55,438 INFO [stdout] (ServerService Thread Pool -- 59) org.apache.tomcat.InstanceManager 18:09:55,438 INFO [stdout] (ServerService Thread Pool -- 59) javax.faces.validator.beanValidator.ValidatorFactory 18:09:55,439 INFO [stdout] (ServerService Thread Pool -- 59) org.apache.jasper.JSP_PROPERTY_GROUPS 18:09:55,439 INFO [stdout] (ServerService Thread Pool -- 59) org.jboss.as.jsf.FACES_ANNOTATIONS 18:09:55,439 INFO [stdout] (ServerService Thread Pool -- 59) io.undertow.websockets.jsr.WebSocketDeploymentInfo 18:09:55,439 INFO [stdout] (ServerService Thread Pool -- 59) org.apache.jasper.Constants.PERMISSION_COLLECTION_ATTRIBUTE_NAME 18:09:55,440 INFO [stdout] (ServerService Thread Pool -- 59) javax.websocket.server.ServerContainer 18:09:55,440 INFO [stdout] (ServerService Thread Pool -- 59) com.sun.faces.AnnotatedClasses 18:09:55,440 INFO [stdout] (ServerService Thread Pool -- 59) org.apache.jasper.SERVLET_VERSION
// 添加上下文属性
18:09:55,443 INFO [stdout] (ServerService Thread Pool -- 59) 2.1 18:09:55,443 INFO [stdout] (ServerService Thread Pool -- 59) cn.zno.listner.My2ServletContextAttributeListener@355255d7 18:09:55,443 INFO [stdout] (ServerService Thread Pool -- 59) javax.servlet.context.tempdir
// 初始化上下文
18:09:55,444 INFO [stdout] (ServerService Thread Pool -- 59) 1.1
// 添加上下文属性
18:09:55,485 INFO [stdout] (ServerService Thread Pool -- 59) 2.1 18:09:55,486 INFO [stdout] (ServerService Thread Pool -- 59) cn.zno.listner.My2ServletContextAttributeListener@355255d7 18:09:55,489 INFO [stdout] (ServerService Thread Pool -- 59) com.sun.faces.CONFIG_MANAGER_KEY
// 添加上下文属性
18:09:55,513 INFO [stdout] (ServerService Thread Pool -- 59) 2.1 18:09:55,513 INFO [stdout] (ServerService Thread Pool -- 59) cn.zno.listner.My2ServletContextAttributeListener@355255d7 18:09:55,513 INFO [stdout] (ServerService Thread Pool -- 59) com.sun.faces.InitFacesContext
// 添加上下文属性
18:09:55,542 INFO [stdout] (ServerService Thread Pool -- 59) 2.1 18:09:55,543 INFO [stdout] (ServerService Thread Pool -- 59) cn.zno.listner.My2ServletContextAttributeListener@355255d7 18:09:55,543 INFO [stdout] (ServerService Thread Pool -- 59) com.sun.faces.patternCache
// 添加上下文属性
18:09:55,546 INFO [stdout] (ServerService Thread Pool -- 59) 2.1 18:09:55,547 INFO [stdout] (ServerService Thread Pool -- 59) cn.zno.listner.My2ServletContextAttributeListener@355255d7 18:09:55,547 INFO [stdout] (ServerService Thread Pool -- 59) com.sun.faces.config.WebConfiguration
// 移除某个上下文属性
18:09:55,562 INFO [stdout] (ServerService Thread Pool -- 59) 2.2 18:09:55,562 INFO [stdout] (ServerService Thread Pool -- 59) 2.2
// 初始化 request 对象
18:10:17,349 INFO [stdout] (default task-2) 5.2
// 创建session 对象
18:10:21,922 INFO [stdout] (default task-2) 3.3
// 添加session 属性
18:10:21,923 INFO [stdout] (default task-2) 4.1
// 覆盖session 属性
18:10:21,924 INFO [stdout] (default task-2) 4.3
// 移除 session 属性
18:10:21,924 INFO [stdout] (default task-2) 4.2
// 添加 request 属性
18:10:21,925 INFO [stdout] (default task-2) 6.1
// 覆盖request 属性
18:10:21,925 INFO [stdout] (default task-2) 6.3
// 移除request 属性
18:10:21,926 INFO [stdout] (default task-2) 6.2
// 销毁request 对象
18:10:21,931 INFO [stdout] (default task-2) 5.1
// 销毁session(根据timeout)
18:10:32,429 INFO [stdout] (default task-3) 3.4
具体项目见:
zmvc-listeners
Servlet Life Cycle的更多相关文章
- Java Web之Servlet
Servlet参考文献: 1.http://www.cnblogs.com/luoxn28/p/5460073.html 2.http://www.cnblogs.com/xdp-gacl/p/376 ...
- 从servlet规范说起
servlet规范 1 servlet 3.1规范 1.1 What is servlet A servlet is a JavaTM technology-based Web component, ...
- Servlet 小知识
1.In servlet 3.0 we have new feature annotations to replace XML.也就是说应该尽量使用annotations Servlet is an ...
- Java Web之Servlet及Cookie/Session
Servlet参考文献: 1.http://www.cnblogs.com/luoxn28/p/5460073.html 2.http://www.cnblogs.com/xdp-gacl/p/376 ...
- java:Servlet(Create,LifeCycle,ServletWeb.xml文件的配置,交互式,Tomcat文件分析,单例安全模式)
1.Servlet: Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容.这个过程为: 客户端发送请求至服务器端: 服务器将请求信息发送至 Servlet: Servlet ...
- Session 机制和 Cookie 机制
Session 机制和 Cookie 机制 HTTP协议是无状态的, 而Cookie和Session都是在无状态的基础上希望实现有状态的效果, 两者是在客户端或者是服务端使用缓存等手段来实现状态的维护 ...
- Understanding and Using Servlet Filters
Overview of How Filters Work This section provides an overview of the following topics: How the Serv ...
- hibernate:There is a cycle in the hierarchy! 造成死循环解决办法
下面是报的异常:在网上搜了关于:There is a cycle in the hierarchy!,才知道原来是因为死循环造成的!解决了好久,没有成功,后台不得已请教老大,老大说是因为在使用JSON ...
- Servlet - Upload、Download、Async、动态注册
Servlet 标签 : Java与Web Upload-上传 随着3.0版本的发布,文件上传终于成为Servlet规范的一项内置特性,不再依赖于像Commons FileUpload之类组件,因此在 ...
随机推荐
- Python爬虫项目--爬取某宝男装信息
本次爬取用到的知识点有: 1. selenium 2. pymysql 3 pyquery 正文 1. 分析目标网站 1. 打开某宝首页, 输入"男装"后点击"搜索&q ...
- 一、MySQL的连接建立与权限
一.MySQL的连接建立与权限 写这些的目的一是记录下工作这几年所学,算是成长脚印吧.二是复习一遍,也给自己当笔记看,通篇观点都属于个人理解较多.读者观看的时候也需要自己判断下是否正确,另外,记下一段 ...
- u-boot之内核是怎么启动的
在u-boot之start_armboot函数分析已经分析过了整个程序框架,但只是说了下什么时候运行内核,并没有具体说明是怎么执行内核的.内核启动分以下几个步骤说明: 1.启动参数bootcmd=na ...
- a label can only be part of statement and a declaratioin is not a statement
参考资料: https://stackoverflow.com/questions/18496282/why-do-i-get-a-label-can-only-be-part-of-a-statem ...
- hook 9大类
HOOK技术主要分为两大类,一是内核层HOOK,一是用户层HOOK. 用户层HOOK也就是在ring3环境下hook kenerl32.dll.User3.dll.Gui32.dll.Advapi.d ...
- Partition Equal Subset Sum
Given a non-empty array containing only positive integers, find if the array can be partitioned into ...
- Nginx+Tomcat安装与配置(windows版)
相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了 ...
- NotificationMangerService处理显示通知
设置——>应用——>点击“已下载”列表中的任一APP,如图: 代码位置:Settings\src\com\android\settings\applications\InstalledA ...
- Git使用基础篇(zz)
Git使用基础篇 您的评价: 收藏该经验 Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体 ...
- Hexo之部署github
最近开始学NodeJs,准备也在github上弄个一个Hexo博客练练过程中遇到一些问题总结一下.希望对遇到同样问题的同学能有个帮助少走一些弯路. - 其实用windows或mac客户端直接去同步很顺 ...