国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
javax.servlet.ServletContextListener 的應用 - servlet學習 - 廣州it人

javax.servlet.ServletContextListener 的應用

JSP/Servlet 中的事件處理寫過AWT或Swing程序的人一定對桌面程序的事件處理機制印象深刻:通過實現(xiàn)Listener接口的類可以在特定事件(Event)發(fā)生時,呼叫特定的方法來對事件進行響應。

其實我們在編寫JSP/Servle程序時,也有類似的事件處理機制,所不同的是在JSP/Servlet中是在web.xml中注冊Listener,由Container在特定事件發(fā)生時呼叫特定的實現(xiàn)Listener的類。


1. Servlet中的Listener和Event:

在JSP 2.0/Servlet 2.4中,共有八個Listener接口,六個Event類別。
ServletContextListener接口
[接口方法] contextInitialized()與 contextDestroyed()
[接收事件] ServletContextEvent
[觸發(fā)場景] 在Container加載Web應用程序時(例如啟動 Container之后),會呼叫contextInitialized(),而當容器移除Web應用程序時,會呼叫contextDestroyed ()方法。

ServletContextAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] ServletContextAttributeEvent
[觸發(fā)場景] 若有對象加入為application(ServletContext)對象的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、attributeRemoved()。

HttpSessionListener
[接口方法] sessionCreated()與sessionDestroyed ()
[接收事件] HttpSessionEvent
[觸發(fā)場景] 在session (HttpSession)對象建立或被消滅時,會分別呼叫這兩個方法。

HttpSessionAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] HttpSessionBindingEvent
[觸發(fā)場景] 若有對象加入為session(HttpSession)對象的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、 attributeRemoved()。

HttpSessionActivationListener
[接口方法] sessionDidActivate()與 sessionWillPassivate()
[接收事件] HttpSessionEvent
[觸 發(fā)場景] Activate與Passivate是用于置換對象的動作,當session對象為了資源利用或負載平衡等原因而必須暫時儲存至硬盤或其它儲存器時(透 過對象序列化),所作的動作稱之為Passivate,而硬盤或儲存器上的session對象重新加載JVM時所采的動作稱之為Activate,所以容 易理解的,sessionDidActivate()與 sessionWillPassivate()分別于Activeate后與將Passivate前呼叫。

ServletRequestListener
[接口方法] requestInitialized()與 requestDestroyed()
[接收事件] RequestEvent
[觸發(fā)場景] 在request(HttpServletRequest)對象建立或被消滅時,會分別呼叫這兩個方法。

ServletRequestAttributeListener
[接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] HttpSessionBindingEvent
[觸發(fā)場景] 若有對象加入為request(HttpServletRequest)對象的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、 attributeRemoved()。

HttpSessionBindingListener
[接口方法] valueBound()與valueUnbound()
[接收事件] HttpSessionBindingEvent
[觸 發(fā)場景] 實現(xiàn)HttpSessionBindingListener接口的類別,其實例如果被加入至session(HttpSession)對象的屬性中,則會 呼叫 valueBound(),如果被從session(HttpSession)對象的屬性中移除,則會呼叫valueUnbound(),實現(xiàn) HttpSessionBindingListener接口的類別不需在web.xml中設定。

2. 如何注冊Servlet中的事件
實現(xiàn)上面這幾個接口的類別,除了HttpSessionBindingListener外,必須在web.xml中向容器注冊,容器才會在對應的事件發(fā)生時呼叫對應的類別,如:
 < listener > 
 < listener-class > demo.servlet.listener.CustomServletContextListener </ listener-class > 
 </ listener >

3. Servlet事件的應用實例

看到這里,你也許會有疑問: 了解這些 listener和event 有什么用呢?我平時開發(fā)沒有用到這些,一樣也能完成任務啊.

不錯,在日常的開發(fā)中很少用到這些事件處理的方面,但是在某些情況下使用事件處理機制卻可以達到事半功倍的效果,例如下面兩個例子:

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是
============
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns=" xmlns:xsi=" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  <listener>
  <listener-class>TigerListen</listener-class>
 </listener>
</web-app>

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

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Servlet介紹
用 servlet 實現(xiàn)監(jiān)聽器
Servlet監(jiān)聽器
Java Web Listener學習筆記 | 果凍想
JavaWEB開發(fā)-Servlet事件監(jiān)聽器
關于JSP.Servlet啟動次序的說明
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服