Web中的监听器

三类八种:

  • 一类:监听三个域对象的创建和销毁的监听器:
    • ServletContextListener
    • HttpSessionListener
    • ServletRequestListener
  • 二类:监听三个域对象的属性变更的监听器(属性添加,移除,替换):
    • ServletContextAttributeListener
    • HttpSessionAttributeListener
    • ServletRequestAttributeListener
  • 三类:监听HttpSession中的JavaBean的状态改变(绑定,解除绑定,钝化,活化)
    • HttpSessionBindingListener
    • HttpSessionActivationListener

一类:监听三个域对象的创建和销毁的监听器:
【ServletContext对象的创建和销毁】:

* 创建:服务器启动的时候,服务器为每个WEB应用创建一个属于该web项目的对象ServletContext.
* 销毁:服务器关闭或者项目从服务器中移除的时候.
* 配置:

  <!-- 配置监听器 -->
  <listener>
    <listener-class>com.itheima.weblistener.MyServletContextListener</listener-class>
  </listener>

【HttpSession何时创建和销毁的】

* 创建:服务器端第一次调用getSession();
* 销毁:
* 非正常关闭服务器(正常关闭session会序列化):
* session过期了默认30分钟.
* 手动调用session.invalidate();

【HttpSession的问题】

* 访问Servlet会不会创建Session : 不会
* 访问JSP会不会创建Session :会.
* 访问html会不会创建Session :不会


【request对象何时创建和销毁】:

* 创建:客户端向服务器发送一次请求,服务器就会创建request对象.
* 销毁:服务器对这次请求作出响应后就会销毁request对象.

【问题】:

访问一个Servlet会不会创建request对象:会
访问一个JSP会不会创建request对象:会
访问一个HTML会不会创建request对象:会


二类:监听三个域对象的属性变更的监听器:(属性添加,移除,替换)
  • ServletContextAttributeListener:监听ServletContext对象的属性变更
  • HttpSessionAttributeListener:监听HttpSession中的属性变更
  • ServletRequestAttributeListener:监听ServletRequest对象的属性变更

三类:监听HttpSession中的JavaBean的对象的状态改变的监听器
  • 1.HttpSessionBindingListener:监听HttpSession中的JavaBean的绑定和解除绑定的
  • 2.HttpSessionActivationListener:监听HttpSession中的JavaBean的钝化和活化的.
    • sessionDidActivate(); :–活化(反序列化)
    • sessionWillPassivate(); :–钝化(序列化到硬盘)
    • 优化Session:
      • 通过配置标签配置定时session序列化.
      • 在tomcat/conf/context.xml中配置 :在tomcat中所有的虚拟主机和虚拟路径都会按照这个配置执行.
      • 在tomcat/conf/Catalina/localhost/context.xml配置 :在tomcat中的localhost虚拟主机中的所有虚拟路径按照这个配置执行.
      • 在当前的工程下的META-INF/context.xml配置 :当前这个工程按照配置执行.

猜你喜欢

转载自blog.csdn.net/sinat_40662281/article/details/80487075