学习监听器
  1监听器是什么 :监听对象的变化或者监听事件的触发
  2有什么作用:当被监听的对象状态改变时,触发对应的方法
  3怎么用:
    ①声明监听器,(继承对应的监听器)
    ②重写监听方法,并实现自己需要的功能
    ③注册监听器
JavaWeb的监听器
1运行原理
  ①自定义监听器,并实现对应的监听器(ServletContextAttributeListener, HttpSessionAttributeListener 和ServletRequestAttributeListener)
  ②实现了对应的监听器,就代表自定义的监听监听那个对象
  ③覆写对应的监听方法,并实现自己的功能
  ④在web.xml中注册监听器

<listener>
<description>监听器名字--一般是类名</description>
<listener-class>监听器全类名</listener-class>
</listener>

2JavaWeb对应的监听器介绍
Servlet监听器的分类:在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为ServletContext,HttpSession和ServletRequest这三个域对象
Servlet规范针对这三个对象上的操作,又把多种类型的监听器划分为三种类型:
①监听域对象自身的创建和销毁的事件监听器。
  I 监听ServletContext域对象的创建和销毁
    ServletContextListener接口用于监听ServletContext对象的创建和销毁事件。(一般用于服务器启动时就静态化系统所需要的资源)
    实现了ServletContextListener接口的类都可以对ServletContext对象的创建和销毁进行监听。
        当ServletContext对象被创建时,激发contextInitialized (ServletContextEvent sce)方法。
        当ServletContext对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。
    ServletContext域对象创建和销毁时机:
       创建:服务器启动针对每一个Web应用创建ServletContext
       销毁:服务器关闭前先关闭代表每一个web应用的ServletContext
  II 监听HttpSession域对象的创建和销毁
    HttpSessionListener 接口用于监听HttpSession对象的创建和销毁
      创建一个Session时,激发sessionCreated (HttpSessionEvent se) 方法
      销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se) 方法。
  III 监听ServletRequest域对象的创建和销毁
    ServletRequestListener接口用于监听ServletRequest 对象的创建和销毁
      Request对象被创建时,监听器的requestInitialized(ServletRequestEvent sre)方法将会被调用
      Request对象被销毁时,监听器的requestDestroyed(ServletRequestEvent sre)方法将会被调用

    ServletRequest域对象创建和销毁时机:
      创建:用户每一次访问都会创建request对象
      销毁:当前访问结束,request对象就会销毁

②监听域对象中的属性的增加和删除的事件监听器。
  I ServletContextAttributeListener:监听ServletContext对象的属性变化
  II HttpSessionAttributeListener :监听session对象的属性变化
  III ServletRequestAttributeListener:监听Request对象的属性变化
   (I,II,III都是监听域对象中属性的变更的监听器,就是监听属性的增删改并且都有以下方法)
   1.1、attributeAdded方法
     当向被监听对象中增加一个属性时,web容器就调用事件监听器的attributeAdded方法进行响应,这个方法接收一个事件类型的参数,
    监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象各个域属性监听器中的完整语法定义为:
    1 public void attributeAdded(ServletContextAttributeEvent scae)
    2 public void attributeAdded(HttpSessionBindingEvent hsbe)
    3 public void attributeAdded(ServletRequestAttributeEvent srae)
  1.2、attributeRemoved 方法
      当删除被监听对象中的一个属性时,web容器调用事件监听器的attributeRemoved方法进行响应
      各个域属性监听器中的完整语法定义为:
    1 public void attributeRemoved(ServletContextAttributeEvent scae)
    2 public void attributeRemoved (HttpSessionBindingEvent hsbe)
    3 public void attributeRemoved (ServletRequestAttributeEvent srae)
  1.3、attributeReplaced 方法
      当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的attributeReplaced方法进行响应
      各个域属性监听器中的完整语法定义为:
    1 public void attributeReplaced(ServletContextAttributeEvent scae)
    2 public void attributeReplaced (HttpSessionBindingEvent hsbe)
    3 public void attributeReplaced (ServletRequestAttributeEvent srae)
notice:
  XXXEvent对象具有的方法
  XXXEvent.getName()---被修改的属性名
  XXXEvetn.getValue()--属性修改后的值
问题又来了,监听那个特定属性呢??还是监听全部属性呢??
当前是监听对象的全部属性啦
③监听绑定到HttpSession域中的某个对象的状态的事件监听器。
  HttpSessionBindingListener接口
   实现了HttpSessionBindingListener接口的JavaBean对象可以感知自己被绑定到Session中和 Session中删除的事件
   当对象被绑定(setAttribute())到HttpSession对象中时,web服务器调用该对象的void valueBound(HttpSessionBindingEvent event)方法
   当对象从HttpSession对象中解除绑定(removeAttribute())时,web服务器调用该对象的void valueUnbound(HttpSessionBindingEvent event)方法

