Listener监听器

Servlet规范中定义的一种特殊的组件,用来监听Servlet容器产生的事件并进行相应的处理
容器产生的事件分类-   生命周期相关的事件-   设置和删除Attribute数据相关的事件
ServletContextListener监听器
    在ServletContext创建时和关闭时都会通知ServletContextListener
方法:servletContextInitialized(ServletContextEvent sce)当ServletContext创建的时候,将会调用这个方法servletContextDestroyed(ServletContextEvent sce)当ServletContext销毁的时候(例如关闭应用服务器或者重新加载应用),将会调用这个方法。
ServletContextAttributeListener监听器
当往Servlet Context添加、删除或者替换一个属性的时候,将会通知ServletContextAttributesListener
方法:void attributeAdded(ServletContextAttributeEvent scab)往ServletContext中加入一个属性的时候触发;void attributeRemoved(ServletContextAttributeEvent scab)从ServletContext中删除一个属性的时候触发;void attributeReplaced(ServletContextAttributeEvent scab)改变ServletContext中属性的时候触发。
HttpSessionListener监听器
当一个HttpSession刚被创建或者失效(invalidate)的时候,将会通知HttpSessionListener 方法:void sessionCreated(HttpSessionEvent hse)当一个HttpSession对象被创建时,将会调用这个方法;void sessionDestroyed(HttpSessionEvent hse)当一个HttpSession超时或者调用HttpSession的invalidate()方法让它销毁时,将会调用这个方法
HttpSessionAttributesListener监听器
HttpSession中添加、删除或者替换一个属性的时候,将会通知HttpSessionAttributesListener 方法:void attributeAdded(HttpSessionBindingEvent e)当往会话中加入一个属性的时候,将会调用这个方法;void attributeRemoved(HttpSessionBindingEvent e)当从会话中删除一个属性的时候,将会调用这个方法;void attributeReplaced(HttpSessionBindingEvent e)当改变会话中的属性的时候,将会调用这个方法

上面只是列举了一些常用的Listener,关于Listener中的方法,有一个规律,就是如果是Attribute的Listener那么就有三个抽象方法,如果是非Attribute的Listener就只有两个抽象方法。其实官方提供了8大Listener,其中有2个ServletContextEvents,4个HttpSessionEvents,2个ServeltRequestEvents

ServletContextEvents:  ServletContextListener    Servlet上下文更改监听  ServletContextAttributeListener  Servlet上下文属性更改监听

HttpSessionEvents:  HttpSessionListener  会话更改监听  HttpSessionAttributeListener  会话属性更改监听  HttpSessionActivationListener  会话钝化或激活监听  HttpSessionBindingListener  会话绑定或取消监听

ServetRequestEvents:  ServletRequestAttributeListener  请求属性更改监听  ServletRequestListener 请求更改监听
在web.xml中配置listener组件
<listener><listener-class>cn.xdl.listener.ListenerName</listener-class></listener>


看一个计算当前网站的在线人数案例:

jsp文件:

<%@page import="cn.xdl.listener.MySessionListener"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>

demo.jsp

加载一个JSP文件,会自动有application对象,所以会自动ServletContext文件

web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"><display-name>day09_listener</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><listener><listener-class>cn.xdl.listener.MySessionListener</listener-class></listener>
</web-app>

web.xml

配置监听器和配置过滤器不一样。listener文件:

package cn.xdl.listener;import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;/***    获取当前网站 ,同时在线人数 **/
public class MySessionListener implements HttpSessionListener {public static int count = 0;/*** 当session创建时, 自动执行*/@Overridepublic void sessionCreated(HttpSessionEvent event) {System.out.println("网站进了一个新用户");count+=1;}/*** 当session销毁时 , 自动执行*/@Overridepublic void sessionDestroyed(HttpSessionEvent event) {System.out.println("网站离开了一个用户");count-=1;}}

MySessionListener.java

转载于:https://www.cnblogs.com/HDK2016/p/7091111.html

