`
m635674608
  • 浏览: 5030900 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JavaWeb监听器

 
阅读更多

监听器的作用

监听你的web应用,监听许多信息的初始化,销毁,增加,修改,删除值等。当被监听对象发生上述事件后,监听器某个方法将立即被执行。

常用的有:1、统计在线人数和在线用户。2、系统加载时进行信息的初始化工作。3、统计网站的访问量。4、跟Spring结合。

监听器的类型

按监听的对象划分,servlet2.4规范定义的有三种

1.用于监听应用程序环境对象(ServletContext)的事件监听器。

2.用于监听用户会话对象(HttpSession)的事件监听器。

3.用于监听请求消息对象(ServletRequest)的事件监听器。

 

按监听的事件划分

1.用于监听域对象自身的创建和销毁。

2.用于监听域对象中的属性的增加和删除。

3.用于监听绑定到HttpSession域中的某个对象的状态。

 

详细介绍

1. Servlet上下文进行监听(Application级): 

用于监听 ServletContext对象的创建和删除以及属性的添加、删除和修改等操作,该监听器需要用到如下两个接口类: 

ServletContextAttributeListener:监听对 ServletContext 属性的操作,比如增加、删除、修改。

ServletContextListener:监听对 ServletContext  对象的创建和删除。

2、监听HTTP会话(Session级)

用于监听 HTTP 会话活动情况和 HTTP 会话中的属性设置情况,也可以监听 HTTP 会话的 active 和 passivate 情况等,该监听器需要用到如下多个接口类: 

1) HttpSessionListener:监听 HttpSession 的操作 

      sessionCreate(HttpSessionEvent se)         初始化时调用; 

      sessionDestroyed(httpSessionEvent se)    销毁时调用,即当用户注销时调用 

2) HttpSessionActivationListener:用于监听 HTTP 会话的 active 和 passivate 情况 

3) HttpSessionAttributeListener:监听 HttpSession 中的属性操作 

      attributeAdded(HttpSessionBindingEvent se)         添加属性时调用 

      attributeRemoved(HttpSessionBindingEvent se)    删除属性时调用 

      attributeReplaced(HttpSessionBindingEvent se)    修改属性时调用 

3. 对客户端请求进行监听(Request级): 

用于对客户端的请求进行监听是在 Servlet2.4 规范中新添加的一项新技术,需要实现如下接口ServletRequestListener。

针对监听器类型分类进行代码演示

演示对客户端请求进行监听

package com.springapp.mvc.Listener;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;

/**
 * 对客户端请求进行监听(Request级)
 *
 * 监听ServletRequest对象的创建和销毁,需要实现ServletRequestListener接口。
 *
 *
 * @author Leizhi 2016/5/25
 * @see
 * @since 1.0
 */
public class ServletRequestListenerDemo implements ServletRequestListener
{
	@Override
	public void requestDestroyed(ServletRequestEvent servletRequestEvent)
	{
		System.out.println("----------监听到ServletRequest对象的创建---------");
	}

	@Override
	public void requestInitialized(ServletRequestEvent servletRequestEvent)
	{
		System.out.println("----------监听到ServletRequest对象的销毁---------");

	}
}
演示监听HTTP会话(Session级),实现在线人数监听

package com.springapp.mvc.Listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * 监听HTTP会话(Session级)
 *
 * 作用:1、监听 HTTP会话活动情况,即创建、销毁。须实现HttpSessionListener接口。
 * 2、监听HTTP 会话中的属性设置情况。须实现HttpSessionAttributeListener接口。
 * 3、监听 HTTP 会话的 active 和 passivate 情况。须实现HttpSessionActivationListener接口。
 * 此处由于篇幅限制仅演示监听HTTP会话活动情况。
 *
 * 通过监听http会话实现在限人数统计
 *
 * @author Leizhi 2016/5/25
 * @see
 * @since 1.0
 */
public class HttpSessionListenerDemo implements HttpSessionListener
{
	@Override
	public void sessionCreated(HttpSessionEvent httpSessionEvent)
	{
		System.out.println("-----------------监听到session创建-----------------");
		ServletContext context = httpSessionEvent.getSession().getServletContext();
		Integer count = (Integer) context.getAttribute("count");
		if (null == count)
		{
			count = 1;
		}
		else
		{
			count += 1;
		}
		context.setAttribute("count", count);//保存人数
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent httpSessionEvent)
	{
		System.out.println("-----------------监听到session销毁-----------------");
		ServletContext context = httpSessionEvent.getSession().getServletContext();
		Integer count = (Integer) context.getAttribute("count");
		count = count-1;
		context.setAttribute("count", count);//保存人数
	}
}

演示对Servlet上下文进行监听(Application级)

package com.springapp.mvc.Listener;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * Servlet上下文进行监听(Application级)
 *
 * 监听 ServletContext对象的创建和删除,需要实现ServletContextListener。
 * 监听ServletContext属性的添加、删除和修改等操作,需要实现ServletContextAttributeListener。
 *
 * @author Leizhi 2016/5/25
 * @see
 * @since 1.0
 */
public class ServletContextListenerDemo implements ServletContextListener, ServletContextAttributeListener
{
	@Override
	public void attributeAdded(ServletContextAttributeEvent servletContextAttributeEvent)
	{
		System.out.println("------------监听到application范围内属性的添加--------------");
		System.out.println("application范围内添加了名为"+servletContextAttributeEvent.getName()+",值为"+servletContextAttributeEvent.getValue()+"的属性");
	}

	@Override
	public void attributeRemoved(ServletContextAttributeEvent servletContextAttributeEvent)
	{
		System.out.println("------------监听到application范围内属性的删除--------------");
		System.out.println("application范围内删除了名为"+servletContextAttributeEvent.getName()+",值为"+servletContextAttributeEvent.getValue()+"的属性");
	}

	@Override
	public void attributeReplaced(ServletContextAttributeEvent servletContextAttributeEvent)
	{
		System.out.println("------------监听到application范围内属性的替换--------------");
		System.out.println("application范围内替换了名为"+servletContextAttributeEvent.getName()+",值为"+servletContextAttributeEvent.getValue()+"的属性");
	}

	@Override
	public void contextInitialized(ServletContextEvent servletContextEvent)
	{
		System.out.println("--------------监听到容器初始化----------------");
	}

	@Override
	public void contextDestroyed(ServletContextEvent servletContextEvent)
	{
		System.out.println("--------------监听到容器初销毁----------------");
	}
}

最后在web.xml中对监听器进行配置

<!--监听器-->
    <listener>
        <description>Session监听器</description>
        <listener-class>com.springapp.mvc.Listener.HttpSessionListenerDemo</listener-class>
    </listener>
	<listener>
		<description>上下文监听器</description>
		<listener-class>com.springapp.mvc.Listener.ServletContextListenerDemo</listener-class>
	</listener>
	<listener>
		<description>会话监听器</description>
		<listener-class>com.springapp.mvc.Listener.ServletRequestListenerDemo</listener-class>
	</listener>

运行截图

启动Tomcat时

 

 

https://my.oschina.net/u/2494581/blog/681015

分享到:
评论

相关推荐

    JavaWeb监听器—案例(二)页面静态化

    本案例将探讨如何利用JavaWeb监听器实现页面静态化,以提高网站性能和用户体验。页面静态化是将动态生成的网页转化为HTML静态文件,使得用户在访问时无需经过服务器端复杂的处理过程,直接从硬盘或缓存中读取内容,...

    javaweb 监听器(Listener)和过滤器(Filter)

    javaweb 监听器(Listener)和过滤器(Filter)

    Javaweb监听器实例之统计在线人数

    在Java Web开发中,监听器(Listener)是一种用于监控Web应用中各种事件的组件,包括诸如对象创建、销毁,会话开始、结束等。本文将详细介绍如何使用监听器来统计在线用户人数,包括实现的基本思路、具体代码实现...

    快速学习JavaWeb中监听器(Listener)的使用方法

    【JavaWeb监听器(Listener)详解】 在JavaWeb开发中,监听器(Listener)是一种重要的组件,主要用于监听和响应Web应用程序中的特定事件。通过监听器,开发者可以实现在特定事件触发时执行相应的处理逻辑,例如用户...

    监听器访问计数过滤非法字符

    在IT行业中,监听器(Listener)和过滤器(Filter)是两种非常重要的组件,它们在Web应用程序中扮演着不可或缺的角色。本文将详细讲解如何利用监听器进行访问计数以及通过过滤器来过滤非法字符,以确保系统的安全性...

    JavaWeb中的监听器与过滤器

    ### JavaWeb中的监听器与过滤器 #### 一、监听器(Listener) 监听器是Java Web应用程序中的一个重要组件,主要用于监听容器中特定事件的发生,并作出相应的反应。在Java Web开发中,监听器主要用来监控应用中某些...

    JavaWeb13-过滤器与监听器.rar

    JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar JavaWeb03-会话跟踪cookie与...JavaWeb13-过滤器与监听器.rar

    【动力节点】Javaweb开发视频教程之监听器

    教程名称: 【动力节点】Javaweb开发视频教程之监听器 动力节点推出的Java视频教程包含两大部分内容:第一部分为监听器相关设计模式的详解。其中包括观察者设计模式、监听器设计模式。第二部分为监听器用法。详细...

    javaweb_高级_过滤器_监听器

    【JavaWeb 高级:过滤器与监听器详解】 在JavaWeb开发中,过滤器(Filter)和监听器(Listener)是两种非常重要的组件,它们能够帮助我们实现更精细的控制和管理应用程序的行为。本篇将详细介绍过滤器的原理、使用...

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

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

    java web监听器统计在线用户及人数

    【Java Web 监听器统计在线用户及人数详解】 在Java Web开发中,实时统计在线用户数量是一项重要的功能,这通常涉及到对用户会话(Session)的管理。本篇文章将详细解析如何使用Java Web监听器来实现这一目标。 ...

    JavaWeb12-文件上传.rar

    JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar JavaWeb03-会话跟踪cookie与...JavaWeb13-过滤器与监听器.rar

    javaweb520-JavaWeb-master.zip

    13. **Web.xml配置**:这是JavaWeb应用的部署描述符,用于配置Servlet、过滤器、监听器等组件。 以上就是JavaWeb开发的一些核心知识点。这个压缩包中的"JavaWeb"目录可能包含了项目的源代码、配置文件、资源文件等...

    JavaWeb11-图片验证码.rar

    JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar JavaWeb03-会话跟踪cookie与...JavaWeb13-过滤器与监听器.rar

    JavaWeb05-购物车.rar

    JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar JavaWeb03-会话跟踪cookie与...JavaWeb13-过滤器与监听器.rar

    JavaWeb程序设计源代码

    8. **过滤器和监听器**:过滤器(Filter)用于拦截和处理请求,监听器(Listener)用于监听特定事件。源代码可能包含过滤器和监听器的实现,如字符编码过滤器、登录验证过滤器和会话监听器。 9. **部署描述符**:`...

    JavaWeb开发实战源码

    2. **web.xml**:这是Web应用程序的部署描述符,定义了Servlet的映射、过滤器、监听器等配置信息。它是理解整个项目运行流程的关键。 3. **Servlet**:用于接收和处理HTTP请求,实现业务逻辑。在Servlet中,`doGet`...

    传智播客副总裁方立勋JavaWeb30天 JavaWeb30很好的入门视频教程

    - **核心技术**:详细讲解Servlet、JSP、过滤器、监听器等JavaWeb核心技术。 - **项目实战**:通过具体的项目案例,帮助学员将理论知识运用到实际开发中去。 - **最佳实践**:分享一些常见的编程技巧和最佳实践,...

    Javaweb--狂神版

    6. **过滤器与监听器**:Filter和Listener是JavaWeb的重要组件。过滤器可以拦截请求和响应,进行预处理或后处理,如字符编码转换。监听器监听特定的事件,如session的创建、销毁,实现特定功能。 7. **Apache ...

    javaWEB 教材源码

    6. **过滤器(Filter)与监听器(Listener)**:这两者是JavaWeb中的重要组件,过滤器可以拦截请求和响应,实现预处理和后处理功能,如字符编码转换;监听器则可以监听特定事件,如session的创建和销毁。 7. **Web...

Global site tag (gtag.js) - Google Analytics