`
chenzehe
  • 浏览: 533724 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

监听器

jsp 
阅读更多

1、 什么是监听器

针对于整个Web 环境的监听,主要有三大类:

ServletContext:对 Servlet 上下文监听

Session:对 Session 监听

Request:对 Request 监听

 

2、 ServletContext,相当于 JSP application 对象

定义了一个Servlet 的环境对象,通过这个对象, Servlet 引擎向 Servlet 提供环境信息。 一个 Servlet 的环境对象必须至少与它所驻留的主机是一一对应的。在一个处理多个虚拟主 机的 Servlet 引擎中(例如,使用了 HTTP1.1 的主机头域),每一个虚拟主机必须被视为一 个单独的环境。此外, Servlet 引擎还可以创建对应于一组 Servlet 的环境对象

 

3、 实现监听就是实现一系列的接口,对ServletContext 的监听,就是对容器的初始化、销毁、属性的操作进行监听,需要实现以下两个接口: ServletContextListener  和  ServletContextAttributeListener

ServletContextListener  接口实现对整个Servlet 的启动和销毁监听,有下面两个方法:

public void  contextInitialized ( ServletContextEvent  sce)  :监听 servlet初始化,在服务器启动时

public void  contextDestroyed ( ServletContextEvent  sce)  :监听 servlet销毁,在服务器销毁时

ServletContextEvent   事件,取得一个 ServletContext(application)对象:

public ServletContext getServletContext();

ServletContextAttributeListener 接口对 Servlet上下文属性进行监听,有三个方法:

attributeAdded ( ServletContextAttributeEvent  scab)  :增加属性, setAttribute

attributeRemoved ( ServletContextAttributeEvent  scab)  :删除属性, removeAttribute

attributeReplaced ( ServletContextAttributeEvent  scab)  :替换属性,第二次设置同一属性

ServletContextAttributeEvent   事件,取得所设置属性的名称和值:

public String  getName ()  :得到属性的名称

public String  getValue ()  :得到属性的值

 

4、 ServletContext 监听例子

package com.xxx.xxx.xxx;

import javax.servlet.* ;

public class ServletContextDemo implements ServletContextListener,ServletContextAttributeListener{

     private ServletContext application = null ;

     // 实现方法

     public void contextInitialized(ServletContextEvent sce){

         this.application = sce.getServletContext() ;

         System.out.println("** 上下文初始化  ...") ;

         System.out.println("** 当前虚拟目录的绝对路径: "+this.application.getRealPath("/")) ;

     }

     public void contextDestroyed(ServletContextEvent sce){

         System.out.println("** 上下文销毁  ...") ;

     }

     public void (ServletContextAttributeEvent scab){

         System.out.println("** 增加属性: "+scab.getName()+" --> "+scab.getValue()) ;

     }

     public void attributeRemoved(ServletContextAttributeEvent scab){

         System.out.println("** 删除属性: "+scab.getName()+" --> "+scab.getValue()) ;

     }

     public void attributeReplaced(ServletContextAttributeEvent scab){

         System.out.println("** 替换属性: "+scab.getName()+" --> "+scab.getValue()) ;

     }

}

web.xml 文件中注册监听器

<listener>

     <listener-class>com.xxx.xxx.xxx</listener-class>

</listener>

在容器启动时执行contextInitialized() 方法,容器销毁时执行 contextDestroyed() 方法,有属性的变动时执行 attributeAdded attributeRemoved attributeReplaced 这几个方法,该监听器是针对整个 ServletContext 上下文的,相当于 application ,而不是针对某个用户的。

 

5、 session 的监听

监听session 的创建、销毁、属性操作等。 Session 属性 http 协议下的内容,所以需要实现的两个接口都在 javax.servlet.http 包下:

HttpSessionListener session 的整体状况进行监听,需要重写下面两个方法:

sessionCreated ( HttpSessionEvent  se)  session 创建

sessionDestroyed ( HttpSessionEvent  se)  session 销毁

HttpSessionEvent   事件,getSession() 方法取得当前 session

HttpSessionAttributeListener ,对session 属性的监听,重写下面三个方法:

attributeAdded ( HttpSessionBindingEvent  se)  :新增属性

attributeRemoved ( HttpSessionBindingEvent  se)  :删除属性

attributeReplaced ( HttpSessionBindingEvent  se)  :替换属性

HttpSessionBindingEvent   事件,有三个方法:

String  getName ()    :取得属性名

HttpSession  getSession ()  :取得当前session

Object  getValue ()  :取得属性值

 

6、 session监听例子

package  com.xxx.xxx.xxx  ;

import javax.servlet.http.* ;

public class HttpSessionDemo implements HttpSessionListener,HttpSessionAttributeListener{

        private HttpSession session ;

        // 实现方法

        public void sessionCreated(HttpSessionEvent se){

            this.session = se.getSession() ;

            System.out.println("** Session 创建  ....") ;

            System.out.println("** SessionID --> "+this.session.getId()) ;

         }

     public void sessionDestroyed(HttpSessionEvent se){

         System.out.println("** Session 销毁  ....") ;

     }

     public void attributeAdded(HttpSessionBindingEvent se){

         System.out.println("** Session 增加属性 :"+se.getName()+" --> "+se.getValue()) ;

     }

     public void attributeRemoved(HttpSessionBindingEvent se){

         System.out.println("** Session 删除属性 :"+se.getName()+" --> "+se.getValue()) ;

     }

     public void attributeReplaced(HttpSessionBindingEvent se){

         System.out.println("** Session 替换属性 :"+se.getName()+" --> "+se.getValue()) ;

     }

}

web.xml 文件中注册监听器

<listener>

<listener-class> com.xxx.xxx.xxx </listener-class>

</listener>

 

7、 session的销毁

有两种方式能让session 销毁,一种是 session 超时自动销毁,可以在 web.xml 文件中配置超时时间:

<session-config>

<session-timeout>10</session-timeout><!--分钟 -->

</session-config>

另一种是调用session invalidate() 方法使其销毁。

 

分享到:
评论

相关推荐

    自己编写一个Java监听器

     当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。  例如:创建一个“人”类Class Person  人拥有吃的方法public void eat(){},我们的目的是,在这个人吃之前要提醒他洗手,所以我们要...

    配置Oracle监听器

    配置Oracle监听器 配置Oracle监听器

    Java设计模式之监听器模式实例详解

    主要介绍了Java设计模式之监听器模式,结合实例形式较为详细的分析了java设计模式中监听器模式的概念、原理及相关实现与使用技巧,需要的朋友可以参考下

    java事件监听器

    当你将一个类用作事件监听器时,你已经设置好一个特定的事件类型,它会用该类进行监听。接下来的操作是:一个匹配的监听器必须被加入到该组件中 组件被创建之后,可以在组件上调用如下方法来将监听器与它联系起来 ...

    基于 RBAC与监听器机制设计作业管理软件

    基于 RBAC与监听器机制设计作业管理软件

    java一个监听器的例子

    java一个监听器的例子

    java监听器的实现和原理详解

    主要给大家介绍了关于java监听器实现和原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    自定义事件的监听器

    2. 对某个源注册一个监听器,此源便成为一个事件源,当事件源上发生某一个动作时,监听器的某个方法将会被调用执行,在执行事件监听器的这个方法时,同时会把事件监听对象传递给此方法,开发人员在监听器中可以拿到...

    android 外部类作为事件监听器类

    android 外部类作为事件监听器类 ,外部类形式的事件监听器不能自由访问创建GUI界面

    三种简单的监听器电路图分享

    下图所示的驻波比监听器电路是专门为盲人业余无线电爱好者设计的,其目的是让盲人能够根据声音来检查传输线的驻波比,并尽可能把源阻抗与负载阻抗调整到完全匹配。图中的黑粗线是两条6*70mm的薄金属条彼此相距1.5mm...

    【动力节点】Javaweb开发视频教程之监听器

    教程名称: 【动力节点】Javaweb开发视频教程之监听器 动力节点推出的Java视频教程包含两大部分内容:第一部分为监听器相关设计模式的详解。其中包括观察者设计模式、监听器设计模式。第二部分为监听器用法。详细...

    java字符编码监听器

    java字符编码监听器

    JavaWeb13-过滤器与监听器.rar

    JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar JavaWeb03-会话跟踪cookie与...JavaWeb13-过滤器与监听器.rar

    Java监听器添加 四种监听器 内部 外部 内部匿名 自身

    Java监听器添加 四种监听器 内部 外部 内部匿名 自身

    过滤器与监听器

    Web页面的过滤与监听 了解Filter基本概念和适用场合 掌握使用Filter的基本步骤 会定义和使用Filter 掌握全局对象监听器的使用和应用 掌握会话对象监听器的使用和应用

    web监听器代码--监听servlet

    web监听器代码web监听器代码web监听器代码web监听器代码web监听器代码web监听器代码

    监听器访问计数过滤非法字符

    用监听器实现在线人数统计,过滤器实现页面自动编码 非法字符过滤

    过滤器和监听器.

    过滤器和监听器

    网络数据监听器 网络数据监听器

    网络数据抓包器,汉化版。简单实用,功能强大!网络数据监听器

    java servlet 监听器

    servelt 监听器 class MyRequest extends HttpServletRequestWrapper { public MyRequest(HttpServletRequest request) { super(request); } public String MyEncoding(String value) { String value...

Global site tag (gtag.js) - Google Analytics