一、监听器

1.概念:

专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监听的对象状态发生情况时,立即采取相应的
行动。Servlet规范为每种事件监听器都定义了相应的接口,web服务器根据用户编写的事件监听器所实现的接口把它注册到相应的被监听对象
上,一些Servlet事件监听器需要在web应用程序的web.xml文件中进行注册,一个web.xml文件中可以注册多个Servlet事件监听器
web服务器按照他们在web.xml中的注册顺序来加载和注册这些事件监听器。
Servlet事件监听器的注册和调用过程都是由web容器自动完成的,当发生被监听的对象被创建、修改、销毁事件时,web容器会调用
与之相关的Servlet事件监听器对象的的相关方法。
一个web应用程序只会为每个事件监听器创建一个对象,所以使用时应考虑到多线程安全问题。

2.

Servlet监听器:Servlet规范中定的一种类,它用于监听web应用程序中的ServletContext、HttpSession和
ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。

3.分类:

①按监听的事件类型:
监听域对象自身的创建和销毁的事件监听器
监听域对象中属性的增加和删除的事件监听器
监听绑定到HttpSession域中的某个对象的状态的事件监听器

4.监听域对象自身的创建和销毁的事件监听器接口:

①ServletContextListener接口用于监听ServletContext对象的创建和销毁事件,当ServletContext对象被创建
时激发contextInitialized(ServletContextEvent sce)方法,当ServletContext对象被销毁是激发
contextDestroyed(ServletContextEvent sce)方法
②HttpSessionListener接口用于监听HttpSession对象的创建销毁,创建时调用sessionCreated(HttpSessionEvent se)
方法,销毁时调用sessionDestroyed(HttpSessionEvent se)方法
③ServletRequestListener接口用于监听ServletRequest对象的创建和销毁,创建时调用
requestInitialized(ServletReuqestEvent sre)方法,销毁时调用requestDestroyed(ServletRequestEvent sre)方法

5.作用:

ServletContextListener是最常用的Listener可以在当前web应用被加载时对当前web应用的相关资源进行初始化操作
包括:创建数据库连接池,创建springIOC容器,初始化参数...

6.

使用时继承相应的接口,并在web.xml文件中注册

7.

监听域对象中属性的增加和删除的事件监听器接口
①HttpSessionAttributeListener
②ServletContextAttributeListener
③ServletRequestAttributeListener
这些接口作用与以上接口类似,不在详细说明

8.

监听绑定到HttpSession域中的某个对象的状态的事件监听器
保存在session域中的对象可以有多种状态:绑定到Session中,从Session中接触绑定,随Session对象持久化到存储设备中,
随Session对象从存储设备中恢复。
Servlet规范中定义了两个特殊的监听器接口来帮助JavaBean对象了解自己在Session域中的状态,即接口:
HttpSessionBindingListener:实现该接口的JavaBean对象可以感知自己被绑定到Session中和从Session中删除的事件
HttpSessionActivationListener:实现该接口的JavaBean对象可以感知自己活化或钝化的事件
实现这两个接口的类不需要在web.xml文件中注册 *利用Listener对request、session、application的生命周期做进一步的了解
request:
页面-页面:是一个请求,当发送一个请求时,立即创建,当一个响应返回时,立即销毁。所以说使用超链接在另一个页面上获取该request对象,
是无法获取到的,所以不能使用超链接传递request对象,更不能使用request.setAttribute(name, value)传递参数,同时也是因为
超链接是客户端跳转,但是可以使用<jsp:forward></jsp:forward>来进行不同页面传参,这个跳转方式却是服务端跳转
Servlet-页面:
request.getRequestDispatcher("demo3.jsp").forward(request, response);
过程是:request对象创建,request对象销毁,
response.sendRedirect("demo3.jsp");
过程是:request对象创建,request对象销毁,request对象创建,session对象创建(该session创建原因是发出请求的页面中的session被删除了,请求发出session就又被创建了),
request对象销毁
session:创建:当第一次访问web应用的一个JSP或Servlet时,且JSP或Servlet中还需要创建session对象
销毁:直接调用invalidate方法,当前web应用被销毁,下载web应用时,session并没有被销毁而是被持久化到硬盘上
注意:关闭浏览器,不意味着session被销毁,还可以通过jsessionid找到服务器中的对象,关闭浏览器,表示会话结束,不销毁session,
但是重新打开浏览器访问,会再创建一个session,上一个session依旧保存在服务器中,若是重新打开浏览器访问时,把JSESSIONID
传给服务器,就不会在创建一个新的session,会找到之前的session。 application:创建:当前应用被加载到web服务器,销毁: 当前web应用被卸载时

