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. SI和DI

    si和di是8086CPU中和bx功能相近的寄存器,si和di不能够分成两个8位寄存器来使用. 用si和di实现将字符串"welcome to masm!"复制到它后面的数据区中. ...

  2. (六)ROS话题---节点之间通信的方式

    1. 理解 ROS 话题: (Ctrl+Alt+T 打开一个新终端) 运行下面的命令: $ roscore (Ctrl+Alt+T 打开一个新终端) $ rosrun turtlesim turtle ...

  3. centos 命令学习

    关机&重启 shutdown -h 10          #计算机将于10分钟后关闭,且会显示在登录用户的当前屏幕中 shutdown -h now       #计算机会立刻关机 shut ...

  4. bootstrap collapse 无法收回

    $(function () { //修复collapse不能正常折叠的问题 $(".collapsed").click(function () { var itemHref = $ ...

  5. Charles基本使用

    Charles使用 查找电脑IP,菜单选项helpàLocal IP Addresses 手机连接代理 手机打开WiFi,把代理模式设置为手动,设置主机名为Charles所在机器的ip,端口号为Cha ...

  6. DirectX中坐标系问题

    自己属于笨类型,以前总是记不住directx坐标系是怎样的,今天在网上看到一篇文章,借鉴过来. 1. 明确DirectX是左手坐标系. 描述如下:1. 伸出左手,手面朝上,手背朝下,握住z轴,大拇指方 ...

  7. 严重性代码说明项目文件行错误C4996'strcpy' 和Unicode 字符集选择问题

    严重性代码说明项目文件 行错误 C4996 ‘strcpy’: This function or variable may be unsafe. Consider using strcpy_s ins ...

  8. 修改JEECG项目浏览器标题

    方法1: 在线修改,在平台自带的功能“系统管理”——“国际化语言” 中搜索 jeect.platform,修改显示文字重启生效. 方法2: 修改数据表t_s_muti_lang中id为"40 ...

  9. kubadm创建k8s v1.10集群

    kubadm创建k8s集群 1:服务器信息以及节点介绍 主机名 ip 备注 k8s-master 192.168.0.104 master etcd keepalived k8s-client1 19 ...

  10. Chat room

    /* Vasya has recently learned to type and log on to the Internet. He immediately entered a chat room ...