小程序开发|小程序制作|小程序开发网

搜索

09.《JavaEE 学习笔记》Listener监听器

2024-7-23 16:45| 发布者: 李白笑了| 查看: 70| 评论: 0

摘要: 1、6种监听事件类型ServletContextEvent 上下文事件,当应用上下文对象发生改变,如创建或销毁上下文对象时,将触发上下文事件。ServletContextAttributeEvent 上下文属性事件,当应用上下文的属性改变,如增加、删

1、6种监听事件类型

  • ServletContextEvent 上下文事件,当应用上下文对象发生改变,如创建或销毁上下文对象时,将触发上下文事件。
  • ServletContextAttributeEvent 上下文属性事件,当应用上下文的属性改变,如增加、删除、覆盖上下文中的属性时,将触发上下文属性事件。
  • ServletRequestEvent 请求事件,当请求对象发生改变,如创建或销毁请求对象时,触发请求事件。
  • ServletRequestAttributeEvent 请求属性事件,当请求中的属性改变,如增加、删除、覆盖请求中的属性时,触发请求属性事件。
  • HttpSessionEvent 会话事件,当会话对象发生改变,如创建或销毁会话对象,活化或钝化会话对象时,将触发会话事件。
  • HttpSessionBindingEvent 会话绑定事件,当会话中的属性发生变化时,如增加、删除、覆盖会话中的属性时,将触发会话绑定事件。

2、8种监听器接口

  • ServletContextListener 上下文监听器,监听ServletContextEvent事件。
  • ServletContextAttributeListener 上下文属性监听器,用来监听ServletContextAttribute事件。
  • ServletRequestListener 请求监听器,监听ServletRequestEvent事件。
  • ServletRequestAttributeListener 请求属性监听器,用来监听ServletRequestAttributeEvent事件。
  • HttpSessionListener 会话监听器,监听HttpSessionEvent。
  • HttpSessionActivationListener 会话活化监听器,监听HttpSessionEvent事件。
  • HttpSessionAttributeListener 会话属性监听器,监听HttpSessionAttributeEvent事件。
  • HttpSessionBindingListener 会话绑定监听器,监听HttpSessionAttributeEvent事件。

3. 利用监听器把前面的聊天室进行改进

上下文的创建与销毁监听器,记录聊天室的创建和解散

 messages = new ArrayList<>();        ArrayList userList = new ArrayList<>();        sce.getServletContext().setAttribute("userList", userList);        sce.getServletContext().setAttribute("messages", messages);            }}

会话的创建与销毁监听器,记录在线的用户。

 messages = (ArrayList) servletContext.getAttribute("messages");        ArrayList userList = (ArrayList) servletContext.getAttribute("userList");        String userId = se.getSession().getId();        userList.add(userId);               SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式        String sendTime = df.format(new Date());// new Date()为获取当前系统时间          Message message = new Message();        message.setUserName("系统提示");        message.setContent("欢迎"+userId+"加入");        message.setSendTime(sendTime);        messages.add(message);        servletContext.setAttribute("userList", userList);        servletContext.setAttribute("messages", messages);      }    @Override    public void sessionDestroyed(HttpSessionEvent se) {        ServletContext servletContext = se.getSession().getServletContext();        System.out.println("用户退出");        ArrayList messages = (ArrayList) servletContext.getAttribute("messages");        ArrayList userList = (ArrayList) servletContext.getAttribute("userList");        String userId = se.getSession().getId();        userList.remove(userId);                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式        String sendTime = df.format(new Date());// new Date()为获取当前系统时间          Message message = new Message();        message.setUserName("系统提示");        message.setContent("用户"+userId+"已退出聊天室");        message.setSendTime(sendTime);        messages.add(message);          servletContext.setAttribute("userList", userList);        servletContext.setAttribute("messages", messages);    }}

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部