Listener:即监听器,通过Listener可以监听容器中的某一执行动作,并根据其要求做出相应的响应。
到目前Servlet2.4开始,一共包含8个Listener接口,可以分为三类:
1)、与ServletContext有关的Listener接口:ServletContextListener和ServletContextAttributeListener。
2)、与HttpSession有关的的Listener接口:HttpSessionListener,HttpSessionAttributeListener,HttpSessionBindingListener和HttpSessionActivationListener.
3)、与ServletRequest有关的接口:ServletRequestListener,ServletRequestAttributeListener.
自定义监听器:只需要实现相应的监听器接口并实现其相应方法即可!然后在web.xml中进行监听器的配置。
<listener>
<listener-class>package.class</listener-class>
</listener>
一、ServletContextListener类:
1、ServletContextListener接口:接口中的两个方法:contextInitialized(),用来监听ServletContext的启动和初始化;contextDestroy(),用来监听ServletContext的销毁;这两个方法中都包含一个参数sce,其类型为ServletContextEvent。通过ServletContextEvent对象的getServletContext()方法可以获得ServletContext对象。
package listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyServletContextListener implements ServletContextListener {
//ServletContext创建时调用该方法
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext创建");
//获取ServletContext对象
SerlvetContext context= sce.getServletContext();
}
//ServletContext销毁时调用该方法
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext销毁");
}
}
2、ServletContextAttributeListener接口:用来监听application范围属性变化的监听。三个方法:attributeAdded(),监听application范围属性的添加;attributeReplaced(),监听application范围属性的替换;attributeRemoved(),监听application范围属性的移除。在这三个方法中有一个参数ServletContextAttributeEvent scab,通过ServletContextAttributeEvent 对象的getName()可以获取属性的名称、getValue()获取属性值。
1)、ServletContextAttributeListener监听器
package listener;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
public class MyServletContextAttributeListener implements
ServletContextAttributeListener {
//application范围属性添加时调用
public void attributeAdded(ServletContextAttributeEvent scab) {
System.out.println("添加application范围属性,属性名:" + scab.getName() + ",属性值:" + scab.getValue());
}
//application范围属性移除时调用
public void attributeRemoved(ServletContextAttributeEvent scab) {
System.out.println("移除application范围属性,属性名" + scab.getName());
}
//application范围属性替换时调用
public void attributeReplaced(ServletContextAttributeEvent scab) {
System.out.println("替换application范围属性,属性名" + scab.getName());
}
}
2)、页面实例 ApplicationDEmo.jsp
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>设置application范围属性</title>
</head>
<body>
<%
//添加application范围name属性
application.setAttribute("name","James");
//替换application范围name属性
application.setAttribute("name","123");
//移除application范围name属性
application.removeAttribute("name");
%>
</body>
</html>
二、HttpSession Listener类
1、HttpSessionListener接口:实现Session的初始化和销毁监听。
该接口有两个方法:sessionCreated(),session的创建和初始化监听;
sessionDestroyed(),监听session的销毁。
两个方法中都包含一个参数: HttpSessionEvent se,调用其getSession()方法可以获取Session对象。
1)、HttpSessionListener类
package listener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MyHttpSessionListener implements HttpSessionListener{
//session创建时调用该方法
public void sessionCreated(HttpSessionEvent se) {
HttpSession session = se.getSession();
System.out.println("创建session,ID为" + session.getId());
}
//session销毁时调用该方法
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("销毁session");
}
}
2)、JSP实例:SessionDemo.jsp
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>销毁session</title>
</head>
<body>
<%
session.invalidate();//销毁session
%>
</body>
</html>
2、HttpSessionAttributeListener接口:用来监听session范围属性变化的监听。三个方法:attributeAdded(),监听session范围属性的添加;attributeReplaced(),监听session范围属性的替换;attributeRemoved(),监听session范围属性的移除。在这三个方法中有一个参数HttpSessionAttributeEvent se,通过HttpSessionAttributeEvent 对象的getName()可以获取属性的名称、getValue()获取属性值。
1)、HttpSessionAttributeListener监听器
package listener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class MyHttpSessionAttributeListener implements
HttpSessionAttributeListener {
//session范围属性添加时调用
public void attributeAdded(HttpSessionBindingEvent se) {
System.out.println("添加session范围属性,属性名:" + se.getName() + ",属性值:" + se.getValue());
}
//session范围属性移除时调用
public void attributeRemoved(HttpSessionBindingEvent se) {
System.out.println("移除session范围属性" + se.getName());
}
//session范围属性替换时调用
public void attributeReplaced(HttpSessionBindingEvent se) {
System.out.println("替换session范围属性" + se.getName());
}
}
2)、JSP实例:SessionAttributeDemo.jsp
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>设置session范围属性</title>
</head>
<body>
<%
//添加session范围name属性
session.setAttribute("name","James");
//替换session范围name属性
session.setAttribute("name","Forward");
//移除session范围name属性
session.removeAttribute("name");
%>
</body>
</html>
分享到:
相关推荐
JAVA WEB开发技术 Listener监听器 事件监听器用于对程序中发生的事件进行监听,在监听的过程中会涉及几个重要组成部分: 事件(Event) 事件源 事件处理器 事件监听器(Listener) 用户的一个操作,如点击一个按钮、...
TcpListener类开发基础服务器及客户端 在vs2005测试通过 功能很简单,初学者可参考一下
TODO Spring注解驱动开发第39讲——你不知道的ApplicationListener的原理
TODO Spring注解驱动开发第38讲——你知道ApplicationListener的用法吗?
Spring注解驱动开发第40讲——你晓得@EventListener这个注解的原理吗?
c#的开发tcp/ip 客户端与服务器,可以实现远程聊天
在开发中为控件添加Listener是非常常见的工作,最简单的添加Listener方式可以这样
梁胜彬等编著的《java web应用开发与实践》结合作者多年的教学与软件开发经验,依据教学大纲,面向技术发展方向,选取主流的java web开发技术和开发工具,内容涵盖了jsp基础、jdbc、setvlet、filter、listener、mvc...
本文使用的开发环境是VS2017及dotNet4.0,写此随笔的目的是给自己及新开发人员作为参考, 本例子比较简单,使用的是控制台程序开发,若需要使用该软件作为演示,必须先运行服务端,再运行客户端。 因为是首次接触该...
Laravel开发-laravel-events 用于将事件列表添加到站点的Laravel4包
JAVA EE 开发手册 JavaEE是一个开放的、 基于标准的平台,用以开发、部署和管理N层结构、面向Web的,以服务器为中心的企业级应用。 JavaEE的具有可扩展性、性能和可靠性。...8、监听器Listener 9、注解( Annotation)
对TcpListener进行封装,支持ssl模式,可以完成高并发任务。以后可能会更新静态文件的访问,即网页访问。 使用方法一 public void Http1() { 先继承异常接口,这里把测试的访问函数也写在一个类中,实际不需
通过java 自带的awt 和swing 库进行GUI 设计和开发,同时使用java 自带的graphic2D 库来实现基本图形的绘制和应用,以及对于颜色的设置和对于component 的移动和大小改 变。其中使用了java 的对于鼠标的监控功能来...
在开发模式下运行: $ _build/default/rel/instagram_listener/bin/instagram_listener console 请记住在config/sys.config所有需要的变量。 Instagram 侦听器运行后,您可以使用发布外壳内的模块client.erl订阅...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
Herm是一套快速开发高性能的网络应用的C++库。比如开发网络游戏、即时通信、流媒体、文件下载、P2P等基于TCP/IP网络应用。 Herm包括三个组件: (1)Utilities 最基础的组件,提供线程、一读一写线程不加锁的...
logging-aspect 项目中日志收集实现AOP 和 Listener两种全局实现