• 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 服务器的 workCatalinalocalhostcontextPath 目录下.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()

  • 相关阅读:
    TCP保活的必要性
    java断言assert初步使用:断言开启、断言使用
    ThreadPoolExecutor参数讲解
    浅谈tcp socket的backlog参数
    能说明白为啥三次握手的文章节选
    HashSet中实现不插入重复的元素
    java中TreeSet集合如何实现元素的判重
    java中父类与子类, 不同的两个类中的因为构造函数由于递归调用导致栈溢出问题
    poj 3321 Apple Trie
    用命令行编译java并生成可执行的jar包
  • 原文地址:https://www.cnblogs.com/wq3435/p/5366018.html
Copyright © 2020-2023  润新知