码迷,mamicode.com
首页 > 编程语言 > 详细

JavaWeb Listener

时间:2019-08-29 19:55:54      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:javabean   修改   str   覆盖   imp   def   持久   web   结束   

 

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

标签:javabean   修改   str   覆盖   imp   def   持久   web   结束   

原文地址:https://www.cnblogs.com/chy18883701161/p/11431581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!