Servlet监听器笔记总结
监听器Listener的概念
监听器的概念很好理解,顾名思义,就是监视目标动作或状态的变化,目标一旦状态发生变化或者有动作,则立马做出反应.
Servlet中的也有实现监听器的机制,就是Listener,Listener是一个实现特定接口的普通java程序,专门用来监听另一个java对象的方法调用或属性改变,当被监听对象发生变动时,监听器某个方法立即被执行.
监听器Listener的使用场景
理解了概念,接下来问题就来了,监听器Listener有哪些使用场景呢?
在使用Spring框架开发javaWeb项目时,我们都会在web.xml中加入一个Listener,叫ContextLoaderListener.
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
它的作用是,在启动web容器时,自动装配ApplicationContext的配置信息,初始化好Spring的IOC容器,这样就可以在项目启动的时候马上就可以去IOC容器中取到我们需要的对象.
这个ContextLoaderListener就扮演的是一个监听器的角色,它实现了一个ServletContextListener接口,ServletContextListener中有两个方法:
- public interface ServletContextListener extends EventListener {
- void contextInitialized(ServletContextEvent var1);
- void contextDestroyed(ServletContextEvent var1);
- }
当ServletContext对象创建,即容器启动时,监听器监听到了这一动作,就会调用contextInitialized这个方法,完成ApplicationContext的装配初始化工作.
- /**
- * Initialize the root web application context.
- */
- public void contextInitialized(ServletContextEvent event) {
- this.contextLoader = createContextLoader();
- if (this.contextLoader == null) {
- this.contextLoader = this;
- }
- this.contextLoader.initWebApplicationContext(event.getServletContext());
- }
initWebApplicationContext就是用来初始化IOC容器的方法.
大概理通了这个流程,我们来看看更多Listener的使用场景:
1.在系统启动时加载初始化信息
2.统计网站的访问量
3.统计在线人数和在线用户
4.运用在一些框架(如Spring)中完成特定功能.
使用Listener的步骤
1.新建一个java类实现XXXListener接口,实现代码逻辑
2.在Web.xml注册自己新建的Listener
Listener的启动顺序
Listener的启动优先级是大于过滤器的,即Listener>Filter>Servlet
如果有很多Listener类,那么Listener的作用时机是根据你在web.xml中注册的顺序来决定的,即按照从上往下的顺序来加载.
Servlet中常用的Listener接口
1.按照域对象的创建和销毁来分类
- public class MyServletContextListener implements ServletContextListener{
- //servletContext创建时调动此方法(容器启动)
- public void contextInitialized(ServletContextEvent servletContextEvent) {
- }
- //servletContext销毁时调用此方法(容器关闭)
- public void contextDestroyed(ServletContextEvent servletContextEvent) {
- }
- }
相同类型的Listener的还有HttpSessionListener,ServletRequestListener.
2.按照域中属性的增加移除来分类
- public class MyApplicationAttributeListener implements ServletContextAttributeListener {
- //当Application域中属性增加时调用此方法
- public void attributeAdded(ServletContextAttributeEvent servletContextAttributeEvent) {
- }
- //当Application域中属性移除的时候调用此方法
- public void attributeRemoved(ServletContextAttributeEvent servletContextAttributeEvent) {
- }
- //当Application域中对象被更新时调用此方法
- public void attributeReplaced(ServletContextAttributeEvent servletContextAttributeEvent) {
- }
- }
相同类型的Listener还有HttpSessionAttributeListener,ServletRequestAttributeListener
3.监听HttpSession域中某个具体对象状态的Listener
这种Listener比较特别,以上介绍的几种都需要在web.xml中注册监听器,而这种不需要,为什么呢,看代码比较好理解:
- public class User implements HttpSessionBindingListener {
- private String username;
- private String password;
- //当session域中绑定了User对象时调用此方法
- @Override
- public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {
- }
- //当session域中移除了User对象绑定时调用此方法
- @Override
- public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
- }
- }
相同类型的还有还有一种 HttpSessionActivationListener,涉及session域中对象的序列化和反序列化.
Servlet监听器笔记总结的更多相关文章
- [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- JSP的Servlet监听器
JSP的Servlet监听器 来源: http://blog.csdn.net/phoenix_17th/article/details/3868670 Servlet 监听器用于监听一些重要事件的发 ...
- servlet监听器Listener(理论+例子)
Listener采用了观察者模式(24种模式之一),Listener是servlet的监听器,他可以监听客户端的请求.服务器端的操作等, 通过监听器,可以自动激发一些操作.比如:监听在线用户数量 当增 ...
- Java进阶(十三)servlet监听器
servlet监听器 Listener是Servlet的监听器,它可以监听客户端的请求.服务端的操作等.通过监听器,可以自动激发一些操作,比如监听在线的用户的数量.当 增加一个HttpSession时 ...
- 【Servlet】1、Servlet监听器及相关接口
Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前.发生后可以做一些必要的处理. 接口: 目前Servlet2.4和JSP2.0总共有8个监听器接口和6个Event类,其中Ht ...
- Servlet监听器统计在线人数
监听器的作用是监听Web容器的有效事件,它由Servlet容器管理,利用Listener接口监听某个执行程序,并根据该程序的需求做出适应的响应. 例1 应用Servlet监听器统计在线人数. (1)创 ...
- Servlet监听器的使用
Servlet监听器的使用 制作人:全心全意 在Servlet技术中已经定义了一些事件,并且可以针对这些事件来编写相关的事件监听器,从而对事件做出相应的处理.例如,想要在Web应用程序启动和关闭时来执 ...
- # jsp及servlet学习笔记
目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...
- Servlet监听器——实现在线登录人数统计小例子
一.概念 servlet监听器的主要目的是给web应用增加事件处理机制,以便更好的监视和控制web应用的状态变化,从而在后台调用相应处理程序. 二.监听器的类型 1.根据监听对象的类型和范围,分为3类 ...
随机推荐
- H5实现摇一摇技术总结
摇一摇遇到的问题 一.如何对摇晃效果进行反馈 刚开始的处理方式是,摇晃过程中不做任何处理,但后来反馈说这种效果不好,好像就没有摇动一样,如果声音也不响的话,就真的和什么都没发生一样. 后来想了想,加入 ...
- In-Memory:内存优化表的事务处理
内存优化表(Memory-Optimized Table,简称MOT)使用乐观策略(optimistic approach)实现事务的并发控制,在读取MOT时,使用多行版本化(Multi-Row ve ...
- Python高手之路【三】python基础之函数
基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...
- android键盘
在应用的开发过程中有不少的情况下会用到自定义键盘,例如支付宝的支付密码的输入,以及类似的场景.android系统给开发者们提供了系统键盘,KeyboardView,其实并不复杂,只是有些开发者不知道罢 ...
- Hawk 7. 常见问题
本页面您可以通过关键字搜索来获取信息. 理性使用爬虫 爬虫是一种灰色的应用,虽然作为Hawk的设计者,但我依然不得不这么说. 各大网站都在收集和整理数据上花费了大量的精力,因此抓取的数据应当仅仅作为科 ...
- C#关于分页显示
---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...
- WinForm设置控件焦点focus
winform窗口打开后文本框的默认焦点设置,进入窗口后默认聚焦到某个文本框,两种方法: ①设置tabindex 把该文本框属性里的tabIndex设为0,焦点就默认在这个文本框里了. ②Winfor ...
- 防线修建 bzoj 2300
防线修建(1s 512MB)defense [问题描述] 近来A国和B国的矛盾激化,为了预防不测,A国准备修建一条长长的防线,当然修建防线的话,肯定要把需要保护的城市修在防线内部了.可是A国上层现在还 ...
- 【转】 FineBI:自助式BI工具打造业务分析的“快与准”
如今的企业经营方式,业务对于数据分析有极大的需求,但却苦于没有数据以及工具的有效支持,业务分析仍就依赖于IT报表制作.而IT方不断地按业务需求去调研.确认业务逻辑,然后取数做报表,其中还要忍受业务的需 ...
- Java虚拟机 JVM
finalize();(不建议使用,代价高,不确定性大) 如果你在一个类中覆写了finalize()方法, 那么你可以在第一次被GC的时候,挽救一个你想挽救的对象,让其不被回收,但只能挽救一次. GC ...