认识监听器(Listener)

这篇具有很好参考价值的文章主要介绍了认识监听器(Listener)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

监听器是什么?

监听器(Listener)是一种运行在后台的程序,它主要用于监控某些事件在系统中的发生,并且根据这些事件做一些特定的处理。在Web应用程序中,监听器可以观察ServletContext、HttpSession以及ServletRequest等对象的变化,以便于在这些对象变化时进行相应的处理。监听器是Servlet规范中的一部分,在Java EE应用程序中广泛使用。

监听器通常定义了以下三个接口:

1. ServletContextListener:用于监听ServletContext的创建和销毁事件。
2. HttpSessionListener:用于监听HttpSession的创建和销毁事件。
3. ServletRequestListener:用于监听ServletRequest的创建和销毁事件。

除了上述三种标准的监听器接口,开发者也可以实现自己的监听器接口。监听器接口通常包含了多个方法,在对应的事件发生时会自动调用这些方法,以便监听器可以完成相应的处理逻辑。

常见的监听器应用包括:

1. 统计在线用户数
2. 初始化应用程序环境参数
3. 实现缓存管理
4. 监听Spring框架中Bean的生命周期
5. 监听消息队列中消息的到达等。

监听器是Java EE中非常重要的一部分,在Web应用程序中广泛应用,能够有效地提高应用程序性能和安全性。

监听器的用途

监听器的主要用途是监控Web应用程序中某些特定的事件的发生,并在这些事件发生时执行预定义的操作或处理逻辑。常用的监听器包括:

1. ServletContextListener:用于监控Web应用程序启动和关闭事件,例如一些应用程序启动时的初始化工作和应用程序关闭时的清理工作等。

2. HttpSessionListener:用于监控会话的创建和销毁事件,并记录在线用户数,例如对于在线商城等需要统计在线用户数的场景非常有用。

3. ServletRequestListener:用于监控Web请求的创建和销毁事件,例如对于每个请求都需要进行身份认证的场景,可以使用ServletRequestListener来实现登录拦截。

4. 监听JNDI服务的变化并更新应用程序数据源等服务。

除了上述标准的监听器,开发者也可以自定义监听器来监听特定的事件,这也是监听器的优秀之处。监听器可以增强Web应用程序的功能和安全性,提供更好的用户体验和管理。

listener在线监听用户数量

UserCounterListener代码

package com.qing;

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

public class UserCounterListener implements HttpSessionListener {
    private ServletContext ctx = null;
    @Override
    public void sessionCreated(HttpSessionEvent se) {
         ctx=se.getSession().getServletContext();
        if (ctx.getAttribute("onlineCount")!=null){
            ctx.setAttribute("onlineCount",(Integer)ctx.getAttribute("onlineCount")+1);
        }
        else {
            ctx.setAttribute("onlineCount", 1);
        }
        System.out.println("=====有一位用户上线了=====");
        System.out.println("Id: "+se.getSession().getId()+"=====");


    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
         ctx=se.getSession().getServletContext();
        if (ctx.getAttribute("onlineCount")!=null){
            ctx.setAttribute("onlineCount", 0);
        }
        else {
            ctx.setAttribute("onlineCount",(Integer)ctx.getAttribute("onlineCount")-1);
        }
        System.out.println("=====用户下线了=====");
        System.out.println("Id: "+se.getSession().getId()+"=====");
    }


}

index.jsp代码,如下图,浏览器默认进index.jsp页面,我的默认路径是localhost:8080;当进入jsp页面,因为getAttribute取到了键,就可以拿到值

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
</head>
<body>
<h1>当前网站的有<%=request.getSession().getServletContext().getAttribute("onlineCount")%>人访问</h1>

</body>
</html>

web.xml配置

  <servlet>
         <servlet-name>ListenerTest</servlet-name>
         <servlet-class>com.qing.ListenerTest</servlet-class>
     </servlet>
    <servlet-mapping>
        <servlet-name>ListenerTest</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>


    <listener>
        <listener-class>com.qing.UserCounterListener</listener-class>
    </listener>

<!--设置session过期时间,1分钟销毁-->
    <session-config>
        <session-timeout>1</session-timeout>
    </session-config>

效果图:

默认是3个人访问

认识监听器(Listener)

 后端打印的结果认识监听器(Listener)

 文章来源地址https://www.toymoban.com/news/detail-434176.html

