您当前的位置: 首页 >  servlet

liaowenxiong

暂无认证

  • 2浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Servlet中的监听器

liaowenxiong 发布时间:2022-02-28 15:11:38 ,浏览量:2

文章目录
  • 什么是监听器
  • 如何写监听器
  • 配置监听器
  • 统计在线人数的案例

什么是监听器

Servlet 规范当中定义的一种特殊的类,作用是监听容器当中产生的一些事件并进行相应的处理。

容器产生的事件指的是两大类事件: 第一大类 生命周期相关的事件,指的是当容器创建或者销毁 request,session,ServletContext 对象时产生的事件。 第二大类 绑订事件,指的是当调用 request,session,ServletContext 对象的setAttribute,removeAttribute 时产生的事件。

如何写监听器

step1 写一个 Java 类,实现特定的监听器接口(依据要监听的事件类型,去实现相应的监听器接口)。

step2 在接口声明的方法中,实现监听的逻辑。

step3 配置(web.xml)。

配置监听器

有先后顺序的要求,在 之后, 之前; 之后, 之前。

在这里插入图片描述

统计在线人数的案例

监听器示例代码:

package priv.lwx.servlet.web;

import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * Session监听器
 *
 * @author liaowenxiong
 * @date 2022/2/27 16:29
 */
@WebListener
public class CountListener implements HttpSessionListener {
  private int count = 0;

  /**
   * Session对象创建后,就会执行该方法
   *
   * @param arg0
   */
  public void sessionCreated(HttpSessionEvent arg0) {
    System.out.println("sessionCreated...");
    count++;
    HttpSession session = arg0.getSession();
    ServletContext sctx = session.getServletContext();
    sctx.setAttribute("count", count);
  }

  /**
   * Session对象销毁前会执行该方法
   *
   * @param arg0
   */
  public void sessionDestroyed(HttpSessionEvent arg0) {
    System.out.println("Session对象被销毁...");
    count--;
    HttpSession session = arg0.getSession();
    ServletContext sctx = session.getServletContext();
    sctx.setAttribute("count", count);
  }
}

index.jsp 代码:





    当前系统在线人数


系统在线人数:


退出


logout.jsp 的示例代码:




    Title





部署好之后,启动服务器,访问:http://localhost:8080/sl/index.jsp,sl 项目的虚拟目录。

关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.0594s