一、监听器Listener

javaEE包括13门规范 在课程中主要学习 servlet技术 和 jsp技术

其中 servlet规范包括三个技术点:servlet  listener  filter

1.什么是监听器?

监听器就是监听某个对象的的状态变化的组件

监听器的相关概念:

事件源:被监听的对象  ----- 三个域对象 request  session  servletContext

监听器:监听事件源对象  事件源对象的状态的变化都会触发监听器 ---- 6+2

注册监听器:将监听器与事件源进行绑定

响应行为:监听器监听到事件源的状态变化时 所涉及的功能代码 ---- 程序员编写代 码

2.监听器有哪些?

第一维度:按照被监听的对象划分:ServletRequest域   HttpSession域    ServletContext域

第二维度:监听的内容分:监听域对象的创建与销毁的    监听域对象的属性变 化的

1.监听三大域对象的创建与销毁的监听器

(1)监听ServletContext域的创建与销毁的监听器ServletContextListener

1)Servlet域的生命周期

何时创建:服务器启动创建

何时销毁:服务器关闭销毁

2)监听器的编写步骤(重点):

a、编写一个监听器类去实现监听器接口

b、覆盖监听器的方法

c、需要在web.xml中进行配置---注册

 
   

3)监听的方法:

4)配置文件:

5)ServletContextListener监听器的主要作用

a、初始化的工作:初始化对象 初始化数据 ---- 加载数据库驱动  连接池的初始 化

b、加载一些初始化的配置文件 --- spring的配置文件

c、任务调度----定时器----Timer/TimerTask

(1)监听Httpsession域的创建于销毁的监听器HttpSessionListener

1)HttpSession对象的生命周期

何时创建:第一次调用request.getSession时创建

何时销毁:服务器关闭销毁  session过期  手动销毁

2)

 
   

HttpSessionListener的方法

(1)监听ServletRequest域创建与销毁的监听器ServletRequestListener

1)ServletRequest的生命周期

创建:每一次请求都会创建request

销毁:请求结束

2)ServletRequestListener的方法

1.监听三大域对象的属性变化的

(1)域对象的通用的方法:

setAttribute(name,value)

--- 触发添加属性的监听器的方法

--- 触发修改属性的监听器的方法

getAttribute(name)

removeAttribute(name)

--- 触发删除属性的监听器的方法

(1)ServletContextAttibuteListener监听器

(1) HttpSessionAttributeListener监听器(同上)

(2) ServletRequestAriibuteListenr监听器(同上)

1.与session中的绑定的对象相关的监听器(对象感知监听器)

(1)即将要被绑定到session中的对象有几种状态

绑定状态:就一个对象被放到session域中

解绑状态:就是这个对象从session域中移除了

钝化状态:是将session内存中的对象持久化(序列化)到磁盘

活化状态:就是将磁盘上的对象再次恢复到session内存中

面试题:当用户很对时,怎样对服务器进行优化?

(2)绑定与解绑的监听器HttpSessionBindingListener

(1)钝化与活化的监听器HttpSessionActivationListener

可以通过配置文件 指定对象钝化时间 --- 对象多长时间不用被钝化

在META-INF下创建一个context.xml

<Context>

<!-- maxIdleSwap:session中的对象多长时间不使用就钝化 -->

<!-- directory:钝化后的对象的文件写到磁盘的哪个目录下  配置钝化的对象文件在 work/catalina/localhost/钝化文件 -->

<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">

<Store className="org.apache.catalina.session.FileStore" directory="itcast205" />

</Manager>

</Context>

被钝化到work/catalina/localhost/的文件

