利用 ServletRequestListener、HttpSessionListener 以及 ServletContextListener 可以把request,session,以及Application的生命周期进一步的做一了解

> request:是一个请求,当一个响应返回时,即被销毁.当发送一个请求时被创建.注意:请求转发的过程是 一个 request 对象。

注:在页面上放的 属性 ,在servlet中时获取不到的,因为页面响应后request已经销毁了。

注:重定向是两个请求。

> session : 当第一次访问WEB 应用的一个 JSP 或 Servlet 时,且该 JSP 或 Servlet 中 还需要创建一个 session 对象。

  session 销毁:session 过期,直接调用 session的 invilidate 方法,当前WEB 应用被卸载(session 可以被持久化)

  *关闭浏览器,并不意味着session 被销毁,还可以通过 sessionid找到服务器中的 session 对象

> application : 贯穿于当前的 WEB 应用的生命周期。当前 WEB 应用被加载时 创建 application 对象,当前 WEB 应用被

  卸载时销毁 application 对象.

ServletContextListener

1). what: 监听 ServletContext 对象被创建或销毁的 Servlet 监听器

2). how:

  > 创建一个实现了 ServletContextListener 的类,并且实现其中的两个方法

  public class HelloServletContextListener implements ServletContextListener

  > 在 web.xml 文件中 配置Listener

  <listener>

    <listener-class>com.java.javaweb.test.HelloServletContextListener</listener-class>

  </listener>

3). why: ServletContextListener 是最常用的Listener,可以在当前 WEB 应用被加载时对当前 WEB 应用的相关资源进行初始化操作:

  创建数据库连接池,创建Spring 的 IOC 容器,读取当前 WEB 应用的初始化参数 ...

4). API:

Method Summary
void contextDestroyed(ServletContextEvent sce)
Notification that the servlet context is about to be shut
down.
void contextInitialized(ServletContextEvent sce)

Notification that the web application initialization process is
starting.

JavaWEB 中其他的Servlet监听器

HttpSessionActivationListener

1).监听实现了该接口 和 Serializable 接口的 Java 类的对象随session钝化和活化事件

  >活化:从餐盘中读取session 对象

  >钝化:向磁盘中写入session对象

  >session 对象存储在tomcat 服务器的 work\Catalina\localhost\contextPath 目录下.SESSION.SER

2).注意:该监听器不需要再web.xml文件中进行配置.

3).

//在活化之后被调用.

public void sessionDidActivate(HttpSessionEvent se)

//在钝化之前被调用

public void sessionWillPassivate(HttpSessionEvent se)

HttpSessionEvent:getSession()

4).该监听器很少被使用.

-----------------------------------------------------------------------

HttpSessionBindingListener

1).监听实现了该接口的Java类的对象被绑定到 session 或从 session 中解除绑定的事件.

//当前对象被绑定到 session 时调用该方法

public void valueBound(HttpSessionBindingEvent event)

//当前对象从session中解除时调用该方法

public void valueUnbound(HttpSessionBindingEvent event)

2).注意:该监听器不需要再web.xml文件中进行配置.

3).HttpSessionBindingEvent:

getName(),getValue(),getSession()

JavaWEB 通过Listener理解域对象生命周期的更多相关文章

  1. JAVAEE_Servlet_03_Servlet对象生命周期

    Servlet的对象声明周期 * 什么是对象生命周期? - 生命周期表示一个JAVA对象从创建到销毁的过程是一个生命周期 * Servlet对象生命周期 1. Servlet对象创建 无参构造 2. ...

  2. Hibernate的三种状态及对象生命周期

        理解Hibernate的三种状态,更利于理解Hibernate的运行机制,这些可以让你在开发中对疑点问题的定位产生关键性的帮助. 三种状态 临时状态(Transient):在通过new关键字, ...

  3. .Net组件程序设计之对象生命周期

    .Net组件程序设计之对象生命周期 .NET 垃圾回收 IDisposable() Using语句 .NET 垃圾回收 是CLR管理着垃圾回收器,垃圾回收器监控着托管堆,而我们使用的对象以及系统启动是 ...

  4. Ninject之旅之三:Ninject对象生命周期

    摘要 DI容器的一个责任是管理他创建的对象的生命周期.他应该决定什么时候创建一个给定类型的对象,什么时候使用已经存在的对象.他还需要在对象不需要的时候处理对象.Ninject在不同的情况下管理对象的生 ...

  5. iOS视图控制对象生命周期

    iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...

  6. IOS 视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途

    iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...

  7. 【转】【iOS知识学习】_视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途

    原文网址:http://blog.csdn.net/weasleyqi/article/details/8090373 iOS视图控制对象生命周期-init.viewDidLoad.viewWillA ...

  8. _视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途

    iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...

  9. ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理

    在上文中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行代码就展示了一个基本工作原理.然而,要将这样的解决方案运用到实际生产环境,还有很 ...

随机推荐

  1. Python的高级特性11:拓展基本数据类型(dict)

    字典的创建有两种方式,如果出现In [26]这样的赋值方式就会报错. In [17]: s['name'] = 'alex' In [18]: s['sex'] = 'male' In [19]: s ...

  2. Windows7 64位压缩包安装MySQL5.7.9

    官网下载64bit MySQL5.7.9压缩包, 解压至安装位置 1. 创建my.ini文件, 内容如下 [mysqld] # Remove leading # and set to the amou ...

  3. switch2osm使用open street map离线地图中文乱码方框解决办法

    ----------written by shenwenkai------------- ubuntu linux环境下,按照网址(https://switch2osm.org/serving-til ...

  4. 搜索引擎关键词劫持之php篇(源码与分析)

    摘要:其实原理很简单: 搜索引擎关键词劫持的过程实际上就是,修改肉鸡站点(webshell站点)A的首页(希望被搜索引擎收录的页面,一般情况下是首页),使之做出如下判断: if(来访者是蜘蛛){ 输出 ...

  5. indows 8上强制Visual Studio以管理员身份运行

    http://diaosbook.com/Post/2013/2/28/force-visual-studio-always-run-as-admin-on-windows-8 Windows 8的一 ...

  6. 如何在mac本上安装android sdk

    众所周知的原因,google的很多网站在国内无法访问,苦逼了一堆天朝程序员,下是在mac本上折腾android 开发环境的过程: 一.先下载android sdk for mac 给二个靠谱的网址: ...

  7. 基于SignalR的小型IM系统

    这个IM系统真是太轻量级了,提供的功能如下: 1.聊天内容美化 2.用户上下线提示 3.心跳包检测机制 4.加入用户可群聊 下面来一步一步的讲解具体的制作方法. 开篇准备工作 首先,巧妇难为无米之炊, ...

  8. javascript 位运算

    位运算博大精深,本文总结下基本的位运算的概念. 1.整数的二进制码 位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值.ECMAScript中的所有数值都以IEEE-754 64位格式存储 ...

  9. 深入理解OOP(二):多态和继承(继承)

    本文是深入浅出OOP第二篇,主要说说继承的话题. 深入理解OOP(一):多态和继承(初期绑定和编译时多态) 深入理解OOP(二):多态和继承(继承) 深入理解OOP(三):多态和继承(动态绑定和运行时 ...

  10. PLSQL Developer不支持Oracle 64位客户端解决方法

    问题描述: 在虚拟机同网段,搭建Oracle 11.2.04数据库64位的,本机操作系统Win10 x64和PLSQL 9.03,目前想利用PLSQL远程登录ORACLE数据库操作.当初用 insta ...