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的主要内容,如果未能解决你的问题,请参考以下文章