简析几种常用的Web监听

标签: web 监听 | 发表时间:2013-03-10 20:04 | 作者:shan9liang
出处:http://blog.csdn.net

 

我们通常可以部署一些特殊的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>

 

 


 

作者:shan9liang 发表于2013-3-10 20:04:49 原文链接
阅读:56 评论:0 查看评论

相关 [web 监听] 推荐:

简析几种常用的Web监听

- - CSDN博客Web前端推荐文章
我们通常可以部署一些特殊的Servlet类来监听Web应用的上下文信息、Servlet会话信息,Servlet请求信息等. 通过这些监听,我们可以自动执行某些程序. 例如,我们可以把利用监听会话信息,来统计在线人数. 我们可以监听ServletContext,来初始化一些系统常量,初始化一些工厂等.

监听短信

- - CSDN博客推荐文章
在监听短信在这个功能中,通知观察者的工作已经有别人做好,我们只需要注册一个观察者即可. System.out.println( new Date(date)+" 您收到 " + address +"给你发的一封短信,短信内容为: \n" +body );. 最后千万别忘了在清单文件上加上所需要的相应权限.

Web未死

- Sinan - GeekPark 捕风捉影
App的极限已经浮现,而Web则是突破此极限,推动下一个数字时代革命的起点. 距离美国《连线》杂志发表《Web已死,互联网永生》这篇文章还不到一年的时间,业界为Web平反的声音渐起. 2010年1月,苹果发布iPad,紧随其后在6月又发布了iPhone4. 没有人质疑过苹果的iTunes+App的商业模式,App可谓如日中天.

web的演变

- 酿泉 - 前端观察
这是一个基于GAE的项目,有mgmt design、GOOD、Hyperakt和Vizzuality开发,也有Google chrome团队的参与,记录了浏览器与互联网技术的演变. 不多介绍,直接去看看吧:Evolution Of Web. 值得一提的是,这个项目的代码很不错,值得学习一下.

Web Service入门

- - 博客 - 伯乐在线
本文来自文章作者 @Jeremy黄国华 的投稿. 伯乐在线也欢迎其他朋友投稿,投稿时记得留下您的新浪微博账号哦~. 目前对Web Service没有统一的定义,定义一:Web Service是自包含的、模块化的应用程序,它可以在Web中被描述、发布、查找以及调用. 定义二:Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼任的组件进行操作.

Web Apps来袭

- - HTML5研究小组
如同历史上任何一次互联网基础标准的变化都会在随后几年中带来应用创新的大爆发一样,当HTML5在2011年逐渐被主流厂商所接受之后,围绕Web Apps领域的创新风暴正山雨欲来. 2012年1月12日,老牌传媒集团《金融时报》(Financial Times,以下简称FT)宣布收购为其开发移动Web App的研发公司Assanka ,这样,FT将不再以外包的形式雇佣Assanka为其打造移动Web App,而可以直接让它在内部进行开发.

Google 的 Web Desinger

- - 极客公园-GeekPark
[核心提示]Google 的免费 Web 设计工具虽然现在主要目的是为广告设计,今后会不会成为 Chrome 应用的开发工具. 听到 Google 推出了一个名为 Google Web Designer 的网页设计还有点惊讶. 虽然 Google 是 Web 技术的大力倡导者,毕竟自己严重依赖这个平台,但市面上相关的产品太多了,从专业的开发工具到小白的所见即所得软件数不胜数,还有 Adobe 这个专业玩家.

Chrome 的 Web Intents 会改变 Web 吗?

- hailin - 爱范儿 · Beats of Bits
2011年8月4日,Chrome 团队宣布将支持一个新的技术—— Web Intents. 这个技术未来可能会极大的影响网络应用和浏览器. 什么是 Web Intents. 如果您用过 Android 手机可能就会对这个技术有所了解. Android Intents 可以让两个独立的程序之前通信互相,神奇的是这两个程序中的任何一个程序可能不知道它在和谁通信.

[Web] 連結分享

- yasy - 網站製作學習誌
关于做PHP扩展开发的一些资源. 我对PHP5.4的一个改进. schema-database – 查詢結果與 PDO::FETCH_CLASS. 讓AJAX動態內容支援瀏覽器回上頁功能. LESS介紹及其與Sass的差異. 網頁設計該用哪種字級單位:px、em或rem. IE10将增强对HTML5和CSS3的支持.