Java监听器的使用
2016-05-27 17:21
260 查看
目录
目录一监听器的简介
二监听器的用途
三创建一个简单监听器的实例步骤
四监听器的启动顺序
五监听器的分类
1按照监听对象划分
2按照监听的事件划分
六servlet30下的监听器的使用
一、监听器的简介
定义:监听器实际上是一个类,这个类实现了特定的接口,然后将这个类在 web.xml 文件中进行描述,这样服务器在启动的时候就可以实例化这个类,启动监听器。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法1.定义:Servlet规范中定义的一种特殊类
2.用于监听servletContext,HttpSession,ServletRequest等域对象的创建与销毁事件
3.用于监听域对象的属性发生修改的事件
4.可以在事件发生前和发生后做一些必要的处理
二、监听器的用途
1.统计在线人数和在线用户2.系统启动时加载初始化信息
3.统计网站访问量
4.跟spring结合
三、创建一个简单监听器的实例步骤
1.创建一个类并实现监听器的接口2.在web.xml配置中进行注册
代码块(这里通过实现session监听器接口):
//创建一个类并实现一个监听器的接口 public class MyHttpSessionListener implements HttpSessionListener { //监听session创建的方法 @Override public void sessionCreated(HttpSessionEvent arg0) { System.out.println("session已经创建!!"); } //监听session销毁的方法 @Override public void sessionDestroyed(HttpSessionEvent arg0) { System.out.println("session已经销毁!!"); } } ---------- //在web.xml中的配置 <!-- 设置HttpSession监听器 --> <listener> <listener-class>org.nf.listener.MyHttpSessionListener</listener-class> </listener>
四、监听器的启动顺序
1.监听器与过滤器、servlet的加载顺序优先级:监听器>过滤器>servlet
五、监听器的分类
(1).按照监听对象划分
①用于监听应用程序环境对象(servletContext)的事件监听器 ②用于监听用户会话对象(HttpSession)的事件监听器 ③用于监听请求消息对象(ServletRequest)的事件监听器
(2).按照监听的事件划分
①监听域对象自身的创建和销毁的事件监听器ServletContext:
1.ServletContext由ServletContextListener接口实现
2.方法由contextInitialized()和contextDestroyed()方法(服务器启动会
调用contextInitialized()方法,关闭服务器会调用contextDestroyed()方法)
3.主要用途:定时器和全局属性对象
HttpSession:
1.HttpSession由HttpSessionListener接口实现
2.方法由sessionCreated方法和sessionDestroyed方法(服务器一启动访问页面时会调
用sessionCreated方法,关闭服务器或关闭浏览器一段时间至session过期或不关闭浏览器,
session超时会调用sessionDestroyed方法)
3.主要用途:统计在线人数和记录访问日志
ServletRequest:
1.ServletRequest由ServletRequestListener接口实现
2.方法有requestInitialized方法和requestDestroyed方法(当服务器启动访问页面时调用
requestInitialized()方法,并在访问完页面的同时调用requestDestroyed()方法)
3.主要用途:读取参数和记录访问历史
②监听域对象中的属性的增加和删除的事件监听器
继承接口后需要实现的方法:attributeAdded(新增)、attributeRemoved(删除)、 attributeReplaced(替换)
servletContext:
1.servletContext的属性的新增和删除事件由ServletContextAttributeListener接口实现
HttpSession:
1.HttpSession的属性的新增和删除的事件由HttpSession接口实现
ServletRequest:
1.ServletRequest的属性的新增和删除的事件由ServletRequest
③监听绑定到HttpSession域中的某个对象的状态的事件监听器(表示HttpSession中的对象状态)
1.绑定到解除绑定(就是通过调用setAttribute()和removeAttribute()的方法)
绑定:通过setAttribute保存到session对象当中;
解除绑定:通过调用removeAttribute()方法移除;
实现接口:实现HttpSessionBindingListener接口,注意不需要在web.xml中注册)
继承接口后需要实现方法有:绑定(valueBound()方法),解除绑定(valueUnbound()方法)
2.钝化到活化(钝化就是将session持久化到存储设备上,活化就是将session从存储设备上恢复)
钝化:将session对象持久化到存储设备上;
活化:将session对象从存储设备上进行恢复
实现接口:由HttpSessionActivationListener接口实现(注意:不需要在web.xml中注册)
继承接口后需要实现的方法有:钝化(sessionWillPassivate()方法),活化(sessionDidActivate()方法)
3.session钝化机制
①session正常状态下是放到服务器中, 服务器会对每一个在线用户创建session
②当在线用户很多时(几万以上),就要用到session钝化机制,本质就在于把服务器不经常使用
的session对象暂时序列化到系统文件或数据库系统中,当被使用时反序列化到内存中,整个
过程由服务器自动完成
4.tomcat中由两种session钝化管理器
注意: session钝化机制由SessionManager管理
第一种session钝化管理器:org.apache.catalina.session.StandardManager
①一种情况是当Tomcat服务器被关闭或重启时,tomcat服务器会将当前内存中的Session对象
钝化到服务器文件系统中;
②另一种情况是Web应用程序被重新加载时,内存中的Session对象也会被钝化到服务器的文件
系统中
③钝化后的文件被保存:Tomcat安装路
(/work/Catalina/hostname/applicationname/SESSION.ser)
第二种session钝化管理器:org.apache.catalina.session.Persistentmanager
区别:与第一种的区别:在在第一种的钝化机制的基础上进行了扩张
①一种情况是当Tomcat服务器被关闭或重启时,tomcat服务器会将当前内存中的Session对象
钝化到服务器文件系统中;
②另一种情况是Web应用程序被重新加载时,内存中的Session对象也会被钝化到服务器的文件
系统中
③可以配置主流内存的Session对象数目,将不长使用的Session对象保存到文件系统或数据库 ,
当用时再重新加载
5.默认情况下,tomcat提供两个钝化驱动类
org.apache.Catalina.FileStore和org.apache.Catalina.JDBCStore
(六)、servlet3.0下的监听器的使用
1.前提条件①使用servlet3.0新标准jar包;
②JDK必须在1.6以上版本
③编译器的编译级别为6.0
④在web.xml文件中,使用3.0规范
⑤使用支持servlet3.0特性的web容器,比如tomcat7
2.监听器的用法
只需要在类中实现一个@WebListener的注解就可以使用,但是该注解用于将类
声明为监听器,被@WebListener标注的类必须实现以下至少一个接口:
servletContextListener
ServletContextAttributeListener
servletRequestListener
ServletRequestAttributeListener
HttpSessionListener
HttpSessionAttributeListener
相关文章推荐
- Java Servlet生成JSON格式数据并用jQuery显示的方法
- jsp和servlet中实现页面跳转的方式实例总结
- java servlet结合mysql搭建java web开发环境
- Servlet与JSP间的两种传值情况
- JSP、Servlet中get请求和post请求的区别总结
- jsp和servlet的区别探讨
- Struts2访问servlet分享
- java中Servlet处理乱码的方法
- Servlet 过滤器详细介绍
- JSP+Servlet+JavaBean实现登录网页实例详解
- servlet中session简介和使用例子
- 在Jsp Servlet中页面重新定向总汇
- JSP使用Servlet作为控制器实现MVC模式实例详解
- JSP使用Servlet过滤器进行身份验证的方法
- Servlet动态网页技术详解
- jsp和servlet操作mysql中文乱码问题的解决办法
- 基于jsp+servlet实现的简单博客系统实例(附源码)
- js调用后台servlet方法实例
- 利用JQuery和Servlet实现跨域提交请求示例分享