java 事件监听器是组件_JavaWeb的三大组件之事件监听组件(Listener)
JavaWeb監聽器
三大組件:
Servlet
Listener
Filter
監聽器:
它是一個接口,內容由我們來實現;
它需要注冊,例如注冊在按鈕上!
監聽器中的方法,會在特殊事件發生時被調用!
JavaWeb中的監聽器
一、生命周期監聽與屬性監聽
ServletContext
生命周期監聽:ServletContextListener,它有兩個方法,一個在創建時調用,一個在銷毀時調用;
void contextInitialized(ServletContextEvent?sce):創建Servletcontext時
void contextDestroyed(ServletContextEvent?sce):銷毀Servletcontext時
屬性監聽:ServletContextAttributeListener,它有三個方法,一個在添加屬性時調用,一個在替換屬性時調用,
最后一個是在移除屬性時調用。
void attributeAdded(ServletContextAttributeEvent?event):添加屬性時;
void attributeReplaced(ServletContextAttributeEvent?event):替換屬性時;
void attributeRemoved(ServletContextAttributeEvent?event):移除屬性時;
HttpSession
生命周期監聽:HttpSessionListener,它有兩個方法,一個在創建時調用,一個在銷毀時調用;
void sessionCreated(HttpSessionEvent?se):創建session時
void sessionDestroyed(HttpSessionEvent?se):銷毀session時
屬性監聽:HttpSessioniAttributeListener,它有三個方法,一個在添加屬性時調用,一個在替換屬性時調用,
最后一個是在移除屬性時調用。
void attributeAdded(HttpSessionBindingEvent?event):添加屬性時;
void attributeReplaced(HttpSessionBindingEvent?event):替換屬性時
void attributeRemoved(HttpSessionBindingEvent?event):移除屬性時
ServletRequest
生命周期監聽:ServletRequestListener,它有兩個方法,一個在創建時調用,一個在銷毀時調用;
void requestInitialized(ServletRequestEvent?sre):創建request時
void requestDestroyed(ServletRequestEvent?sre):銷毀request時
屬性監聽:ServletRequestAttributeListener,它有三個方法,一個在添加屬性時調用,一個在替換屬性時調用,
最后一個是在移除屬性時調用。
void attributeAdded(ServletRequestAttributeEvent?srae):添加屬性時
void attributeReplaced(ServletRequestAttributeEvent?srae):替換屬性時
void attributeRemoved(ServletRequestAttributeEvent?srae):移除屬性時javaWeb中完成編寫監聽器:寫一個監聽器類:要求必須去實現某個監聽器接口;
注冊,是在web.xml中配置來完成注冊!
包名.類名
事件對象:ServletContextEvent:ServletContext getServletContext()
HttpSessionEvent:HttpSession getSession()
ServletRequest:ServletContext getServletContext();
ServletReques getServletRequest();ServletContextAttributeEvent:ServletContext getServletContext();
String getName():獲取屬性名
Object getValue():獲取屬性值
二、感知監聽(都與HttpSession相關)
它用來添加到JavaBean上,而不是添加到三大域上!
這兩個監聽器都不需要在web.xml中注冊!
1、JavaBean中繼承HttpSessionBindingListener接口:感知Bean對象是否存放到Session(存放觸發,刪除觸發)
2、JavaBean中繼承HttpSessionActivationListener,java.io.Serializable接口:Bean對象是否跟隨Session鈍化(鈍化觸發,
活化觸發)Serializable接口用來序列化
Session的鈍化:即會話在一定時間內沒有操作,Session信息自動保存至硬盤中以節省內存空間的技術
--------具體操作:Tomcat7/conf/context.xml添加以下代碼,就會將session
保存至Tomcat7\work\Catalina\localhost\項目名\mysession中,如果保存屬性有Bean對象
,要將Bean對象實現序列化(即繼承java.io.Serializable接口)。
總結:看視頻說Session鈍化后保存至硬盤,Session的活化可在瀏覽器重新打開(即一個會話關閉后)再次取出對象信息;
但實際經驗是Session的生命周期只有一個會話,或許是我Tomcat的問題,在會話關閉后重新打開時雖然有保存Session
信息到磁盤,但此時取不出Session信息。
總結
以上是生活随笔為你收集整理的java 事件监听器是组件_JavaWeb的三大组件之事件监听组件(Listener)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 缓存的简单实现_Java8简单
- 下一篇: java多线程遇到的问题_关于Java多