文章目录

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

什么是监听器

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

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

如何写监听器

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

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

step3
配置(web.xml)。

配置监听器

有先后顺序的要求,在 <context-param> 之后, <filter> 之前;<filter><listener> 之后,<servlet> 之前。

统计在线人数的案例

监听器示例代码:

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 代码:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head><title>当前系统在线人数</title>
</head>
<body>
系统在线人数:
<%= application.getAttribute("count") %>
<br/>
<a href="logout.jsp">退出</a>
</body>
</html>

logout.jsp 的示例代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%session.invalidate();
%>
</body>
</html>

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

Servlet中的监听器相关推荐

  1. Servlet中的监听器与过滤器的详细介绍

    目录 1. 前言: 2. 怎么定义一个监听器? 3. ServletContextListener接口 4. ServletContextAttributeListener接口 5. 过滤器 1. 前 ...

  2. java web.xml 监听器_十:JavaWeb中的监听器(一)

    2.1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域 ...

  3. servlet中的session不一定会被创建

    参考:http://c5ms.iteye.com/blog/1260593 servlet中的session不一定会被创建 以前在树上看session的生命周期,都知道session的生命周期是在客户 ...

  4. 【Servlet】Listener监听器

    监听器的使用 * 监听器的使用:* 作用:* 监听作用域对象request.session.application的创建.销毁和内容的改变* 使用:* 创建一个实现了指定接口的java类* 监听req ...

  5. JAVA Web Servlet中的异步处理 (2) -- Servlet3.1中的Non-blocking IO支持

    JAVA Web Servlet中的异步处理 (2) – Servlet3.1中的Non-blocking IO支持 在servlet 3.1中,新增了non-blocking IO支持. 在serv ...

  6. 【Spring】1、Spring 中的监听器 Listener

    一.接口 1.EventListener 2.HttpSessionAttributeListener   继承EventListener接口 HttpSessionAttributeListener ...

  7. 【spring】在servlet中注入spring的bean,servlet容器和spring容器

    一.Servlet容器 Servlet的整个生命周期好象都是由Servlet容器来处理的. 如果把它硬放到Spring容器中去创建,Servlet对象是可被Spring容器建出来,但Servlet容器 ...

  8. JavaEE框架类——监听器(观察者模式)和Servlet技术的监听器session沌化与活化技术

    监听器 监听器-就是一个实现待定接口的普通Java程序,此程序专门用于监听别一个类的方法调用. 什么是观察者模式: 定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知 ...

  9. IDEA servlet 过滤器和监听器

    1.过滤器Filter 1.1 我的理解 过滤器本质就是一个Sevlet,不过它把每个Servlet类中都要做的一些事情,集中到了它这里,执行一次就可以了 使用基本和Servlet完全相同,在写完对应 ...

最新文章

  1. pythonmysql数据库系统实战_Python实战之MySQL数据库操作
  2. 简述原型链是什么,有什么用处?
  3. 读书笔记《单核工作法》_5:适用xing
  4. 【翻译自mos文章】OGG的集成捕捉模式支持Oracle database标准版么?
  5. boost::system::error_category相关的测试程序
  6. CTR点击率预估干货分享
  7. 【报告分享】2019抖音创作者生态报告.pdf
  8. 最近遇到个关于接口的奇怪的问题
  9. Centos7.x 安装Kubernetes(K8s) 1.14.3 nginx 部署 案例
  10. 纯Git实现前端项目打包部署
  11. 如何设置pycharm代码字体
  12. 《程序员修炼之道——从小工到专家》 读书笔记
  13. NetCore Vue前端实现导出功能及解决导出excel表格无法打开的问题
  14. html标签和css的语法web的一些知识汇总
  15. 博途PLC如何通过FB285实现V90 PN的速度控制
  16. Linux下安装SVN与使用
  17. 怎么建一个网站?新手建站教程
  18. 集成学习——BAGGING和随机森林
  19. 云服务器代理平台安装教程
  20. ndnSIM学习(十)——apps之ndn-producer.cpp和ndn-consumer.cpp源码分析

热门文章

  1. libgdx和unity_libgdx和Kotlin –类[2D平台原型]
  2. 请使用复选框选择_使用可选是可选的
  3. 如何构建一个Maven插件
  4. 使用Angular,Ionic 4和Spring Boot构建移动应用
  5. jboss5.1安全性配置_使用Java EE安全性和JBoss AS 7.x保护JSF应用程序的安全
  6. 如何在Spring中将@RequestParam绑定到对象
  7. Apache Derby数据库用户和权限
  8. lambda java_Java Lambdas简介
  9. 使用ADF绑定创建视图对象行CreateInsert操作
  10. Thymeleaf + Spring中的验证