Servlet的Listener介绍
当Web应用在Web容器中运行时,Web应用内部会不断地发生各种事件:如Web应用被启动、Web应用被停止、用户session开始、用户session结束等。通常这些Web操作对开发者是透明的。但Servlet API也提供了相应的接口提供调用。
当我们要使用Listener时,只需要两个步骤:
① 定义Listener实现类(实现对应的接口)
② 通过Annotation或在web.xml文件中配置Listener
1、实现Listener类
不同的Web事件对应的监听器也不同,常用的Web事件监听器接口有如下几个:
->ServletContextListener:用于监听Web应用的启动和关闭
->ServletContextAttributeListener:用于监听ServletContext范围(application)内属性的改变
->ServletRequestListener:用于监听用户请求
->ServletRequestAttributeListener:用于监听ServletRequest范围(request)内属性的改变
->HttpSessionListener:用于监听用户session的开始和结束
->HttpSessionAttributeListener:用于监听HttpSession范围(session)内属性的改变
一般来说,需要监听哪些Web时间就实现对应接口的方法即可。
2、配置Listener
实现了Listener类之后,还需要配置Listener。你可以选择Annotaion方式或web.xml方式。
Annotation方式:只需使用@WebListener修饰Listener实现类即可(要求Servlet3.0以上)
web.xml方式的配置:
<listener>
<!-- 指定Listener的实现类 -->
<listener-class>lee.GetConnListener</listener-class>
</listener>
下面举一个监听Web应用启动的例子:
首先,实现Listener类(实现ServletContextListener接口):
package com.chanshuyi.listener; import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; public class StartUpListener implements ServletContextListener { /**
* 关闭操作
*/
public void contextDestroyed(ServletContextEvent sc) {
System.out.println("------------------ Tomcat关闭! ------------------");
} /**
* 启动初始化
*/
public void contextInitialized(ServletContextEvent sc) {
//获取application。无法获取request/response/session
//ServletContext application = sc.getServletContext();
System.out.println("------------------ Tomcat启动! ------------------");
}
}
接着,在web.xml中配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<!-- 指定Listener的实现类 -->
<listener-class>com.chanshuyi.listener.StartUpListener</listener-class>
</listener>
</web-app>
MARK:使用@WebListener注解的时候出错,不知道是什么原因。(MARK CHENYR)
如果要监听其他Web应用事件,那么只是实现的接口不同而已。其他都是一样的。
Servlet的Listener介绍的更多相关文章
- ServletContextInitializer添加 servlet filter listener
ServletContextInitializer添加 servlet filter listener https://www.cnblogs.com/pomer-huang/p/9639322.ht ...
- servlet filter listener interceptor 知识点
这篇文章主要介绍 servlet filter listener interceptor 之 知识点.博文主要从 概念,生命周期,使命介绍其区别.详情如下: 概念 生命周期 使命 servlet ...
- JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)
JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference
- SpringBoot学习笔记(6)----SpringBoot中使用Servlet,Filter,Listener的三种方式
在一般的运用开发中Controller已经大部分都能够实现了,但是也不排除需要自己实现Servlet,Filter,Listener的方式,SpringBoot提供了三种实现方式. 1. 使用Bean ...
- spring boot中使用servlet、listener和filter
spring boot中支持使用java Web三大组件(servlet.listener和filter),但是坑比较多,主要是spring boot内嵌tomcat和独立tomcat服务器有一些细节 ...
- SpringBoot---注册Servlet,Filter,Listener
1.概述 1.1.当使用 内嵌的Servlet容器(Tomcat.Jetty等)时,将Servlet,Filter,Listener 注册到Servlet容器的方法: 1.1.1.直接注册Bean ...
- servlet/filter/listener/interceptor区别与联系
转自:http://www.cnblogs.com/doit8791/p/4209442.html servlet.filter.listener是配置到web.xml中(web.xml 的加载顺序是 ...
- Java中Filter、Servlet、Listener的学习
1.Filter的功能filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个reques ...
- 转 Java中Filter、Servlet、Listener的学习
1.Filter的功能filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个requ ...
随机推荐
- js函数定义及一些说明
1.javascript定义函数的三种方法一.function语句//这个方法比较常用function fn(){ alert("这是使用function语句进行函数定义");}f ...
- Python游戏开发——打砖块
打砖块游戏向来大家也不会很陌生,今天来用python来开发一下这个小游戏 1.引用对应数据库 import pygame from pygame.locals import * import sys, ...
- Java自学-集合框架 泛型Generic
ArrayList上使用泛型 步骤 1 : 泛型 Generic 不指定泛型的容器,可以存放任何类型的元素 指定了泛型的容器,只能存放指定类型的元素以及其子类 package property; pu ...
- npm 查看全局安装模块
方法一: npm list -g --depth 0 方法二: 输入npm root -g 得到全局node_modules的地址 在任意文件夹输入此地址,便可查看所安模块 https://blog ...
- Web点击链接调起手机系统自带短信发短信
实现代码如下: 一.Html代码 <a href="javascript:;" class="xq-sms">发送短信</a> 二.jQ ...
- 史上最全的Spring Boot Cache使用与整合
一:Spring缓存抽象# Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接 ...
- Django 练习班级管理系统三 -- 分页
在 user_manager 项目下创建一个 python package:utils,里面创建一个 page.py 文件 page.py 文件内容为: # 创建一个 PagerHelper 类 cl ...
- GCN实现3
参考 : 首先看两篇论文,大概了解一下原理性的东西: GRAPH CONVOLUTIONAL NETWORKS THOMAS KIPF, 30 SEPTEMBER 2016 http://tkipf. ...
- windows 下 创建项目的虚拟环境
一. 为何使用虚拟环境 虚拟环境是Python解释器的一个私有副本,在这个环境你可以安装私有包,而且不会影响系统中安装的全局Python解释器. 在这个虚拟环境中的所有安装包,都是针对此环境的,不会被 ...
- 关于苹果macOS更新到Catalina后出现的各种问题(持续更新)
一.Mac系统更新后 Git 不能用,提示 missing xcrun at:xxx xcrun: error: invalid active developer path (/Library/Dev ...