【Servlet】Java Serlvet Listener 监听器相关推荐

  1. javaweb(11) Listener监听器与Filter过滤器

    javaweb(11) Listener监听器与Filter过滤器 Listener监听器 什么是Listener监听器 Listener 监听器它是 JavaWeb 的三大组件之一.JavaWeb ...

  2. Java中的Listener监听器与Ajax技术和Axios异步框架以及JSON传递接收数据

    Listener监听器与Ajax Listener 概念 Listener 表示监听器,是 JavaWeb 三大组件(Servlet.Filter.Listener)之一. 监听器可以监听就是在 ap ...

  3. java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)

    Callback回调事件介绍 Java或Android中创建异步回调最普遍的做法就是使用listener监听器或者observer观察者模式来解决,listener回调事件通常用于实现一个代码去监听另 ...

  4. Filter 过滤器和 Listener 监听器,java面试必问底层

    一.Filter 过滤器 1.概述 2.开发步骤 3.过滤器执行流程 4.过滤器生命周期 5.过滤器配置问题 6.过滤器链(配置多个过滤器) [二.Listener 监听器]( <一线大厂Jav ...

  5. Listener 监听器

    Listener 监听器 前言:之前写了一篇关于Filter的文章:http://tianweili.github.io/blog/2015/01/26/java-filter/,现在再来一篇List ...

  6. SpringBoot------Servlet3.0的注解自定义原生Listener监听器

    前言 常用监听器: //contextListener可以监听数据库的连接,第三方组件的交互,还有静态文件加载等等 servletContextListener HttpSessionListener ...

  7. 第 8 章 配置listener监听器

    第 8 章 配置listener监听器 注意 还记得我们之前讲过的在线列表吗?第 4.2 节 "例子:在线列表".我们曾经说过那个在线列表无法判断用户非法退出,很可能造成在线列表无 ...

  8. Filter(过滤器)、Listener(监听器)

    一: 过滤器: 可以把"不和谐"的东西给过滤掉 01.过滤器概述 生活中的过滤器:带有过滤功能的净水器,滤纸,香烟的过滤嘴,测试,丈母娘.程序中的过滤器:在JAVA中最小的程序单元 ...

  9. web核心 8-filter过滤器 listener监听器 相对路径 绝对路径 项目名路径

    内容介绍 1.Filter过滤器 2.listener监听器 Filter过滤器 概述 web服务器端有三大技术:Servlet Filter Listener Servlet:本质上是一个类,这个类 ...

最新文章

  1. uva-10400-搜索
  2. 被业务方投诉了!CTO直摇头:人际关系处理太差,不懂维护“情感账户”
  3. 远程桌面的分辨率最大不会超过本机真实物理机的分辨率
  4. loadrunner安装补丁报错
  5. 《WTM送书活动:向更遥远的星辰大海起航~》
  6. antd 怎么用ajax,react+dva+antd接口调用方式
  7. IE6下css常见bug处理
  8. 使用HTML5技术控制电脑或手机上的摄像头(转载)
  9. 合并多个txt文件到一个
  10. Oracle系统表查询方法
  11. 火狐使用谷歌搜索_Google拒绝使用Firefox
  12. conficker病毒
  13. 杂项7 - Kali的截图键PrtSc
  14. JavaScript prototype原型实现继承
  15. html/css移动界面侧滑效果
  16. 小米OJ12月常规赛“数数字”题目详解与SG函数SG定理个人理解
  17. Pre-Upgrade Utility---下载并运行Oracle数据库预升级实用程序 (文档 ID 1577379.1)
  18. Android 仿钉钉、微信 群聊组合头像,Android插件化入门指南
  19. 洛谷P2404 自然数的拆分问题(回溯)
  20. S32K系列S32K144学习笔记——PWM

热门文章

  1. 机器学习入门--进阶资料和流程建议
  2. 关于将一个数输出为原码、反码和补码的解惑
  3. qt创建线程和退出线程
  4. terminate和quit导致串口资源被占用
  5. Java三大特性: 封装、继承、多态
  6. 002_jQuery语法
  7. 安智armeabi 和 armeabi-v7a 的库文件增加法则
  8. 第八章 Oralce的管理员密码的管理
  9. 牛客java面试题总结版(一)
  10. php提示行号,在php中使用trigger_错误时如何获得正确的行号?