servlet的八大监听器

来源:互联网 发布:大纲软件 编辑:程序博客网 时间:2024/05/16 18:56

JSP/Servlet 

中的事件处理写过

AWT

Swing

程序的人一定对桌面程序的事件处

理机制印象深刻:通过实现

Listener

接口的类可以在特定事件

(Event)

发生时,

呼叫特定的方法来对事件进行响应。

  

其实我们在编写

JSP/Servle

程序时,也有类似的事件处理机制,所不同的是在

JSP/Servlet

中是在

web.xml

中注册

Listener

Container

在特定事件发生时

呼叫特定的实现

Listener

的类。

  

 

1. Servlet

中的

Listener

Event:  

JSP 2.0/Servlet 2.4

中,共有八个

Listener

接口,六个

Event

类别。

  

ServletContextListener

接口

  

[

接口方法

] contextInitialized()

 contextDestroyed()  

[

接收事件

] ServletContextEvent  

[

触发场景

Container

加载

Web

应用程序时(例如启动

 Container

之后),

会呼叫

contextInitialized()

,而当容器移除

Web

应用程序时,会呼叫

contextDestroyed ()

方法。

  

ServletContextAttributeListener  

[

接口方法

] attributeAdded()

 attributeReplaced()

attributeRemoved()  

[

接收事件

] ServletContextAttributeEvent  

[

触发场景

若有对象加入为

application

ServletContext

)对象的属性,则

会呼叫

attributeAdded()

,同理在置换属性与移除属性时,会分别呼叫

attributeReplaced()

attributeRemoved()

  

HttpSessionListener  

[

接口方法

] sessionCreated()

sessionDestroyed ()  

[

接收事件

] HttpSessionEvent  

[

触发场景

session 

HttpSession

)对象建立或被消灭时,会分别呼叫这

两个方法。

  

HttpSessionAttributeListener  

[

接口方法

] attributeAdded()

 attributeReplaced()

attributeRemoved()  

[

接收事件

] HttpSessionBindingEvent  

[

触发场景

若有对象加入为

session

HttpSession

)对象的属性,则会呼叫

attributeAdded()

,同理在置换属性与移除属性时,会分别呼叫

attributeReplaced()

 attributeRemoved()

  

HttpSessionActivationListener  

[

接口方法

] sessionDidActivate()

 sessionWillPassivate()  

[

接收事件

] HttpSessionEvent  

[

触发场景

Activate

Passivate

是用于置换对象的动作,当

session

对象为

了资源利用或负载平衡等原因而必须暂时储存至硬盘或其它储存器时(透

 

过对

象序列化),所作的动作称之为

Passivate

,而硬盘或储存器上的

session

对象

重新加载

JVM

时所采的动作称之为

Activate

,所以容

 

易理解的,

sessionDidActivate()

 sessionWillPassivate()

分别于

Activeate

后与将

Passivate

前呼叫。

  

ServletRequestListener  

[

接口方法

] requestInitialized()

 requestDestroyed()  

[

接收事件

] RequestEvent  

[

触发场景

request

HttpServletRequest

)对象建立或被消灭时,会分别

呼叫这两个方法。

  

ServletRequestAttributeListener  

[

接口方法

] attributeAdded()

 attributeReplaced()

attributeRemoved()  

[

接收事件

] HttpSessionBindingEvent  

[

触发场景

若有对象加入为

request

HttpServletRequest

)对象的属性,则

会呼叫

attributeAdded()

,同理在置换属性与移除属性时,会分别呼叫

attributeReplaced()

 attributeRemoved()

  

HttpSessionBindingListener  

[

接口方法

] valueBound()

valueUnbound()  

[

接收事件

] HttpSessionBindingEvent  

[

触发场景

实现

HttpSessionBindingListener

 

口的类别,其实例如果被加

入至

session

HttpSession

)对象的属性中,则会呼叫

 valueBound()

,如果被

session

HttpSession

)对象的属性中移除,则会呼叫

valueUnbound()

,实

 HttpSessionBindingListener

接口的类别不需在

web.xml

中设定。

  

2. 

如何注册

Servlet

中的事件

  

实现上面这几个接口的类别,除了

HttpSessionBindingListener

,

必须在

web.xml

中向容器注册,容器才会在对应的事件发生时呼叫对应的类别,如:

  

 < listener >   

 < listener-class > 

demo.servlet.listener.CustomServletContextListener    

   

3. Servlet

事件的应用实例

  

看到这里

,

你也许会有疑问

了解这些

 listener

event 

有什么用呢

?

我平时

开发没有用到这些

,

一样也能完成任务啊

.  

不错

,

在日常的开发中很少用到这些事件处理的方面

,

但是在某些情况下使用事

件处理机制却可以达到事半功倍的效果

,

例如下面两个例子

:  

4.Java

类实例

 

========== 

//

侦听启动和关闭

 

import javax.servlet.ServletContextListener; 

import javax.servlet.*; 

public class TigerListen implements ServletContextListener { 

 public void contextInitialized(ServletContextEvent sce) 

 { 

  System.out.print("Init")  

 } 

 public void contextDestroyed(ServletContextEvent sce) 

 { 

  System.out.print("Destroved")  

 } 

对应的

web.xml

 

============ 

 

    

TigerListen 

 

  

  

============ 

 

1234567890ABCDEFGHIJKLMNabcdefghijklmn!@#$%^&&*()_+.一三五七九贰肆陆扒拾,。青玉案元夕东风夜放花千树更吹落星如雨宝马雕车香满路凤箫声动玉壶光转一夜鱼龙舞蛾儿雪柳黄金缕笑语盈盈暗香去众里寻他千百度暮然回首那人却在灯火阑珊处

阅读已结束,如果下载本文需要使用0下载券

下载
想免费下载更多文档?立即加入VIP
  • 免下载券下载文档
  • 10万篇精选文档免费下
  • 千本精品电子书免费看
下一篇

你可能喜欢

Java笔记 java教程 API文档 电流互感器接线方式
Java学习笔记26页1下载券Java工作笔记(必看经典)30页免费Java学习笔记8页2下载券Java 学习笔记26页2下载券Java基础学习笔记整理42页免费更多与“Java笔记”相关的内容>>

您的评论  

240

发布评论

用户评价

  • 暂无评论
0 0
原创粉丝点击