一、监听器简介

  > Listener是JavaWeb中三大组件之一。Servlet、Filter、Listener

  > 三大组件都有的共同特点,都需要实现一个接口,并在web.xml文件配置。

    监听器:朝阳群众

    监听对象:明星

    监听的事件:干坏事

    调用方法:报警

  > JavaWeb中的监听器的监听对象是谁?

    ServletContext

    HttpSession

    ServletRequest

  >编写一个监听器的步骤:

      1.创建一个类并实现一个接口。

      2.在web.xml文件中注册监听器。

二、监听器分类

  > JavaWeb中的监听器共有三种,共8个监听器

  1、生命周期监听器,监听三个对象的创建和销毁的事件。[3个]

  2、 属性监听器,监听三个对象中属性的变化。[3个]

  3、session对象监听器,将它session中的属性,以及session的活化和钝化。【2个】

  1、生命周期监听器

    ServletContextListener——ServletContext生命周期监听器

        1. void contextDestroyed(ServletContextEvent sce) —— 该方法在ServletContext对象销毁前调用

        2. void contextInitialized(ServletContextEvent sce) —— 该方法在ServletContext对象创建之前调用

        3. ServletContextEvent 对象可以获取到ServletContext对象

          ServletContextEvent.getServletContext();

    HttpSessionListener——HttpSession生命周期监听器  

        1. void sessionCreated(HttpSessionEvent se) —— 该方法在Session创建时调用

        2. void sessionDestroyed(HttpSessionEvent se) —— 在session销毁时调用  

        3. HttpSessionEvent —— 可以获取HttpSession对象

    ServletRequestListener——ServletRequest生命周期监视器

        1. void requestDestroyed(ServletRequestEvent sre) ——在request对象销毁时调用

        2. void requestInitialized(ServletRequestEvent sre) ——在request对象创建时调用

  2.属性监听器

      > 属性监听器,监听三个域中的属性的变化:添加一个属性,替换一个属性,移除一个属性

     ServletContextAttributeListener——监听ServletContext中的属性的变化

        1.void attributeAdded(ServletContextAttributeEvent scab) —— 当向ServletContext中添加属性时调用

        2.attributeRemoved(ServletContextAttributeEvent scab) —— 移除属性时调用

        3.attributeReplaced(ServletContextAttributeEvent scab) —— 替换一个属性时调用

    HttpSessionAttributeListener

        1.void attributeAdded(HttpSessionBindingEvent se)

        2.void attributeRemoved(HttpSessionBindingEvent se)

        3.void attributeReplaced(HttpSessionBindingEvent se)

          参数类型:HttpSessionBindingEvent

              1.可以获取到属性名 getName()

              2.可以获取属性的旧值 getValue()

              3.可以获取到HttpSession对象 getSession();

    ServletRequestAttributeListener
        1.void attributeAdded(ServletRequestAttributeEvent srae)

        2.void attributeRemoved(ServletRequestAttributeEvent srae)

        3.void attributeReplaced(ServletRequestAttributeEvent srae)

> 以下两个监听器监听session域中的属性的。

  3、HttpSessionBindingListener
      > 监听session域中某一个类的实例的添加和移除。

      > 该接口由JavaBean来实现,不需要再web.xml文件配置

    1.valueBound(HttpSessionBindingEvent event) —— 当该类的实例,作为属性设置进session域中时调用

    2.valueUnbound(HttpSessionBindingEvent event) —— 当该类的实例,从session域中被移除时调用

  4、HttpSessionActivationListener

       监听session域中的某类属性,和session一起活化和钝化的事件。

       该接口由JavaBean来实现,同样不需要再web.xml中配置

    1.void sessionDidActivate(HttpSessionEvent se) —— 当前对象和session一起被活化到内存时调用

    2.void sessionWillPassivate(HttpSessionEvent se) —— 当前对象和session一起钝化到硬盘时调用

