码迷,mamicode.com
首页 > 其他好文 > 详细

Listener

时间:2019-12-16 09:23:30      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:on()   nat   amp   序列   web   作用   退出   setattr   zed   



Listener


  • Servlet的监听对象有三个:ServletContext,HttpSession,ServletRequest
  • 根据监听不同的事件分为:监听对象的创建和销毁,监听对象属性变化,监听Session内的对象
  • Listener也是一个java接口,根据事件分类有如下:

  • 监听对象的创建和销毁

HttpSessionListener、ServletContextListener、ServletRequestListener,里面方法有:Destroyed(),Initialized()

  • 监听对象属性变化

ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener,里面方法有:attributeAdded(),attributeRemoved(),attributeReplaced()

  • 监听Session内的对象

HttpSessionActivationListener、HttpSessionBindingListener,实现这两个接口并不需要在web.xml文件中注册,因为是让里面的对象自己监听自己,并且对象需要实现序列化接口

  • Web.xml配置
<listener>
    <listener-class>listener.ListenerTest</listener-class>
</listener>




测试


  • 监听对象的创建和销毁
public class ListenerTest implements HttpSessionListener, ServletContextListener, ServletRequestListener {

    public void requestDestroyed(ServletRequestEvent arg0) {
        System.out.println("请求销毁了");
    }

    public void requestInitialized(ServletRequestEvent arg0) {
        System.out.println("请求初始化了");
    }

    public void contextDestroyed(ServletContextEvent arg0) {
        System.out.println("容器销毁了");
    }

    public void contextInitialized(ServletContextEvent arg0) {
        System.out.println("容器初始化了");
    }

    public void sessionCreated(HttpSessionEvent arg0) {
        System.out.println("Session创建了");
    }

    public void sessionDestroyed(HttpSessionEvent arg0) {
        System.out.println("Session销毁了");
    }
容器初始化了
请求初始化了
Session创建了
# Session是在内存中的,所以看不到销毁
请求销毁了
容器销毁了


  • 监听对象属性变化

属性变化

//增加
httpSession.setAttribute("Session", "Howl");
    
//替换
httpSession.setAttribute("Session", "Howlet");
    
//移除
httpSession.removeAttribute("Session");
public class ListenerTest2 implements HttpSessionAttributeListener {

    public void attributeAdded(HttpSessionBindingEvent arg0) {
        System.out.println("Session属性增加了");
    }

    public void attributeRemoved(HttpSessionBindingEvent arg0) {
        System.out.println("Session属性移除了");
    }

    public void attributeReplaced(HttpSessionBindingEvent arg0) {
        System.out.println("Session属性替换了");
    }
}    
Session属性增加了
Session属性替换了
Session属性移除了


  • 监听Session内的对象
public class UserBean implements Serializable, HttpSessionActivationListener, HttpSessionBindingListener {

    private String name;
    
    public UserBean(String name) {
        this.name = name;
    }

    public void valueBound(HttpSessionBindingEvent arg0) {
        System.out.println("绑定了对象");
    }

    public void valueUnbound(HttpSessionBindingEvent arg0) {
        System.out.println("移除了对象");
    }

    public void sessionDidActivate(HttpSessionEvent arg0) {
        HttpSession httpSession = arg0.getSession();
        System.out.println("活化了");
    }

    public void sessionWillPassivate(HttpSessionEvent arg0) {
        HttpSession httpSession = arg0.getSession();
        System.out.println("钝化了");
    }
}    
UserBean user = new UserBean("Howl");
    
request.getSession().setAttribute("user", user);
request.getSession().removeAttribute("user");
绑定了对象
<!-- 关闭服务器 -->
钝化了
<!-- 开启服务器 -->
活化了
移除了对象


作用

统计用户人数

监听用户上线与退出





参考Java3y

Listener

标签:on()   nat   amp   序列   web   作用   退出   setattr   zed   

原文地址:https://www.cnblogs.com/Howlet/p/12047343.html

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