`
tianhei
  • 浏览: 211577 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Listener小例子

阅读更多

监听器Listerer的作用是监听ServletContext、ServletContextAttribute、HttpSession、HttpSessionAttribute事件的监听。

具体包括监听:上下文初始化、上下文销毁、上下文属性增加、上下文属性删除、上下文属性替换、Session创建、Session销毁、向Session里添加属性、从Session里删除属性、Session里属性替换等等。

当发生以上事件时,就会触发监听器的执行,但是前提是自定义的监听器需要实现上面功能的接口。

 

监听器随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。

监听器应用案例:

1、统计当前在线人员。

2、对象的初始化,因为监听器的初始化是在容器启动之前。例如:

     使用spring框架,就需要在web.xml中配置spring的一个listener,在tomcat启动的时候就会初始化spring

     初始化数据库连接

 

自定义的监听器可能实现的相关接口:

ServletContextListener:Servlet上下文

ServletContextAttributeListener:Servlet上下文属性

HttpSessionListener:Session

HttpSessionAttributeListener:Session属性操作

 

ServletContextListener接口的方法:

public void contextInitialized(ServletContextEvent event);//上下文初始化

public void contextDestroyed(ServletContextEvent event);//上下文销毁

 

ServletContextAttributeListener接口的方法:

public void attributeAdded(ServletContextAttributeEvent event);//增加属性

public void attributeRemoved(ServletContextAttributeEvent event);//删除属性

public void attributeReplaced(ServletContextAttributeEvent event);//替换属性

 

HttpSessoinListener接口的方法:

public void sessionCteated(HttpSessionEvent event);//session创建

public void sessionDestroyed(HttpSessionEvent event);//session销毁

 

HttpSessionAttributeListener接口的方法:

public void attributeAdded(HttpSessoinBindingEvent event);//增加属性

public void attributeRemoved(HttpSessoinBindingEvent event);//删除属性

public void attributeReplaced(HttpSessoinBindingEvent event);//替换属性

 

MyListener.java

package com.vmn;

import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionBindingEvent;

public class MyListener implements ServletContextListener,ServletContextAttributeListener,HttpSessionListener,HttpSessionAttributeListener{
	
	public void contextInitialized(ServletContextEvent event){
		System.out.println("contextInitialized");
	}
	public void contextDestroyed(ServletContextEvent event){
		System.out.println("contextDestroyed");
	}
	public void attributeAdded(ServletContextAttributeEvent event){
		System.out.println("context attributeAdded");
	}
	public void attributeRemoved(ServletContextAttributeEvent event){
		System.out.println("context attributeRemoved");
	}
	public void attributeReplaced(ServletContextAttributeEvent event){
		System.out.println("context attributeReplaced");
	}
	public void sessionCreated(HttpSessionEvent event){
		System.out.println("sessionCreated");
	}
	public void sessionDestroyed(HttpSessionEvent event){
		System.out.println("sessionDestroyed");
	}
	public void attributeAdded(HttpSessionBindingEvent event){
		System.out.println("session attributeAdded");
	}
	public void attributeRemoved(HttpSessionBindingEvent event){
		System.out.println("session attributeRemoved");
	}
	public void attributeReplaced(HttpSessionBindingEvent event){
		System.out.println("session attributeReplaced");
	}
}

 

 

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
    <servlet>
		<servlet-name>testlistener</servlet-name>
		<servlet-class>com.vmn.TestListener</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>testlistener</servlet-name>
		<url-pattern>/tl</url-pattern>
	</servlet-mapping>
	<listener>
		<listener-class>com.vmn.MyListener</listener-class>
	</listener>
</web-app>

 14到16行定义了一个Listener:com.vmn.MyListener

 

当在web应用中的servlet中触发了MyListener.java中定义的那10个事件的时候,就会触发这10个方法的执行。

 

相关API:

javax.servlet.ServletContextEvent;

javax.servlet.ServletContextAttributeEvent;

javax.servlet.http.HttpSessionEvent;

javax.servlet.http.HttpSessionBindingEvent;

 

 

分享到:
评论
1 楼 rxin2009 2012-09-12  
文章很好,学习了,有一个问题呀请教lz:怎么去卸载一个监听器呢?

相关推荐

    servlet--listener 各种接口的简单例子

    本教程将深入讲解如何使用Listener的各种接口,并通过简单易懂的例子帮助你快速掌握这些知识。 首先,我们来了解什么是Servlet监听器(Listener)。Servlet监听器是实现了Java Servlet API中特定接口的类,当Web...

    tcp listener实例

    在TCP中,监听(Listener)是服务器端的一个关键概念,它用于等待并接受来自客户端的连接请求。在这个“tcp listener实例”中,我们将探讨如何利用TCP异步传输技术来实现一个简单的邮件接收服务。 异步传输是相对于...

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

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

    Servlet小例子源码

    总的来说,这个"Servlet小例子源码"涵盖了Java Web开发的基础知识,是学习和理解Servlet、Filter和Listener功能和用法的理想资源。通过深入研究和实践,初学者可以快速提升自己的Java Web开发技能。

    listener监听器demo

    标题"listener监听器demo"和描述"listener监听器小例子"暗示我们将探讨的是一个关于`Listener`的示例代码。 首先,让我们从Java GUI编程的角度来看`Listener`。在Swing或AWT中,我们经常使用各种类型的`Listener`,...

    C# TcpListener/TcpClient Demo

    这个简单的例子展示了`TcpListener`和`TcpClient`在C#中的基本用法。在实际应用中,为了确保可靠性和性能,还需要考虑错误处理、多线程处理连接、数据编码解码、以及适当关闭资源等问题。同时,为了适应更复杂的网络...

    listener 实例

    监听实例 记录 远程登录监听实例 记录 远程登录监听实例 记录 远程登录

    Listener、Filter、Servlet与Java Web项目初始化项目例子 源代码

    举个例子:我在国内某公司曾经负责维护公司内部的全球通信系统的服务端,公司员工在10W人以上,需要初始化的内容就是将这10W多的用户信息,在系统启动时就初始化到缓存中,用户通过客户端登陆,像服务端发出请求后,...

    TcpListener通信.rar

    以下是一个异步多客户端通信的例子: ```csharp async Task ListenAsync(TcpListener listener) { while (true) { TcpClient client = await listener.AcceptTcpClientAsync(); // 异步等待客户端连接 Console....

    java listener监听器教程及实例

    在这个例子中,`com.example.MyServletContextListener`是实现了`ServletContextListener`接口的一个类。容器会在适当的时候调用该类中的`contextInitialized()`和`contextDestroyed()`方法。 #### 四、总结 监听...

    swing编程小例子

    在"swing编程小例子"这个主题中,我们可以深入探讨几个核心的Swing概念和技术,通过以下几个压缩包子文件的示例来学习: 1. **Demo**: 这个基本的Demo通常会包含Swing的基本用法,如创建窗口(JFrame)、添加组件...

    C#网络编程TCP通信实例程序简单设计,采用自带 TcpClient和TcpListener设计一个Tcp通信的例子

    TcpListener listener = new TcpListener(IPAddress.Any, 端口号); listener.Start(); ``` 当有客户端连接请求时,`TcpListener`的`AcceptTcpClient`方法会阻塞,直到接收到一个连接。之后,服务器可以处理这个连接...

    10.Listener.doc

    在这个例子中,`&lt;listener-class&gt;` 是 `com.anllin.listener.MyServletContextListener`。 2. **ServletContextAttributeListener**: `ServletContextAttributeListener` 是另一个接口,提供了对 ServletContext ...

    android使用json小例子

    在这个“android使用json小例子”中,我们将探讨如何在Android平台上处理JSON数据,这对于新程序员来说是一个基础且重要的学习阶段。 在Android中,JSON的使用通常涉及到以下几个关键知识点: 1. **JSON对象与JSON...

    cocos2dx小例子

    《cocos2dx小例子——探索游戏开发的奇妙之旅》 Cocos2dx是一个开源的游戏开发框架,基于C++,并提供了多种语言接口,如Lua和JavaScript,它为开发者提供了强大的2D游戏开发能力。本小例子将带你深入理解cocos2dx的...

    Fragment与Activity通信的小例子

    本教程将通过一个实际的小例子来详细阐述如何实现Fragment与Activity的通信。 首先,我们来看Fragment与Activity通信的基本原理。通常,有两种主要的通信方式:使用回调接口和通过Bundle传递数据。 1. **回调接口*...

    STRUTS:listener监听器

    接下来,我们通过一个具体的例子来展示如何使用监听器来监控用户的上线与退出。 ##### 3.1 登录页面:Login.jsp ```jsp ;charset=gb2312"%&gt; session = request.getSession(false); if (session != null) { ...

    oracle listener监听8080.doc

    你可以通过运行`lsnrctl start`命令来启动监听器,并使用`lsnrctl status`来检查其状态,如文档中的例子所示。这将显示监听器正在监听哪个端口以及相关的配置信息,例如主机名、版本信息、日志文件位置等。 当遇到...

    异步http listener 完全并发处理惩罚http恳求的小例子

    这个小例子展示了如何使用异步HTTP监听器(HttpListener)实现完全并发处理HTTP请求。以下是对该代码的详细解释和相关知识点: 1. **HttpListener类**:HttpListener是.NET Framework中的一个类,用于接收HTTP请求...

    一个servlet的小例子

    在这个"一个servlet的小例子"中,我们将深入理解servlet的工作原理以及如何在实际项目中使用它们。 首先,"helloServlet"是这个示例程序的名字,通常它会继承自javax.servlet.http.HttpServlet类,并重写其doGet或...

Global site tag (gtag.js) - Google Analytics