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创建时, 自动执行
*/
@Override
public void sessionCreated(HttpSessionEvent event) {
System.out.println("网站进了一个新用户");
count+=1;
} /**
* 当session销毁时 , 自动执行
*/
@Override
public void sessionDestroyed(HttpSessionEvent event) {
System.out.println("网站离开了一个用户");
count-=1;
} }

MySessionListener.java

【Servlet】Java Serlvet Listener 监听器的更多相关文章

  1. EL&Filter&Listener:EL表达式和JSTL,Servlet规范中的过滤器,Servlet规范中的监听器,观察着设计模式,监听器的使用,综合案例学生管理系统

    EL&Filter&Listener-授课 1 EL表达式和JSTL 1.1 EL表达式 1.1.1 EL表达式介绍 *** EL(Expression Language):表达式语言 ...

  2. [Java] JSP笔记 - Listener 监听器

    Java Web 开发时,可以使用 Listener 来监听来监听一些事件,从而实现一些功能.实际上这个监听器,原理就是 Delphi 中大家常用的各种事件. 1. 那么,监听器的主要用途用哪些呢: ...

  3. Java ---Listener监听器

    在我们的web容器中,一直不断的触发着各种事件,例如:web应用启动和关闭,request请求到达和结束等.但是这些事件通常对于开发者来说是透明的,我们可以根据这些接口开发符合我们自身需求的功能.在w ...

  4. JavaWeb(六)Listener监听器

    监听器 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行. Servlet监听器 在Se ...

  5. 面试之servlet、过滤器、监听器

    servlet.过滤器.监听器servlet是Java中WEB请求和响应的容器servlet的运行需要在类似tomcat容器中,一个 Web 应用对应一个 Context 容器,也就是 Servlet ...

  6. Listener监听器和Filter过滤器

    Listener监听器 WEB中的监听器 WEB 中的 Listener 和 Filter 是属于 Servlet 规范中的高级的技术.WEB中的监听器共有三类八种(监听三个域对象)* 事件源:Ser ...

  7. Servlet3.0的注解自定义原生Listener监听器实战

    简介:监听器介绍和Servlet3.0的注解自定义原生Listener监听器实战 自定义Listener(常用的监听器 servletContextListener.httpSessionListen ...

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

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

  9. java web Listener的简单使用案例

    1.web.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...

随机推荐

  1. Setting a maximum attachment size

      By default IBM® Lotus® iNotes™ allows a maximum attachment size of 50,000K (50MB). You can increas ...

  2. glValidateProgram只用于调试

    glValidateProgram应该只用于调试,用于release版本中会影响性能.以下是详细描述:   Before doing so, however, we might want to che ...

  3. 【Nodejs】外研社小学英语教材一年级起各年级英语音频下载(全)

    两个爬虫合作成的,放在这里分享给有需要的人. 下载地址:https://pan.baidu.com/s/19hJ59SsX9uTfFtBxaRxJ8A 2018年5月10日

  4. 解决jetty runner锁定js

    在web.xml中添加 <servlet> <!-- Override init parameter to avoid nasty --> <!-- file locki ...

  5. Google想出了一个决定人员晋升的算法,然后就没有然后了......

    Google 有点跑偏了,逗死我了~实践一下也好~ Prasad Setty 是 Google People Analytics 团队的副总裁.7 年前 Google 成立的这支团队的职责是收集和利用 ...

  6. css样式小技巧

    1.css样式小技巧 HTML怎样设定使背景图片不随页面滚动而滚动 background-attachment:fixed; 2.实现li a 超过长度内容出现省略号… overflow:hidden ...

  7. 关于extern "C"(详细剖析)

    [目录] 引言 extern “C”的前世今生 小心门后的未知世界 Q&A c++调用c的方法 c调用c++的方法 在你工作过的系统里,不知能否看到类似下面的代码. 这好像没有什么问题,你应该 ...

  8. 简单的tcp聊天

    package com.pers.tcptest; import java.io.IOException; import java.io.InputStream; import java.io.Out ...

  9. Java JDBC编程套路教程

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5847020.html  学习Java开发,一个必须掌握的知识点,就是数据库操作.当程序需要用到的数据达到一定程 ...

  10. django之创建第7个项目-url配置

    1.配置urls.py from django.conf.urls import patterns, include, url #Uncomment the next two lines to ena ...