18、JavaWeb 监听器

18、监听器

实现一个监听器的接口;(有n种监听器)

  1. 编写一个监听器

    实现监听器的接口…

    依赖的jar包在这里插入图片描述

demo

package com.myweb.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class OnlineCountListener implements HttpSessionListener {
    //创建session监听: 看你的一举一动
    //一旦创建Session就会触发一次这个事件!
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        //拿到上下文对象,用于存储
        ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
        //监视一个sesionid
        System.out.println(httpSessionEvent.getSession().getId());
        //记录一下访问个数
        Integer integer = (Integer) servletContext.getAttribute("OnlineCount");;
        if (integer == null)
        {
            integer = 1;//自动装箱 等价于integer = new Integer(1);

        }else {
            int i = integer;//自动拆箱
            integer = ++i ;//自动装箱

        }
        //存到上下文中
        servletContext.setAttribute("OnlineCount",integer);
    }
    //销毁session监听
    //一旦销毁Session就会触发一次这个事件!
    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        //拿到上下文对象,用于存储
        ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
        //监视一个sesionid
        System.out.println(httpSessionEvent.getSession().getId());
        //记录一下访问个数
        Integer integer = (Integer) servletContext.getAttribute("OnlineCount");;
        if (integer == null)
        {
            integer = 1;//自动装箱 等价于integer = new Integer(1);

        }else {
            int i = integer;//自动拆箱
            integer = --i ;//自动装箱

        }
        //存到上下文中
        servletContext.setAttribute("OnlineCount",integer);
    }
}

看不懂integer拆装箱的。用int类型

package com.myweb.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class OnlineCountListener implements HttpSessionListener {
    //创建session监听: 看你的一举一动
    //一旦创建Session就会触发一次这个事件!
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        //拿到上下文对象,用于存储
        ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
        //监视一个sesionid
        System.out.println(httpSessionEvent.getSession().getId());
        //记录一下访问个数
        int i = 0;
        if (servletContext.getAttribute("OnlineCount") == null)
        {
            i = 1;
        }else {
            i = (int) servletContext.getAttribute("OnlineCount");
            i++;
        }
        //存到上下文中
        servletContext.setAttribute("OnlineCount",i);
    }
    //销毁session监听
    //一旦销毁Session就会触发一次这个事件!
    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        //拿到上下文对象,用于存储
        ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
        //监视一个sesionid
        System.out.println(httpSessionEvent.getSession().getId());
        //记录一下访问个数
        int i = 0;
        if (servletContext.getAttribute("OnlineCount") == null)
        {
            i = 1;
        }else {
            i = (int) servletContext.getAttribute("OnlineCount");
            i++;
        }
        //存到上下文中
        servletContext.setAttribute("OnlineCount",i);
    }
}

    <listener>
        <listener-class>com.myweb.listener.OnlineCountListener</listener-class>
    </listener>

前端查看

<%--
  Created by IntelliJ IDEA.
  User: xubainan
  Date: 2021/3/11
  Time: 4:56 下午
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>读取在线人数</title>
</head>
<body>
当前在线<%=this.getServletConfig().getServletContext().getAttribute("OnlineCount")%>人
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值