监听Listener的简介及分类的更多相关文章

  1. ORACLE之手动注册监听listener。alter system set local_listener="XXX"

    记录下刚刚做的一个为一个数据库(t02)配置多个监听(listener)的实验,过程有点小曲折. (1)新增两个测试的监听,listener.ora的配置内容(可纯手动编辑该文件或使用netca)如下 ...

  2. 配置非默认端口的监听Listener

  3. (转)ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

    早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问 ...

  4. 关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误

    关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误原因:listener.ora中没有指定监听服务器名. 如下是解决思路: 尝试1.通过重启服务的方式启动数 ...

  5. Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符、ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务、ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序

    问题1:ORA-12154: TNS: 无法解析指定的连接标识符 在一台服务器上部署了Oracle客户端,使用IP/SID的方式访问,老是报ORA-12154错误,而使用tnsnames访问却没有问题 ...

  6. ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

    今天用PL/SQL连接虚拟机中的Oracle数据库,发现报了“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误,也许你也遇到过,原因如下: oracle安装成功后,一直未停止 ...

  7. 配置静态监听解决ORA-12514错误的案例(转)

    今天做Linux下DG配置的时候,遇到一个现象,tnsname.ora文件配置都正常,tnsping也正常,监听也正常,但是仍然报ORA-12514错误:   SQL> set lin 130 ...

  8. Servlet的监听

    Servlet监听 在<Servlet和Jsp>中我们使用了ServletConfig获取Servlet的初始配置,用ServletContext来获取整个Web应用的初始配置,但如果需要 ...

  9. ORACLE 监听

    今天来学习一下监听的相关内容,昨晚被老大问了两个关于监听很简单的问题,但是却吞吞吐吐回答,而且有一个问题还答错了,刚刚查了下资料,才发现"驴头对了马嘴",哭笑不得. 一.监听(li ...

随机推荐

  1. linux命令学习笔记(53):route命令

    Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两 个不同的子网之间的通信,需要一台连接两个网络的路由器, ...

  2. Linux CentOS 6.5 64位 静默安装Oracle11g 云主机

    本例: 通过SSH远程连接云主机,上传oracle11g安装包,在centos6.5上无图形化界面静默安装oracle11g. 涉及工具及环境: 1.本地环境windows7+ssh远程连接工具xSh ...

  3. UILabel的富文本显示选项

    UILabel的富文本格式设置 1.实例化方法和使用方法 实例化方法: 使用字符串初始化 - (id)initWithString:(NSString *)str; 例: NSMutableAttri ...

  4. Oracle RAC TAF 无缝failover

    理论背景: TAF( Transparent Application Failover ) allows oracle clients to reconnect to a surviving inst ...

  5. bzoj 1185 最小矩形覆盖 —— 旋转卡壳

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1185 枚举一条边,维护上.左.右方的点: 上方点到这条边距离最远,所以用叉积求面积维护: 左 ...

  6. bzoj 3998 弦论 —— 后缀自动机

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3998 关于相同子串算一个还是算多个,其实就是看一种状态的 right 集合是否加上 Pare ...

  7. CSS3 日常小结

    1. pointer-events:none; 2. flex 今天看到一个牛X的CSS3属性 flex, 称为弹性盒子.  这中属性完全可以替代媒体查询啦 使用方法: 父元素使用属性display ...

  8. 【转】 Pro Android学习笔记(三七):Fragment(2):基础小例子

    目录(?)[-] 小例子运行效果 Pre-step一点准备 Step 1Activity的布局 小例子运行效果 这是一个书名和书简介的例子.运行如下图.Activity由左右两个Fragment组成, ...

  9. Java 编程规范,常见规范,命名规范,复杂度

    方法/步骤     1. *不允许把多个短语句写在一行中,即一行只写一条语句 1. 示例:如下例子不符合规范. LogFilename now = null;        LogFilename t ...

  10. ss1

    首先,对系统来一次升级,以解决一些莫名其妙的依赖问题. sudo yum update 然后安装Python-pip. sudo yum -y install python-pip 注意,通过yum包 ...