【Servlet】Java Serlvet Listener 监听器
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文件:
![](/assets/blank.gif)
![](/assets/blank.gif)
<%@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文件:
![](/assets/blank.gif)
![](/assets/blank.gif)
<?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文件:
![](/assets/blank.gif)
![](/assets/blank.gif)
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 监听器相关推荐
- javaweb(11) Listener监听器与Filter过滤器
javaweb(11) Listener监听器与Filter过滤器 Listener监听器 什么是Listener监听器 Listener 监听器它是 JavaWeb 的三大组件之一.JavaWeb ...
- Java中的Listener监听器与Ajax技术和Axios异步框架以及JSON传递接收数据
Listener监听器与Ajax Listener 概念 Listener 表示监听器,是 JavaWeb 三大组件(Servlet.Filter.Listener)之一. 监听器可以监听就是在 ap ...
- java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)
Callback回调事件介绍 Java或Android中创建异步回调最普遍的做法就是使用listener监听器或者observer观察者模式来解决,listener回调事件通常用于实现一个代码去监听另 ...
- Filter 过滤器和 Listener 监听器,java面试必问底层
一.Filter 过滤器 1.概述 2.开发步骤 3.过滤器执行流程 4.过滤器生命周期 5.过滤器配置问题 6.过滤器链(配置多个过滤器) [二.Listener 监听器]( <一线大厂Jav ...
- Listener 监听器
Listener 监听器 前言:之前写了一篇关于Filter的文章:http://tianweili.github.io/blog/2015/01/26/java-filter/,现在再来一篇List ...
- SpringBoot------Servlet3.0的注解自定义原生Listener监听器
前言 常用监听器: //contextListener可以监听数据库的连接,第三方组件的交互,还有静态文件加载等等 servletContextListener HttpSessionListener ...
- 第 8 章 配置listener监听器
第 8 章 配置listener监听器 注意 还记得我们之前讲过的在线列表吗?第 4.2 节 "例子:在线列表".我们曾经说过那个在线列表无法判断用户非法退出,很可能造成在线列表无 ...
- Filter(过滤器)、Listener(监听器)
一: 过滤器: 可以把"不和谐"的东西给过滤掉 01.过滤器概述 生活中的过滤器:带有过滤功能的净水器,滤纸,香烟的过滤嘴,测试,丈母娘.程序中的过滤器:在JAVA中最小的程序单元 ...
- web核心 8-filter过滤器 listener监听器 相对路径 绝对路径 项目名路径
内容介绍 1.Filter过滤器 2.listener监听器 Filter过滤器 概述 web服务器端有三大技术:Servlet Filter Listener Servlet:本质上是一个类,这个类 ...
最新文章
- uva-10400-搜索
- 被业务方投诉了!CTO直摇头:人际关系处理太差,不懂维护“情感账户”
- 远程桌面的分辨率最大不会超过本机真实物理机的分辨率
- loadrunner安装补丁报错
- 《WTM送书活动:向更遥远的星辰大海起航~》
- antd 怎么用ajax,react+dva+antd接口调用方式
- IE6下css常见bug处理
- 使用HTML5技术控制电脑或手机上的摄像头(转载)
- 合并多个txt文件到一个
- Oracle系统表查询方法
- 火狐使用谷歌搜索_Google拒绝使用Firefox
- conficker病毒
- 杂项7 - Kali的截图键PrtSc
- JavaScript prototype原型实现继承
- html/css移动界面侧滑效果
- 小米OJ12月常规赛“数数字”题目详解与SG函数SG定理个人理解
- Pre-Upgrade Utility---下载并运行Oracle数据库预升级实用程序 (文档 ID 1577379.1)
- Android 仿钉钉、微信 群聊组合头像,Android插件化入门指南
- 洛谷P2404 自然数的拆分问题(回溯)
- S32K系列S32K144学习笔记——PWM