• 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()

  • 相关阅读:
    Vue的响应式
    让html上两个元素在一行显示
    linux的<<命令
    http-only,withCredentials
    axios跨域请求时 withCredentials:true 表示request携带cookie
    异步代码async await阻塞进程的误区——await的是Promise的resolve而不是语句块的执行结束
    理解状态机
    关于express返回值的问题
    axios基本的get/post请求使用方法
    【转】 前端笔记之Vue(四)UI组件库&amp;Vuex&amp;虚拟服务器初识
  • 原文地址:https://www.cnblogs.com/wq3435/p/5366018.html
Copyright © 2020-2023  润新知