Java Web高级特性之(二)监听器

原创 2015年04月24日 00:21:19

监听器的概念

web应用当中监听器是什么:

web应用服务器—>监听器<—>Session<—用户访问


定义:监听器是Servlet中的一种特殊类,用于监听ServletContext、HttpSession和ServletRequset等域对象的创建与销毁事件,以及监听这些域对象的属性发生修改的事件。

监听器可以在事件发生前、发生后做一些必要的处理。


监听器的用途

统计用户在线人数、在线用户

系统启动时加载初始化信息,如缓存、公共变量、数据库连接、定时器等等

统计网站访问量

跟Spring结合


监听器的启动顺序

Servlet2.5下是以web.xml中的配置顺序加载的;

Servlet3.0下没有办法制定顺序。

加载 顺序:

监听器>过滤器>Servlet


监听器的分类

按对象划分:

1.监听应用程序环境对象ServletContext

2.监听用户会话对象HttpSession

3.监听请求消息对象ServletRequset


按监听事件划分:

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

每个Listener 两个事件处理方法:初始化、销毁

ServletContext ServletContextListener主要用途:定时器、全局属性对象

HttpSession HttpSessionListener 主要用途:统计在线人数、记录访问日志

ServletRequset ServletRequsetListener 主要用途:读取参数、记录访问历史

2.监听域对象的属性的增加和删除

每个AttributeListener三个事件处理方法:AttributeAdded(增加)、AttributeRemoved(删除)、AttributeReplaced(替换)

ServletContext ServletContextAttributeListener主要用途:定时器、全局属性对象

HttpSession HttpSessionAttributeListener主要用途:统计在线人数、记录访问日志

ServletRequset ServletRequsetAttributeListener主要用途:读取参数、记录访问历史

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

绑定—>解除绑定 绑定:session.setAttribute 解除绑定:session.removeAttribute

钝化—>活化 钝化:session对象持久化存储活化:将持久化的session从存储设备恢复到内存

session钝化机制:将服务器中不经常使用的session对象暂时序列化到系统文件系统或数据库系统中,当被使用时反序列化到内存中,整个过程由服务器自动完成。

HttpSessionBindingListener 绑定:valueBound方法解除绑定:valueUnbound方法

HttpSessionActivationListener 钝化:sessionWillPassivate方法活化:sessionDidActivate方法

这两个监听器不需要在web.xml注册


在Servlet3.0下的使用

@WebListener


监听器的实例

步骤:

1.创建一个实现监听器类接口的类

2.配置web.xml进行注册


一个简单的监听器,打印requset参数中参数名为name的参数值

public class MyServletRequestListener implements ServletRequestListener {

	@Override
	public void requestDestroyed( ServletRequestEvent arg0 ) {

	}

	@Override
	public void requestInitialized( ServletRequestEvent arg0 ) {
		System.out.println( arg0.getServletRequest().getParameter( "name" ) );
	}

}


web.xml中配置监听器
<listener>
		<listener-class>com.test.example.MyServletRequestListener</listener-class>
	</listener>


Javaweb开发视频教程之监听器

-
  • 1970年01月01日 08:00

javaweb 四大域对象

:Web开发中的四个域对象:  有 范围小到大: page(jsp有效)   page域指的是pageContext. request(一次请求)   request域指的是request ...
  • bulrush__xiao
  • bulrush__xiao
  • 2016-10-12 20:07:58
  • 2605

Web开发中的四个域对象(范围由小到大)

简介: page(jsp有效)  request(一次请求) session(一次会话)application(当前web应用) page域指的是pageContext. request域指的是...
  • crown_0726
  • crown_0726
  • 2014-12-19 08:58:10
  • 3094

web开发中的四个域对象生命周期 作用域详细介绍

Web开发中的四个域对象:有范围小到大:page(jsp有效) request(一次请求)session(一次会话) application(当前web应用)page域指的是pageContext....
  • qq_25673113
  • qq_25673113
  • 2016-05-27 10:36:30
  • 1304

Request作为域对象存取数据

Request作为域对象   Request作为域对象的API l  向Request域中保存数据 setAttribute() l  从Request域中获取数据 getAttrib...
  • Code_My_Dream
  • Code_My_Dream
  • 2017-06-28 19:47:04
  • 909

对象在内存中是如何存储的(内存五大区域和类加载)

/* 先了解下内存五大区域和类加载  1.内存中的五大区域  栈---局部变量  堆---程序猿手动申请的字节空间,Malloc calloc readlloc  BBS段----未被初始化...
  • qq_36747738
  • qq_36747738
  • 2017-04-28 14:48:43
  • 1698

servlet中的第一个域对象ServletContext

在开篇之前我们思考一个问题,在涉及到两个独立Servlet之间,如何进行信息的有效传递?  这就涉及到 Servlet之间进行数据共享,也就是本文中的域对象 定义:一个ServletContext...
  • u013469562
  • u013469562
  • 2016-10-30 22:07:58
  • 721

pageContext内置对象可以操作哪些域对象中的数据?

pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象,可以用来保存数据。并且,这个对象还封装了web开...
  • qq_3693
  • qq_3693
  • 2017-09-17 22:17:09
  • 55

javaweb中的各种域对象

javaweb中的各种域对象
  • qq_34149805
  • qq_34149805
  • 2017-06-26 12:51:29
  • 176

005_Http之request获取客户端信息05-request域对象

1)什么request域对象? request域对象是servlet共享同一个的request的区域。。 2)Servlet中三大域对象?【servlet之间进行共享参数】 Servle...
  • ssyes123
  • ssyes123
  • 2016-02-27 23:06:17
  • 507
收藏助手
不良信息举报
您举报文章:Java Web高级特性之(二)监听器
举报原因:
原因补充:

(最多只允许输入30个字)