1、
什么是监听器
针对于整个Web
环境的监听,主要有三大类:
ServletContext:对
Servlet
上下文监听
Session:对
Session
监听
Request:对
Request
监听
2、
ServletContext,相当于
JSP
的
application
对象
定义了一个Servlet
的环境对象,通过这个对象,
Servlet
引擎向
Servlet
提供环境信息。 一个
Servlet
的环境对象必须至少与它所驻留的主机是一一对应的。在一个处理多个虚拟主 机的
Servlet
引擎中(例如,使用了
HTTP1.1
的主机头域),每一个虚拟主机必须被视为一 个单独的环境。此外,
Servlet
引擎还可以创建对应于一组
Servlet
的环境对象
。
3、
实现监听就是实现一系列的接口,对ServletContext
的监听,就是对容器的初始化、销毁、属性的操作进行监听,需要实现以下两个接口:
ServletContextListener
和
ServletContextAttributeListener
。
ServletContextListener
接口实现对整个Servlet
的启动和销毁监听,有下面两个方法:
public void
contextInitialized
(
ServletContextEvent
sce)
:监听
servlet初始化,在服务器启动时
public void
contextDestroyed
(
ServletContextEvent
sce)
:监听
servlet销毁,在服务器销毁时
ServletContextEvent
事件,取得一个
ServletContext(application)对象:
public ServletContext getServletContext();
ServletContextAttributeListener
接口对
Servlet上下文属性进行监听,有三个方法:
attributeAdded
(
ServletContextAttributeEvent
scab)
:增加属性,
setAttribute
attributeRemoved
(
ServletContextAttributeEvent
scab)
:删除属性,
removeAttribute
attributeReplaced
(
ServletContextAttributeEvent
scab)
:替换属性,第二次设置同一属性
ServletContextAttributeEvent
事件,取得所设置属性的名称和值:
public String
getName
()
:得到属性的名称
public String
getValue
()
:得到属性的值
4、
对ServletContext
监听例子
package com.xxx.xxx.xxx;
import javax.servlet.* ;
public class ServletContextDemo
implements ServletContextListener,ServletContextAttributeListener{
private ServletContext application = null ;
// 实现方法
public void contextInitialized(ServletContextEvent sce){
this.application = sce.getServletContext() ;
System.out.println("** 上下文初始化
...") ;
System.out.println("** 当前虚拟目录的绝对路径:
"+this.application.getRealPath("/")) ;
}
public void contextDestroyed(ServletContextEvent sce){
System.out.println("** 上下文销毁
...") ;
}
public void (ServletContextAttributeEvent scab){
System.out.println("** 增加属性:
"+scab.getName()+" --> "+scab.getValue()) ;
}
public void attributeRemoved(ServletContextAttributeEvent scab){
System.out.println("** 删除属性:
"+scab.getName()+" --> "+scab.getValue()) ;
}
public void attributeReplaced(ServletContextAttributeEvent scab){
System.out.println("** 替换属性:
"+scab.getName()+" --> "+scab.getValue()) ;
}
}
在web.xml
文件中注册监听器
<listener>
<listener-class>com.xxx.xxx.xxx</listener-class>
</listener>
在容器启动时执行contextInitialized()
方法,容器销毁时执行
contextDestroyed()
方法,有属性的变动时执行
attributeAdded
、
attributeRemoved
、
attributeReplaced
这几个方法,该监听器是针对整个
ServletContext
上下文的,相当于
application
,而不是针对某个用户的。
5、
对session
的监听
监听session
的创建、销毁、属性操作等。
Session
属性
http
协议下的内容,所以需要实现的两个接口都在
javax.servlet.http
包下:
HttpSessionListener
对session
的整体状况进行监听,需要重写下面两个方法:
sessionCreated
(
HttpSessionEvent
se)
:session
创建
sessionDestroyed
(
HttpSessionEvent
se)
:session
销毁
HttpSessionEvent
事件,getSession()
方法取得当前
session
HttpSessionAttributeListener
,对session
属性的监听,重写下面三个方法:
attributeAdded
(
HttpSessionBindingEvent
se)
:新增属性
attributeRemoved
(
HttpSessionBindingEvent
se)
:删除属性
attributeReplaced
(
HttpSessionBindingEvent
se)
:替换属性
HttpSessionBindingEvent
事件,有三个方法:
String
getName
()
:取得属性名
HttpSession
getSession
()
:取得当前session
Object
getValue
()
:取得属性值
6、
session监听例子
package
com.xxx.xxx.xxx
;
import javax.servlet.http.* ;
public class HttpSessionDemo implements HttpSessionListener,HttpSessionAttributeListener{
private HttpSession session ;
// 实现方法
public void sessionCreated(HttpSessionEvent se){
this.session = se.getSession() ;
System.out.println("** Session 创建
....") ;
System.out.println("** SessionID --> "+this.session.getId()) ;
}
public void sessionDestroyed(HttpSessionEvent se){
System.out.println("** Session 销毁
....") ;
}
public void attributeAdded(HttpSessionBindingEvent se){
System.out.println("** Session 增加属性
:"+se.getName()+" --> "+se.getValue()) ;
}
public void attributeRemoved(HttpSessionBindingEvent se){
System.out.println("** Session 删除属性
:"+se.getName()+" --> "+se.getValue()) ;
}
public void attributeReplaced(HttpSessionBindingEvent se){
System.out.println("** Session 替换属性
:"+se.getName()+" --> "+se.getValue()) ;
}
}
在web.xml
文件中注册监听器
<listener>
<listener-class>
com.xxx.xxx.xxx
</listener-class>
</listener>
7、
session的销毁
有两种方式能让session
销毁,一种是
session
超时自动销毁,可以在
web.xml
文件中配置超时时间:
<session-config>
<session-timeout>10</session-timeout><!--分钟
-->
</session-config>
另一种是调用session
的
invalidate()
方法使其销毁。
相关推荐
Java监听器的实现和原理详解 Java监听器是一种非常重要的设计模式,在Java中广泛应用于事件驱动编程。监听器模式的主要思想是将事件源和事件处理器分离,使得事件源可以独立于事件处理器,提高了系统的灵活性和可...
监听器模式是Java设计模式中的一种行为型模式,主要用于监听某些事件的发生,并在事件发生时自动执行预定义的操作。在实际开发中,监听器模式可以用于多种场景,如UI事件处理、事件广播、异步通知等。 在监听器模式...
Oracle监听器是Oracle数据库系统的重要组成部分,它负责管理和控制数据库实例与客户端应用程序之间的网络通信。在Oracle数据库环境中,监听器是运行在服务器端的一个后台进程,它的主要职责是监听来自客户端的连接...
在Java Swing中,有多种类型的监听器,例如动作监听器(ActionListener)、鼠标监听器(MouseListener)、键盘监听器(KeyListener)和窗口监听器(WindowListener)等。例如,如果我们想要在用户点击按钮时执行某些...
在Android开发中,事件监听器(Event Listeners)是实现用户交互和响应各种事件的关键机制。标题提到的“android 外部类作为事件监听器类”是指将一个非匿名类(外部类)作为事件处理的对象,这在某些情况下可能是...
### Java监听器添加:四种监听器(内部、外部、内部匿名、自身) #### 一、引言 在Java中,监听器(Listener)是事件处理机制的重要组成部分,它主要用于响应用户或其他组件产生的事件。根据实现方式的不同,可以...
在IT行业中,监听器(Listener)和过滤器(Filter)是两种非常重要的组件,它们在Web应用程序中扮演着不可或缺的角色。本文将详细讲解如何利用监听器进行访问计数以及通过过滤器来过滤非法字符,以确保系统的安全性...
### 基于RBAC与监听器机制设计作业管理软件 #### 一、项目背景与目标 本项目旨在设计一款适用于教育场景中的作业管理系统,利用角色基础的访问控制(Role-Based Access Control,简称RBAC)及监听器机制来实现安全...
1. **创建监听器类**:你需要创建一个类,并实现相关事件监听器接口。例如,如果你要处理鼠标事件,可以创建一个类实现MouseListener接口。 ```java public class MyMouseListener implements MouseListener { @...
### 如何配置Oracle监听器 在Oracle数据库管理与维护中,正确配置监听器是确保数据库服务正常运行的关键步骤之一。监听器的主要职责是接收客户端连接请求,并将其分发到相应的数据库实例。如果监听器配置不当,则会...
在Java GUI编程中,AWT和Swing提供了多种类型的监听器,如动作监听器(ActionListener)、鼠标监听器(MouseListener)、键盘监听器(KeyListener)以及组件监听器(ComponentListener)等。这些监听器允许我们对...
在JavaServer Faces (JSF)框架中,监听器和转换器是两个重要的组件,它们用于增强用户界面与后台数据处理的交互。在这个项目中,我们深入探讨了如何在JSF中有效地利用这两种机制。 首先,我们要理解JSF监听器的作用...
"Oracle 监听器深入讲解" Oracle 监听器是 Oracle 数据库的核心组件之一,负责管理 Oracle 数据库和客户端之间的通讯。下面是 Oracle 监听器的详细知识点: 1. Oracle 监听器概念 Oracle 监听器是一个独立的操作...
事件监听器的实现方式有多种,本篇文章将介绍四种常见的事件监听器实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器和内部类作为事件监听器。 1. 自身类作为事件监听器 在这个...
### Java监听器和过滤器详解 #### 监听器概念及分类 监听器在Java Web开发中扮演着非常重要的角色,主要用于监听特定容器事件的发生,比如服务器对象的创建与销毁等,并根据这些事件做出相应的处理。它的工作原理...
当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。 例如:创建一个“人”类Class Person 人拥有吃的方法public void eat(){},我们的目的是,在这个人吃之前要提醒他洗手,所以我们要...
Web监听器是Java Web应用程序中的一个重要组件,它们允许开发者在特定事件发生时执行代码,比如在Servlet上下文初始化或销毁时、用户会话创建或结束时等。在Java Web开发中,监听器通过实现特定接口并配置在`web.xml...
在Java Web开发中,监听器(Listener)是不可或缺的一部分,它们可以用来监听应用程序中的特定事件,比如用户登录、会话创建或销毁等。本项目"一个简单的监听器案例项目"旨在帮助开发者理解如何在实际应用中使用监听...
### Java监听器基础知识与实践 #### 一、Java监听器概念 在Java中,监听器是一种用于处理特定事件的对象。当某个事件发生时(如按钮点击、键盘输入等),监听器将被调用来执行相应的操作。Java中的监听器机制是基于...
PLSQL配置监听器 PLSQL配置监听器是指在Oracle服务器上配置监听器,以便于远程访问数据库。监听器是Oracle Net组件之一,负责监听来自客户端的连接请求,并将其路由到相应的数据库实例。 在配置监听器之前,需要...