`
thecloud
  • 浏览: 905789 次
文章分类
社区版块
存档分类
最新评论

简析几种常用的Web监听

 
阅读更多

我们通常可以部署一些特殊的Servlet类来监听Web应用的上下文信息、Servlet会话信息,Servlet请求信息等。通过这些监听,我们可以自动执行某些程序。

例如,我们可以把利用监听会话信息,来统计在线人数。我们可以监听ServletContext,来初始化一些系统常量,初始化一些工厂等。我们可以通过对请求进行监听,可以控制用户访问,例如如果是本地机器访问,不用登陆,如果是远程机器访问,需要登陆。我们完全可以通过监听请求获取客户端地址,来做相应处理。

利用监听的实例比比皆是。

一、ServletContext监听,监听ServletContext信息。

1、实现ServletContextListener接口,监听ServletContext的创建和销毁

注:ServletContext初始化实在服务器启动时进行的,它的销毁实在服务器关闭时进行的。

package com.jialin.drp.util;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyServletContextListener implements ServletContextListener {

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		System.out.println("这是一个ServletContex监听");
		System.out.println("服务器即将关闭,保存系统数据...");

	}

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("这是一个ServletContex监听");
		System.out.println("服务器启动,初始化系统参数...");
	
	}

}

2、实现ServletContextAttributeListener接口,监听ServletContext属性的增删改。

package com.jialin.drp.util;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;

public class MyServletContextAttributeListener implements
		ServletContextAttributeListener {

	@Override
	public void attributeAdded(ServletContextAttributeEvent sce) {
		System.out.println("ServletContex增加属性");
	}

	@Override
	public void attributeRemoved(ServletContextAttributeEvent sce) {
		System.out.println("ServletContext删除属性");

	}

	@Override
	public void attributeReplaced(ServletContextAttributeEvent se) {
		System.out.println("ServletContex修改属性");

	}

}

注:利用参数sce可以获取ServletContext的相关信息,并对其进行操作


二、监听HTTP会话信息

1、实现HttpSessionListener接口,监听Http会话创建,销毁信息

package com.jialin.drp.util;

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

public class TestHttpSessionListener implements HttpSessionListener {

	public void sessionCreated(HttpSessionEvent sce) {
		System.out.println("创建Session");
	}

	public void sessionDestroyed(HttpSessionEvent sce) {
		System.out.println("销毁Session");

	}

}


2、实现HttpSessionAttributeListener接口,监听HTTP会话的属性设置请求

package com.jialin.drp.util;

import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

public class TestHttpSessionAttributeListener implements
		HttpSessionAttributeListener {
	
	public void attributeAdded(HttpSessionBindingEvent sce) {
		System.out.println("增加属性");
	
	}

	public void attributeRemoved(HttpSessionBindingEvent sce) {
		System.out.println("删除属性");
	}

	public void attributeReplaced(HttpSessionBindingEvent sce) {
		System.out.println("修改属性");
	}

}


3、通过实现HttpSessionActivationListener接口监听Http会话的active,passivate情况,通过实现HttpSessionBingdingListener监听Http会话中对象的绑定信息也与上述类似,这里不再赘述。同样,通过sce参数可以拿到Http会话的相关信息进行操作

三、Servlet请求监听

1、实现ServletRequestListener,监听请求的创建和销毁

package com.jialin.drp.util;

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

public class TestServletRequestListener implements ServletRequestListener {

	@Override
	public void requestDestroyed(ServletRequestEvent sre) {
		System.out.println("请求销毁");

	}

	@Override
	public void requestInitialized(ServletRequestEvent sre) {
		System.out.println("开始请求");

	}

}


2、实现ServletRequestAttrivuteListener,监听请求属性的更改

package com.jialin.drp.util;

import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;

public class TestServletRequestAttributeListener implements
		ServletRequestAttributeListener {

	@Override
	public void attributeAdded(ServletRequestAttributeEvent sre) {
		System.out.println("增加属性");

	}

	@Override
	public void attributeRemoved(ServletRequestAttributeEvent sre) {
		System.out.println("删除属性");

	}

	@Override
	public void attributeReplaced(ServletRequestAttributeEvent sre) {
		System.out.println("修改属性");

	}

}


同样的,通过参数sre,我们可以取得请求的相关信息来进行相关的操作

最后不要忘记,要把监听加到配置文件web.xml中

<listener>
<listener-class>完整类路径</listener-class>
</listener>

例如

<listener>
<listener-class>com.jialin.drp.util.TestHttpSessionListener</listener-class>
</listener>


分享到:
评论

相关推荐

    Web3.0概念下的场景生态简析.pdf

    Web3.0概念下的场景生态简析 Web3.0概念是指下一代互联网的发展方向,旨在解决用户与用户之间的信息互动、提升信息的传递效率、实现信息交互过程中的“可信”与“沉浸”。在当下,Web3.0概念受到关注的原因来自于现...

    简析WEB前端开发.pdf

    简析WEB前端开发.pdf

    Web3 行业市场简析+Web3 产业概况+Web3 发展的基本要素+Web3 技术成熟曲线

    Web3 行业市场简析+Web3 产业概况+Web3 发展的基本要素+Web3 技术成熟曲线

    快速web开发平台之简析.docx

    【快速Web开发平台简析】 Web开发平台是随着互联网的发展,为满足快速构建网络应用而诞生的工具。它源于程序员对编程模式的总结和优化,尤其是对于那些专注于企业信息管理系统(MIS)和政府信息管理系统开发的...

    简析一种分层次的数据溯源安全模型共11页.pdf

    简析一种分层次的数据溯源安全模型共11页.pdf

    JAVA几个常见错误简析

    《JAVA几个常见错误简析》 在Java编程中,错误处理是开发者必须面对的重要环节。本文主要分析了Java中常见的空指针异常(NullPointerException),这是许多初学者和经验丰富的开发者都可能遇到的问题。了解这些错误...

    Web3.0概念下的场景生态简析-2022.4-33页.pdf

    行业报告 资源达人分享计划

    简析一种SOA动态实现框架

    【简析一种SOA动态实现框架】 在当前的IT环境中,企业面临着诸多挑战,如异构复杂的系统、紧迫的时间表、有限的预算以及不断变化的业务需求。为了应对这些挑战,企业需要找到一种能有效自动化、构建和管理关键业务...

    Java中的泛型简析实战.zip

    Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战...

    java web 简析-- TCP协议概要

    ### Java Web 简析—TCP协议概要 #### 一、互联网协议入门与TCP协议基础 互联网协议作为网络通信的基础,确保了不同地理位置的计算机能够有效地交换信息。本文将重点探讨TCP(Transmission Control Protocol,传输...

    嘉世咨询2024休闲食品行业简析报告.pdf

    【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf...

    嘉世咨询2024智能音箱市场简析报告.pdf

    【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf...

    Floodlight核心包源码简析

    ### Floodlight核心包源码简析 #### 一、概览 本文档旨在解析Floodlight控制器核心包的源代码,以帮助读者更好地理解SDN(Software Defined Networking,软件定义网络)环境中Floodlight控制器的工作原理及其核心...

    简析搜索引擎中网络爬虫的搜索策略

    深度优先搜索(Depth-First Search, DFS)是一种另一种常用的搜索策略。在这种策略下,爬虫会尽可能深入地访问每个链接,直到无法找到新的链接为止,然后再返回并尝试其他分支。相比于宽度优先搜索,深度优先搜索更...

    简析三种IGBT驱动电路和保护方法

    本文着重介绍三个IGBT驱动电路。驱动电路的作用是将单片机输出的脉冲进行功率放大,以驱动IGBT,保证IGBT的可靠工作,驱动电路起着至关重要的作用,对IGBT驱动电路的基本要求。 本文着重介绍三个IGBT驱动电路。...

    STL简析入门基础学习

    STL简析STL简析STL简析基础学习STL简析基础学习STL简析基础学习STL简析基础学习STL简析基础学习STL简析基础学习

Global site tag (gtag.js) - Google Analytics