javaWeb学习之Listener监听的更多相关文章

  1. java多个listener监听

    java 多个listener 监听方法 在class 名称上一行添加@Listeners 括号中用逗号隔开 @Listeners({com.example.MyListener.class,com. ...

  2. Listener 监听Session内的对象

    Listener用于监控Session内的对象,分别是HttpSessionBindingListener与HttpSessionActivationListener.它们的触发时机分别为: Http ...

  3. Android Listener 监听的几种写法

    Android中,View的Listener方法,在是否使用匿名类匿名对象时,有各种不同的写法. OnClickListener和其他Listener方法一样,都是View类的接口,重载实现后就能使用 ...

  4. 怎样绕过oracle listener 监听的password设置

     怎样绕过oracle 监听的password设置: 1.找到监听进程pid ,并将它kill 掉 ps -ef|grep tns [oracle@lixora admin]$ ps -ef|gr ...

  5. JavaWeb学习笔记--Listener

    JSP中的监听器   Web程序在服务器运行的过程中,程序内部会发生多事件,如Web应用的启动和停止.Session会话的开始和销毁.用户请求的开始和结束等等.有时程序员需要在这些事件发生的时机执行一 ...

  6. Listener 监听对象的属性变化

    Listener用于监听Session.context.Request的属性变化,接口名称格式为xxxAttributeListener,包括HttpSessionAttributeListener. ...

  7. Listener 监听对象的创建和销毁

    HttpSessionListener.ServletContextListener.ServletRequestListener分别用于控制Session.context.request的创建和销毁 ...

  8. 关闭listener监听日志

    有几次碰到过由于监听日志文件大小达到几G,使得在连接时非常慢,像hang住一样,windows下的监听日志达到4G限制,后续连接如果无法写监听日志,就会产生TNS-12537报错,可以通过关闭写监听日 ...

  9. javaweb项目的全局监听配置

    在项目中有时候会遇到全局监听的需求,而全局性的监听该如何配置,代码如下: package com.demo.listener; import javax.servlet.ServletContextE ...

随机推荐

  1. Go笔记-函数

    [函数定义]         func function_name([parameter1 type,parameter2 type])[return_value1 return_type1,retu ...

  2. BZOJ 3997: [TJOI2015]组合数学 [偏序关系 DP]

    3997: [TJOI2015]组合数学 题意:\(n*m:\ n \le 1000\)网格图,每个格子有权值.每次从左上角出发,只能向下或右走.经过一个格子权值-1.至少从左上角出发几次所有权值为0 ...

  3. BZOJ 3456: 城市规划 [多项式求逆元 DP]

    题意: 求出n个点的简单(无重边无自环)无向连通图数目.方案数mod 1004535809(479 * 2 ^ 21 + 1)即可. n<=130000 DP求方案 g(n) n个点所有图的方案 ...

  4. [Android] Toast问题深度剖析(二)

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者: QQ音乐技术团队 题记 Toast 作为 Android 系统中最常用的类之一,由于其方便的api设计和简洁的交互体验,被我们所广泛采用 ...

  5. AJAX入门第一篇就够了

    什么是Ajax Ajax(Asynchronous JavaScript and XML) 异步JavaScript和XML Ajax实际上是下面这几种技术的融合: (1)XHTML和CSS的基于标准 ...

  6. SDN第四次上机作业

    1.建立以下拓扑,并连接上ODL控制器. 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 3.借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发 ...

  7. Win10编译SqlCipher步骤

    准备工作 Visual Studio 2015,其他版本未验证,估计问题不大 ActiveState ActivePerl,用于编译OpenSSL Mingw,在官网下载minimum install ...

  8. 低版本IE内核浏览器兼容placeholder属性解决办法

    最简便的一个方法,通过js实现. <input type="text" name="username" id="username" v ...

  9. iOS 9 HTTPS 的配置

    方法有两种: (1)废话少说直接上图: (2)右击info.plist 文件 open as ->source code 在里面注入如下代码就行了(位置不固定,但要在指定的文件夹选项里) < ...

  10. thinkPHP替换SQL变量

    使用tp里M()->where(pb_id=%d and course=%d and DATE_FORMAT(pub_time, \"%H:%i:%s\") < &qu ...