文章目錄
1.監聽器
1.1 JavaWeb中的監聽器
監聽器的特點:
- 它是一個接口,內容由我們來實現;
- 它需要註冊,例如註冊在按鈕上!
- 監聽器中的方法,會在特殊事件發生時被調用!
在JavaWeb被監聽的事件源爲:ServletContext、HttpSession、ServletRequest,即三大域對象。
- 監聽域對象“創建”與“銷燬”的監聽器;
- 監聽域對象“操作域屬性”的監聽器;
- 監聽HttpSession的監聽器。
// 8大監聽器
ServletContextListener
ServletContextAttributeListener
HttpSessionListener
HttpSessionAttributeListener
ServletRequestListener
ServletRequestAttributeListener
HttpSessionBindingListener
HttpSessionActivationListener
1.2 監聽“域對象”創建銷燬和“操作域屬性”
1.2.1 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):移除屬性時;
1.2.2 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):移除屬性時
1.2.3 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):移除屬性時
1.2.4 javaWeb中完成編寫監聽器:
- 寫一個監聽器類:要求必須去實現某個監聽器接口;
- 註冊,是在web.xml中配置來完成註冊!
1.3 事件對象:
ServletContextAttributeEvent
:
String getName():獲取當前操作的屬性名;
Object getValue():獲取當前操作的屬性值;
ServletContext getServletContext():獲取ServletContext對象。
HttpSessionBindingEvent
:
String getName():獲取當前操作的屬性名;
Object getValue():獲取當前操作的屬性值;
HttpSession getSession():獲取當前操作的session對象。
ServletRequestAttributeEvent
:
String getName():獲取當前操作的屬性名;
Object getValue():獲取當前操作的屬性值;
ServletContext getServletContext():獲取ServletContext對象;
ServletRequest getServletRequest():獲取當前操作的ServletRequest對象。
1.4 HttpSession的監聽器
還有兩個與HttpSession相關的特殊的監聽器,這兩個監聽器的特點如下:
- 不用在web.xml文件中部署;
- 這兩個監聽器不是給session添加,而是給Bean添加。即讓Bean類實現監聽器接口,然後再把Bean對象添加到session域中。
HttpSessionBindingListener
:添加到javabean上,javabean就知道自己是否添加到session中了。
public void valueBound(HttpSessionBindingEvent event):當把監聽器對象添加到session中會調用監聽器對象的本方法;
public void valueUnbound(HttpSessionBindingEvent event):當把監聽器對象從session中移除時會調用監聽器對象的本方法;
HttpSessionActivationListener
:如果某個類實現了HttpSessionActiveationListener接口後,當對象隨着session被鈍化和活化時,下面兩個方法就會被調用:
public void sessionWillPassivate(HttpSessionEvent se):當對象感知被活化時調用本方法;
public void sessionDidActivate(HttpSessionEvent se):當對象感知被鈍化時調用本方法;