歡迎您光臨本站 註冊首頁

Servlet中的八大Listener

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
/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類別.
l ServletContextListener
[介面方法] contextInitialized()與 contextDestroyed()
[接收事件] ServletContextEvent
[觸發場景] 在Container載入Web應用程序時(例如啟動 Container之後),會呼叫contextInitialized(),而當容器移除Web應用程序時,會呼叫contextDestroyed ()方法.
l ServletContextAttributeListener
[介面方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] ServletContextAttributeEvent
[觸發場景] 若有對象加入為application(ServletContext)對象的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、attributeRemoved().
l HttpSessionListener
[介面方法] sessionCreated()與sessionDestroyed ()
[接收事件] HttpSessionEvent
[觸發場景] 在session(HttpSession)對象建立或被消滅時,會分別呼叫這兩個方法.
l HttpSessionAttributeListener
[介面方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] HttpSessionBindingEvent
[觸發場景] 若有對象加入為session(HttpSession)對象的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、 attributeRemoved().
l ServletRequestListener
[介面方法] requestInitialized()與 requestDestroyed()
[接收事件] RequestEvent
[觸發場景] 在request(HttpServletRequest)對象建立或被消滅時,會分別呼叫這兩個方法.
l ServletRequestAttributeListener
[介面方法] attributeAdded()、 attributeReplaced()、attributeRemoved()
[接收事件] HttpSessionBindingEvent
[觸發場景] 若有對象加入為request(HttpServletRequest)對象的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、 attributeRemoved().
l HttpSessionBindingListener
[介面方法] valueBound()與valueUnbound()
[接收事件] HttpSessionBindingEvent
[觸發場景] 實現HttpSessionBindingListener介面的類別,其實例如果被加入至session(HttpSession)對象的屬性中,則會呼叫 valueBound(),如果被從session(HttpSession)對象的屬性中移除,則會呼叫valueUnbound(),實現HttpSessionBindingListener介面的類別不需在web.xml中設定.


l HttpSessionActivationListener
[介面方法] sessionDidActivate()與 sessionWillPassivate()
[接收事件] HttpSessionEvent
[觸發場景] Activate與Passivate是用於置換對象的動作,當session對象為了資源利用或負載平衡等原因而必須暫時儲存至硬碟或其它儲存器時(透過對象序列化),所作的動作稱之為Passivate,而硬碟或儲存器上的session對象重新載入JVM時所採的動作稱之為Activate,容易理解的,sessionDidActivate()與 sessionWillPassivate()分別於Activeate后與將Passivate前呼叫.
2. 註冊JianTingQi
除了HttpSessionBindingListener和HttpSessionActivationListener外,必須在web.xml中向容器註冊,容器才會在對應的事件發生時呼叫對應的類別,如:
<listener>
<listener-class>
demo.servlet.listener.CustomServletContextListener
listener-class>
listener>


[火星人 ] Servlet中的八大Listener已經有349次圍觀

http://coctec.com/docs/java/show-post-60030.html