您现在的位置:首页 >> 前端 >> 内容

新手上路之监听器笔记

时间:2017/8/5 14:51:05 点击:

  核心提示:新手上路之监听器笔记。一、 监听器 介绍思考:车闯红灯罚款 地雷一踩就响 在线会员统计在 javascript 中应该对 Listener 与 Event 非常熟悉。大量的特效中通过 List...

新手上路之监听器笔记。

一、 监听器 介绍

思考:车闯红灯罚款 地雷一踩就响 在线会员统计

在 javascript 中应该对 Listener 与 Event 非常熟悉。大量的特效中通过 Listener 与 Event

来处理事件,如鼠标事件、键盘事件等。

Java Web 程序也一样,使用 Listener 与 Event 完成相应事件的处理。使用 Listener 不

需要关注该类事件是怎样触发的或者怎么调用相应的 Listener,只要记住该类事件触发

时一定会调用相应的 Listener。遵循 Servlet 规范的服务器完成了相应的工作。开发者

只要在 Listener 里编写相关代码就 OK 了。

Java Web 提供了八大监听器,给 Web 应用增加事件处理机制,以便更好地监视和控制

Web应用的状态变化,从而在后台调用相应处理程序,其主要控制application session

request 对象的发生的特定事件。

监听器是一个对象,用来监听另一个对象

监听其他对象的对象叫 监听器

被监听的对象叫 事件源

eg:在汽车上安装一个报警器

报警器 ? 监听器

汽车 ? 事件源

servlet 下的监听器,主要用来监听三个对象

request

session

servletContext

二、 八大监听器与对应事件

监听器有三类 8 种:⑴监听生命周期:实现接口 ServletRequestListener、

HttpSessionListener、ServletContextListener⑵监听值的变化:实现接口

ServletRequestAttributeListener、HttpSessionAttributeListener、

ServletContextAttributeListener⑶针对 session 中的对象:监听 session 中的 java 对象

(javaBean) 是 javaBean 直接实现监听器的接口

三、 监听器实例

1 、ServletContextListener 监听 application 作用域的生命周期

①编写 java 类实现 ServletContextListener 接口

②web.xml 中进行配置

③启动与关闭服务器查看结果

2 、session 相关监听

HttpSessionListener 监听 session 作用域的生命周期, HttpSessionAttributeListener 监

听 session 作用域的值的操作(add、replace、remove)

四、 Session 中的 javaBean 对象

1 、绑定监听对象

监听 Session 中的 java 对象(javaBean):其不需要在 web.xml 中配置,直接在对象上实

现监听器接口 HttpSessionBindingListener(监听对象绑定到 Session 中)。

① session.setAttribute(“man”, man) ;man 为 man 对象

2 、Session 钝化 和活化

当一个 session 开始时,Servlet 容器会创建一个 HttpSession 对象,在某些情况下把这

些 HttpSession 对象从内存中转移到文件系统中或数据库中,需要访问的时候把它们载

入到内存中,这就称为 Session 钝化和活化,其好处:

①为了提高服务器端的效率,节约内存的消耗

②当 Web 服务器产生故障时,可以从文件系统或数据为中恢复 Session 的数据

钝化:当 Session 在一定的时间内没有被使用时,把 Session 序列化到磁盘上(从内存写

入硬盘),不占用服务器的资源和内存。

活化:将钝化的 Session 重新加载到服务器端的内存中(从硬盘上读取到内存中)

钝化的 session 什么时候会被活化?? 取 Session 中的数据 session.getAttribute

HttpSessionActivationListener

实现此接口的 javaBean,可以感知自己被活化(从硬盘到内存)和钝化(从内存到硬盘)的

过程。

若需要同时保存 Session 中的 JavaBean 则 JavaBean 也要实现 Serializable 序列化接口

实现此接口的 javaBean 与 HttpSessionBindingListener 一样,不必配置到 web.xml 中

注意:session 的钝化活化与 HttpSessionActivationListener 没有关系,只是可以通

过实现该接口监控钝化与活化的过程

作者:网络 来源:edtwar的博客