Listener(1)—基础知识的更多相关文章

  1. 1.nodejs权威指南--基础知识

    1. 基础知识 1.1 全局作用域及函数 1.1.1 全局作用域 在nodejs中,定义了一个global对象,代表nodejs中的全局命名空间,任何全局变量.函数或对象都是该对象的一个属性值 1.1 ...

  2. 【Xamarin开发 Android 系列 4】 Android 基础知识

    原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...

  3. 【RAC】RAC相关基础知识

    [RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...

  4. 【OGG】OGG基础知识整理

    [OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...

  5. JavaWeb基础知识总结

    JavaWeb基础知识总结.   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...

  6. JMeter性能测试的基础知识和个人理解

    JMeter性能测试的基础知识和个人理解 1. JMeter的简介   JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常 ...

  7. JSP SERVLET 基础知识

    jsp(java server page)和servlet是JAVA EE规范的两个基本成员,是JAVA WEB开发的重点也是基础知识.JSP本质上也需要编译成SERVLET运行. JSP比较简单,可 ...

  8. 【温故知新】—— React/Redux/React-router4基础知识&独立团Demo

    前言:React专注View层,一切皆组件:全部使用ES6语法,最新版本为React16. Redux是专注于状态管理的库,和react解耦:单一状态,单向数据流.[独立团github地址] 一.Re ...

  9. Quartz学习笔记:基础知识

    Quartz学习笔记:基础知识 引入Quartz 关于任务调度 关于任务调度,Java.util.Timer是最简单的一种实现任务调度的方法,简单的使用如下: import java.util.Tim ...

随机推荐

  1. python之PIL 二值图像处理和保存

    0. 1.参考 http://pszpcl.baike.com/article-77327.htmlwindows 图片右键:属性 详细信息 位深度位深度 用于指定图像中的每个像素可以使用的颜色信息数 ...

  2. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-2项目说明和源码下载

    本文目录1. 摘要2. Window下运行 3.linux下运行4. 开发记录5. 总结 1.概要 写<Asp.Net Core 2.0 项目实战>系列断断续续已经很长时间了,期间很多朋友 ...

  3. POJ3321Apple Tree Dfs序 树状数组

    出自——博客园-zhouzhendong ~去博客园看该题解~ 题目 POJ3321 Apple Tree 题意概括 有一颗01树,以结点1为树根,一开始所有的结点权值都是1,有两种操作: 1.改变其 ...

  4. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第一集之安装VMware】

    [Java全技术路线开发]:https://jq.qq.com/?_wv=1027&k=5knQcPc   由于自己已经安装了VMware,本想转载一篇百度经验的教程,但是我对安装过程有些异议 ...

  5. ORA-01000

    A ResultSet object is automatically closed by the Statement object that generated it when that State ...

  6. LanProxy 内网映射穿透

    前言:用过 ngrok 的人都知道,这是一个免费并且简便的内网映射工具,可是现在ngrok不知道弄啥?不能用了,那我们只能去找一些新的工具,下面是我跟我朋友一起弄的(主要是他教我(✪ω✪)),免费的, ...

  7. 一个不错的Node.js进阶学习引导

    https://cnodejs.org/topic/58ad76db7872ea0864fedfcc

  8. Element UI 树形表格,TreeGrid或TreeTable实现

    安装less npm install less --save-devnpm install less-loader --save-dev 模板代码 <template> <div c ...

  9. Java笔记(十四) 并发基础知识

    并发基础知识 一.线程的基本概念 线程表示一条单独的执行流,它有自己的程序计数器,有自己的栈. 1.创建线程 1)继承Thread Java中java.lang.Thread这个类表示线程,一个类可以 ...

  10. 2190 ACM 数学概率论的乘法和加法原则

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2190 思路:明显我们要寻找 边长为n和边长为n-1,n-2,n-3·····的规律,这样得出一个递推公式就 ...