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的更多相关文章

  1. Java Web之Servlet

    Servlet参考文献: 1.http://www.cnblogs.com/luoxn28/p/5460073.html 2.http://www.cnblogs.com/xdp-gacl/p/376 ...

  2. 从servlet规范说起

    servlet规范 1 servlet 3.1规范 1.1 What is servlet A servlet is a JavaTM technology-based Web component, ...

  3. Servlet 小知识

    1.In servlet 3.0 we have new feature annotations to replace XML.也就是说应该尽量使用annotations Servlet is an ...

  4. Java Web之Servlet及Cookie/Session

    Servlet参考文献: 1.http://www.cnblogs.com/luoxn28/p/5460073.html 2.http://www.cnblogs.com/xdp-gacl/p/376 ...

  5. java:Servlet(Create,LifeCycle,ServletWeb.xml文件的配置,交互式,Tomcat文件分析,单例安全模式)

    1.Servlet: Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容.这个过程为: 客户端发送请求至服务器端: 服务器将请求信息发送至 Servlet: Servlet ...

  6. Session 机制和 Cookie 机制

    Session 机制和 Cookie 机制 HTTP协议是无状态的, 而Cookie和Session都是在无状态的基础上希望实现有状态的效果, 两者是在客户端或者是服务端使用缓存等手段来实现状态的维护 ...

  7. Understanding and Using Servlet Filters

    Overview of How Filters Work This section provides an overview of the following topics: How the Serv ...

  8. hibernate:There is a cycle in the hierarchy! 造成死循环解决办法

    下面是报的异常:在网上搜了关于:There is a cycle in the hierarchy!,才知道原来是因为死循环造成的!解决了好久,没有成功,后台不得已请教老大,老大说是因为在使用JSON ...

  9. Servlet - Upload、Download、Async、动态注册

    Servlet 标签 : Java与Web Upload-上传 随着3.0版本的发布,文件上传终于成为Servlet规范的一项内置特性,不再依赖于像Commons FileUpload之类组件,因此在 ...

随机推荐

  1. Bootstrap(9) 巨幕页头缩略图和警告框组件

    一.巨幕组件巨幕组件主要是展示网站的关键性区域.//在固定的范围内,有圆角 <div class="container"> <div class="ju ...

  2. Java项目生成可执行jar包、exe文件以及在Windows下的安装文件

    1.如何通过eclipse将Java项目生成可执行jar包 首先把在eclipse下的java项目导出jar file 下一步 下一步 下一步 最后点击完成,便生成了可执行的jar文件.可以在刚刚选择 ...

  3. Excel中的常用功能

    Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理.统计分析和辅助决策操作,广泛地应用于管理.统计财经.金融等众多领域. Excel删除公式保留数据 1.简单举例一个简单的公 ...

  4. Linux驱动之LED驱动编写

    从上到下,一个软件系统可以分为:应用程序.操作系统(内核).驱动程序.结构图如下:我们需要做的就是写出open.read.write等驱动层的函数.一个LED驱动的步骤如下: 1.查看原理图,确定需要 ...

  5. BZOJ1935或洛谷2163 [SHOI2007]园丁的烦恼

    BZOJ原题链接 洛谷原题链接 很容易想到二维前缀和. 设\(S[i][j]\)表示矩阵\((0, 0)(i, j)\)内树木的棵数,则询问的矩形为\((x, y)(xx, yy)\)时,答案为\(S ...

  6. Luogu 1273 有线电视网 - 树形背包

    Description 树形背包, 遍历到一个节点, 枚举它的每个子节点要选择多少个用户进行转移. Code #include<cstring> #include<cstdio> ...

  7. SQL语句的三大类

    数据定义语言(DDL Data Defination Language):用于创建和定义数据库对象,并且将对这些对象的定义保存到数据库字典中,通过DDL语句可以创建数据库对象.修改数据库对象.删除数据 ...

  8. sqli-labs:1-4,基于报错的注入

    sqli1: 脚本 # -*- coding: utf-8 -*- """ Created on Sat Mar 23 09:37:14 2019 @author: ke ...

  9. MD5加密及Hash长度拓展攻击【通俗易懂】

    先放一个简单点的利用了Hash长度拓展攻击的题目 if($COOKIE["getmein"] === md5($secret . urldecode($username . $pa ...

  10. jquery Nestable 获取改变排序后的json数据 拖动排序

    <script type="text/javascript"> jQuery(function($){ $('.dd').nestable(); $('.dd-hand ...