JavaWEB 通过Listener理解域对象生命周期
利用 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理解域对象生命周期的更多相关文章
- JAVAEE_Servlet_03_Servlet对象生命周期
Servlet的对象声明周期 * 什么是对象生命周期? - 生命周期表示一个JAVA对象从创建到销毁的过程是一个生命周期 * Servlet对象生命周期 1. Servlet对象创建 无参构造 2. ...
- Hibernate的三种状态及对象生命周期
理解Hibernate的三种状态,更利于理解Hibernate的运行机制,这些可以让你在开发中对疑点问题的定位产生关键性的帮助. 三种状态 临时状态(Transient):在通过new关键字, ...
- .Net组件程序设计之对象生命周期
.Net组件程序设计之对象生命周期 .NET 垃圾回收 IDisposable() Using语句 .NET 垃圾回收 是CLR管理着垃圾回收器,垃圾回收器监控着托管堆,而我们使用的对象以及系统启动是 ...
- Ninject之旅之三:Ninject对象生命周期
摘要 DI容器的一个责任是管理他创建的对象的生命周期.他应该决定什么时候创建一个给定类型的对象,什么时候使用已经存在的对象.他还需要在对象不需要的时候处理对象.Ninject在不同的情况下管理对象的生 ...
- iOS视图控制对象生命周期
iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...
- IOS 视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途
iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...
- 【转】【iOS知识学习】_视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途
原文网址:http://blog.csdn.net/weasleyqi/article/details/8090373 iOS视图控制对象生命周期-init.viewDidLoad.viewWillA ...
- _视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途
iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...
- ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理
在上文中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行代码就展示了一个基本工作原理.然而,要将这样的解决方案运用到实际生产环境,还有很 ...
随机推荐
- spring mvc总结1
1,spring下载 spring更改了官方网站后,找了很长时间没有找到相关的jar包下载路径,然后在网上终于找到相关的路径了 有个树形结构可供选择:http://repo.spring.io/rel ...
- Mysql LIMIT如何正确对其进行优化
Mysql LIMIT如何正确对其进行优化 2010-05-17 17:09 佚名 博客园 字号:T | T 我们今天主要和大家分享的是Mysql LIMIT简单介绍以及如何进行优化的相关内容的描述, ...
- (原创)在Exchange 2007 server中使用实时黑名单服务(RBL)过滤垃圾邮件
近一段有同事抱怨公司的邮件系统垃圾邮件非常多,早上上班打开邮箱垃圾邮件竟然有几十封.然后赶紧打开Exchange工具“邮件跟踪”,发现有每隔1到2分钟,邮件系统便会收到来自不同IP的垃圾邮件,由于源I ...
- C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 标准省市县数据的公司选择窗口实现
若全国各地有上千个分公司,加盟店,网点,那就需要一个友善的选择分公司的功能,得有标准的全国省市县的划分数据.这样有了牢靠的基础数据后,才能开发程序得心应手了.当习惯了开发一个公司内部系统时,全国性大公 ...
- QT 常用控件二
QT提供QHBoxLayout类.QVBoxlayout类及QGridLayout类等的基本布局管理,分别是水平排列布局,垂直排列布局和网格排列布局 addWidget()方法用于向布局中加入需要布局 ...
- QT 常用控件一
QWidget 创建窗口 如果widget未使用腹肌进行创建,则在显示时视为窗口或顶层widget. 由于顶层widget没有父级对象类来确保在其不再使用时删除,所以需要开发人员在应用程序中对其进程跟 ...
- HTTP04--CDN知识
一.CDN用途及概念 目的: CDN是内容分布网路(Content Delivery Network)的简称,目的是将网站内容发布到最接近用户的边缘,使用户就近获取内容,提高相应速度. 使用机制: 目 ...
- windows7下启动mysql服务出现服务名无效
出现提示: WIN 7 cmd命令行下,net start mysql,出现 服务名无效提示: 问题原因: mysql服务没有安装. 解决办法: 在 mysql bin目录下 以管理员的权限 执行 m ...
- Tensorflow学习笔记1:Get Started
关于Tensorflow的基本介绍 Tensorflow是一个基于图的计算系统,其主要应用于机器学习. 从Tensorflow名字的字面意思可以拆分成两部分来理解:Tensor+flow. Tenso ...
- [HDOJ5442]Favorite Donut(最大表示法)
嗯……就是最小表示法改一下…… 这题就是把S串当作两个判断同构的串,然后就搞出最大的表示了 然后在反向再做一次 O(n)求最大表示,O(n)判断正反谁大