`
勤业思行
  • 浏览: 83745 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

Listener开发

阅读更多

 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>

 

 

 

0
0
分享到:
评论
1 楼 El_Nino 2012-06-26  
mark,多谢分享了

相关推荐

    listener我的listener listener我的listener

    在IT行业中,Listener是一个非常关键的概念,特别是在Java和Web开发领域。Listener是一种接口或类,它们用于监听特定事件的发生,并在这些事件发生时执行相应的处理逻辑。标题中的"listener我的listener listener我...

    TcpListener异步通信

    在IT行业中,网络通信是软件开发中的重要组成部分,TCP(Transmission Control Protocol)作为传输层的协议,被广泛用于建立可靠的、面向连接的数据传输。本文将深入探讨如何使用C#实现一个简单的TcpListener来支持...

    TcpListener 监听服务端

    TcpListener 是 .NET Framework 中用于创建 TCP 服务器端应用...理解和熟练使用 TcpListener 对于开发网络应用程序至关重要。在实际项目中,你还需要考虑异常处理、安全性、性能优化等因素,确保服务的稳定性和效率。

    JavaWeb开发技术-Listener监听器.pptx

    JavaWeb开发技术中的Listener监听器是Java企业级应用开发中的重要组成部分,主要用于监听应用程序中发生的特定事件,并在事件发生时执行相应的处理逻辑。监听器在JavaWeb开发中扮演着关键角色,它们允许开发者对Web...

    c# socket 、TCPClient、TCPListener 用法详解.doc

    C# Socket、TCPClient、TCPListener 用法详解 C# 中的 Socket 编程是基于 Windows Sockets (Winsock) 接口的托管实现,提供了一个强大且灵活的网络编程模型。在本文中,我们将详细介绍 C# 中的 Socket 编程,包括 ...

    handler与listener的区别

    在ExtJS框架中,`handler`和`listener`都是用于响应用户交互的关键概念,它们各自有不同的使用场景和特点。理解两者的区别对于有效管理和组织应用的...在实际开发中,根据具体需求选择合适的事件处理方式是非常重要的。

    java jsp listener小用法

    在JSP中,监听器(Listener)是Servlet API的一部分,属于事件驱动模型,可以监听特定的事件并进行响应。本篇文章将深入探讨如何使用Java JSP的监听器来实现用户登录次数的记录。 一、理解监听器(Listener) 在...

    Tomcat中--Error listenerStart错误的解决方案

    在Java Web应用开发过程中,经常遇到的一个问题是Tomcat启动时出现“Error listenerStart”这样的异常信息。本文将详细介绍这一问题的原因、可能涉及的因素以及具体的解决方法。 #### 一、问题背景 在部署Spring ...

    c# tcplistener tcp监控

    在IT行业中,网络编程是不可或缺的一部分,特别是在使用C#进行开发时。`TcpListener`类是.NET Framework提供的一种用于创建TCP服务器的关键工具。本篇将深入探讨`TcpListener`类在C#中的应用以及如何实现TCP监控。 ...

    杂记(一):Listener、Filter和工具

    在IT领域,Listener、Filter和工具是Web开发中不可或缺的部分,它们在构建高效、可扩展的应用程序中扮演着重要角色。下面将详细讲解这三个概念及其相关知识点。 首先,Listener(监听器)是Java Servlet规范中的一...

    Listener单点登录与显示在线用户

    Listener在IT领域中通常指的是监听器,特别是在Java和Web开发中,它是一个接口或类,用于监听特定事件的发生。在本场景中,“Listener单点登录与显示在线用户”涉及到的技术点主要是网络应用中的身份验证、会话管理...

    严重: Error listenerStart

    标题 "严重: Error listenerStart" 是一个典型的Java应用在启动时遇到的问题,通常与日志监听器或事件处理机制有关。这个问题可能出现在使用了Apache Log4j库的应用中,Log4j是一个广泛使用的日志记录框架,用于收集...

    TcpListener 和TcpClient使用总结

    ### TcpListener 和 TcpClient 使用总结 #### 一、概述 在C#的.NET框架中,TCP...总之,通过合理地使用 **TcpListener** 和 **TcpClient** 类,可以在C#中轻松地实现TCP/IP通信,这对于开发网络应用程序至关重要。

    TcpListener类开发基础服务器及客户端 vs2005 小例子

    在.NET框架中,`TcpListener`是用于创建TCP服务器端应用程序的关键类,它允许程序监听来自网络的TCP连接请求。本篇文章将深入讲解如何利用C#语言和`TcpListener`来构建一个基础的服务器和客户端应用程序,并在Visual...

    基于C# 的TcpClient/TcpListener的一对多的网络通信程序源码

    在IT行业中,网络通信是至关重要的一个领域,尤其是在开发客户端-服务器应用时。本文将深入探讨基于C#的TcpClient和TcpListener类如何用于构建一对一或多对多的网络通信程序,以及如何在Winform环境中实现这样的系统...

    TcpListener服务器

    在IT行业中,网络通信是至关重要的一个领域,尤其是在开发服务器端应用时。`TcpListener`是C#中用于实现TCP服务器的关键组件,它允许我们创建一个可以监听特定端口并处理来自客户端连接请求的服务。本篇文章将深入...

    Android Listener侦听的N种写法

    在Android开发中,Listener接口是实现用户交互和事件处理的关键组件。它们允许应用程序对用户的操作进行响应,如点击按钮、滑动屏幕等。本篇文章将深入探讨Android中Listener的多种实现方式,帮助开发者更好地理解和...

    C#,winform,Tcp通信源码 使用TcpListener和TcpClient 源码

    在.NET框架中,C#语言提供了丰富的网络编程接口,其中包括TcpListener和...理解并掌握这两类的使用方法对于开发网络应用至关重要。通过深入研究提供的源码,可以进一步了解TCP通信的细节以及如何在C#环境下实现。

    servlet+filter+listener 详解

    Servlet、Filter 和 Listener 是 JavaEE 中三种重要的组件,它们在 Web 开发中扮演着重要的角色。Servlet 负责处理客户端的请求,Filter 负责过滤和拦截 Web 资源,而 Listener 负责监听Servlet 容器中的事件。

Global site tag (gtag.js) - Google Analytics