JAVAWEB的Listener的更多相关文章

  1. JavaWEB 通过Listener理解域对象生命周期

    利用 ServletRequestListener.HttpSessionListener 以及 ServletContextListener 可以把request,session,以及Applica ...

  2. JavaWeb之Listener监听器

    监听在Java体系中运用的很广泛,在安卓开发.JavaWeb开发中到处存在,在其他语言也有类似的,如果有了解过设计模式那很容易理解实现的原理.不过对于开发者来说,使用观察者模式只需实现相应的接口就好, ...

  3. JavaWeb—监听器Listener

    1.简介 Listener是Servlet的监听器,Servlet 监听器用于监听一些重要事件的发生,监听器对象在事情发生前.发生后可以做一些必要的处理. JavaWeb里面的listener是通过观 ...

  4. JavaWeb 之 Listener:监听器

    一.概述 1.事件监听机制 事件:        一件事情 事件源:    事件发生的地方 监听器:    一个对象 注册监听: 将事件.事件源.监听器绑定在一起. 2.监听器概念 当事件源上发生某个 ...

  5. JavaWeb三大组件(Servlet、Filter、Listener)

    JavaWeb三大组件指的是:Servlet.Filter.Listener,这三个组件在JavaWeb开发中分别提供不同的功能,然而很多人可能只用过其中一个或者两个(Servlet.Filter,比 ...

  6. 手把手教你做JavaWeb项目:登录模块

    现如今,无论是客户端还是移动端,无论是游戏登陆还是社交平台登陆,无处不在的“登陆”.那么你知道怎么制作吗?今天就为你娓娓道来: 用户登录 在各大信息管理系统中,登录功能是必不可少的,他的作用就是验证用 ...

  7. JavaEE--JavaWeb三大组件Servlet、Filter、Listener

    Servlet.Filter.Listener是JavaEE Web服务规定的服务器动态组件,由开发者编写由Web容器创建,并保证单例以及线程安全性,其中加载顺序为Linstener -> Fl ...

  8. 【Java】【学习】【监听器】Listener的学习的案例(窗体程序)

    JavaWeb 监听器listener 学习与简单应用 Java窗体程序使用监听器 效果:点击按钮,控制台出现文字 代码如下 import javax.swing.*; import java.awt ...

  9. 框架模式MVC在安卓中的实践

    我们采用ListView来演示我们的MVC模式,目录结构: 实体类:包含了书的名字和图片信息 public class Book { //书名 private String name; //书的图片 ...

随机推荐

  1. C++之string的底层真的是用char数组来实现的么?

    一.引言 遇到一个问题:使用加密库对数据进行加密,得到密文,使用string进行保存并传输,然后可以正确解密出来,但是使用string.c_str()进行参数传递则无法正确解密出明文. 原因是:密文中 ...

  2. dependent-name ‘xxx::yyy’ is parsed as a non-type, but instantiation yields a type

    简言之,就是说你该用typename的地方没用typename,如以下代码 template<class Cont> void frontInsertion(Cont& ci) { ...

  3. MUTT+MSMTP利用163服务器发送邮件

    监控系统发送告警邮件,我们自己搭建邮件服务器,成本较高,所以可以使用163等第三方MTA帮助我们发送.MUTT+MSMTP是一个很好的选择,具体实现如下: tar -xvf msmtp-1.6.5.t ...

  4. FreeRTOS 调度锁,任务锁和中断锁

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 调度锁调度锁就是 RTOS 提供的调度器开关函数,如果某个任务调用了调度锁开关函数,处于调度锁开和调度锁关之 ...

  5. exit会结束一个进程

    #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include<stdlib.h ...

  6. EasyUI Tree添加节点

    创建foods tree首先,我们创建foods tree,代码像这样: <div style="width:200px;height:auto;border:1px solid #c ...

  7. URL 重写

    转载自:http://www.cnblogs.com/knowledgesea/archive/2012/10/08/2715350.html 一. 为了页面更有利于seo优化,url重写程序需要做出 ...

  8. html -- contenteditable 属性:指定元素内容是否可编辑

    所有主流浏览器都支持 contenteditable 属性 定义和用法 contenteditable 属性指定元素内容是否可编辑. 注意: 当元素中没有设置 contenteditable 属性时, ...

  9. 【BZOJ】1061: [Noi2008]志愿者招募(费用流+数学)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1061 好神的一题! 学会了一种建模方式: 当方程组内的任意变量都在其中两个方程出现且一正一负,可以建 ...

  10. 【BZOJ】1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场(dfs)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1619 首先不得不说,,题目没看懂.... 原来就是找一个下降的联通块.... 排序后dfs标记即可. ...