一分钟后,session会过期,在web.xml中设置了session的过期时间,刷新浏览器,访问人数为1

认识监听器(Listener)

 

用不同的浏览器访问,会增加访问人数,并且后端的控制台也会监听,并打印信息

认识监听器(Listener)

 

到了这里,关于认识监听器(Listener)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • camunda执行监听器和任务监听器有什么区别

    Camunda的执行监听器和任务监听器是用于添加自定义逻辑的监听器,它们的区别在于作用对象和触发事件的不同。 执行监听器是与BPMN流程中的各种流程元素(例如开始事件、用户任务、服务任务、网关等)相关联的。执行监听器可以在流程元素执行前、执行后或抛出异常时添

    2024年02月04日
    浏览(56)
  • HttpSessionListener监听器和HttpSessionAttributeListener监听器

    1.作用:监听Session创建或销毁,即生命周期监听 2.相关方法: 3.使用场景: 和前面的ServletContextListener等一样,可以用于监控用户上线和离线 4.代码 HttpSessionListener监听器 实现类 HttpSessionAttributeListener监听器 1.作用:监听Session属性的变化,使用少 2.相关方法: 3.代码 监听器 实

    2024年02月04日
    浏览(50)
  • 消息监听器和消息监听容器

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 消息监听器顾名思义用来接收消息,它是使用消息监听容器的必须条件。目前有8个消息监听器: 使用自动提交或容器管理的提交方法之一,处理从 Kafka 消费者 p

    2024年02月07日
    浏览(53)
  • Android手势监听、触摸监听器、onTouchListener

    一次点击事件(onClickListener)由 一次down事件,多次move事件和一次up事件构成,move事件出现的次数由用户的按压效果决定。down表示手势事件开始,up表示结束,move则代表着过程。此时代码中onTouchLishtener方法中返回的结果为ture,则表示拦截用户的该次行为,由此方法进行处理

    2024年02月04日
    浏览(50)
  • watch监听器三种监听方式

    1、普通监听( 无法监听到第一次绑定的变化 ) 这样使用watch时有一个特点,就是当值第一次绑定的时候,不会执行监听函数,只有值发生改变才会执行。 2、普通监听( 可以监听到第一次绑定的变化) 给 text 绑定了一个handler方法,之前我们写的 watch 方法其实默认写的就是

    2024年02月15日
    浏览(45)
  • 【JavaWeb】9—监听器

    ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 如果文章对你有所帮助,可以点赞👍收藏⭐支持一下博主~😆 可见Java设计模式中的观察者模式。 观察者:监控『被观察者』

    2023年04月09日
    浏览(48)
  • 计算属性和监听器

    计算属性是Vue中非常常用的一个概念,它能够根据现有的数据直接生成一个新的数据进行展示和操作。在Vue的实例中,可以使用 computed 来定义计算属性。 例如,我们有一个Vue实例 vm ,其中有一个数据 message ,我们可以通过计算属性 reversedMessage 来生成消息的反转字符串: 在

    2024年02月15日
    浏览(41)
  • Kafka 监听器详解

    Kafka Assistant 是一款 Kafka GUI 管理工具——管理Broker,Topic,Group、查看消费详情、监控服务器状态、支持多种消息格式。 你需要将 advertised.listeners (如果你使用Docker镜像,则为 KAFKA_ADVERTISED_LISTENERS )设置为外部地址(host/IP),以便客户端可以正确地连接到它。否则,他们会尝试

    2024年02月06日
    浏览(43)
  • Servlet的监听器

    Servlet常用的监听器 ServletContextAttributeListener 用来感知 ServlerContext 对象属性变化,比如添加或删除属性变化 ServletContextListener 用来感知 ServlerContext 对象的创建和销毁的 ServletRequestListener 可以用来监听感知 ServletRequest 对象的创建和销毁的 ServletRequestAttributeListener 用来感知 Serv

    2024年02月17日
    浏览(43)
  • SpringBoot 监听器

    Spring的监听器也可以说是一种观察者模式,它能实现事件与事件监听者直接的解耦,在Spring中监听器的实现主要有一下重要组件: ApplicationListener:事件监听者,观察者; ApplicationEvent:Spring 事件,记录事件源、事件内容、时间等数据; 有些场景事件主体主要是String或基本类

    2024年02月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包