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
voidcontextDestroyed(ServletContextEvent sce)
Notification that the servlet context is about to be shut down.
voidcontextInitialized(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()

 

转载于:https://www.cnblogs.com/wq3435/p/5366018.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值