JavaWeb Listener

Posted chy18883701161

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb Listener相关的知识,希望对你有一定的参考价值。

 

Listener是Servlet的事件监听器,一共有8个:

  • ServletContextListener    监听ServletContext对象的创建、销毁
  • HttpSessionListener   监听HTTPSession对象的创建、销毁
  • ServletRequestListener   监听ServletRequest对象的创建、销毁
  • ServletContextAttributeListener   监听ServletContext中属性的变化(添加属性、移除属性、修改属性)
  • HttpSessionAttributeListener
  • ServletRequestAttributeListener
  • HttpSessionBindListener   监听把JavaBean对象绑定到HttpSession对象上、把JavaBean对象从HttpSession对象上解绑
  • HttpSessionActivationListener  监听HttpSession中对象的活化、钝化

 

钝化:HttpSession对象从内存中转移至硬盘

活化:HttpSession对象从持久化状态转变为运行状态

 

以上监听器均为接口,自己新建Listener实现即可。

IDEA下新建Listener时,默认会实现 ServletContextListener,HttpSessionListener, HttpSessionAttributeListener 这三个最常用的监听器。

 

 

 

使用xml注册Listener

<listener>
        <listener-class>listener.MyListener</listener-class>
    </listener>

监听的是整个web应用,不是某个Servlet。

 

 

 

使用注解注册Listener

@WebListener()

 

 

 

使用Session+Listener实现购物车

  • 用一个Map来存储购物车中的商品,key存储商品id,value存储购买数量。
  • 将Map放到session中,用户修改购物车中的商品时(加入商品、移出商品、修改购买数量),从session中使用getAttribute()取出Map,对Map进行修改,然后setAttribute()放回session中(同名覆盖)。
  • 当会话结束销毁session时,把session中的这个Map取出来,从中读取数据,存到数据库中。这个功能可以用Listener来实现。
@WebListener()
public class MyListener implements HttpSessionListener 
    public void sessionCreated(HttpSessionEvent se) 

    

    public void sessionDestroyed(HttpSessionEvent se) 
        HttpSession session = se.getSession();
        //从session中取出Map,获取数据,存储到数据库中
        //......
    

重写方法时,要把原来的default权限改为public。

 

以上是关于JavaWeb Listener的主要内容,如果未能解决你的问题,请参考以下文章

JavaWebListener监听

spring中的IoC

Hadoop的Server及其线程模型分析

Android中三种创建监听器的方法

JavaWeb知识汇总目录

JavaWeb知识汇总目录