什麼是listener?
listener是Javaweb開發中的監聽器,是用於監聽web常見對象 HttpServletRequest ,HttpSession ,ServletContext監聽它們的創建與銷燬 屬性變化 session綁定javaBean
監聽步驟:
- 創建相應的監聽器
- 在web.xml中註冊
例子:
1、創建一個ServletContext的監聽器:
這個對象是在服務器啓動時創建的,在服務器關閉時銷燬的。
package com.yanglin.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyServletContextListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
//實現寫在這裏
System.out.println("ServletContext對象創建了");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("ServletContext對象銷燬了");
}
}
2、web.xml中註冊
<listener>
<listener-class>com.yanglin.listener.MyServletContextListener</listener-class>
</listener>
Javaweb開發中常見監聽器
監聽域對象的創建與銷燬
- 監聽ServletContext創建與銷燬 實現:ServletContextListener
- 監聽HttpSession創建與銷燬 實現HttpSessionListener
- 監聽HttpServletRequest創建與銷燬 實現ServletRequestListener
監聽域對象的屬性變化
- 監聽ServletContext屬性變化 ServletContextAttributeListener
- 監聽HttpSession屬性變化 HttpSessionAttributeListener
- 監聽HttpServletRequest屬性變化 ServletRequestAttributeListener
監聽session綁定javaBean
- 它是用於監聽javaBean對象是否綁定到了session域 HttpSessionBindingListener
- 它是用於監聽javaBean對象的活化與鈍化 HttpSessionActivationListener
HttpSession對象的創建與銷燬
演示了Request域對象中屬性變化
在java的監聽機制中,它的監聽器中的方法都是有參數的,參數就是事件對象,而我們可以通過事件對象直接獲取事件源。
session綁定javaBean
1.javaBean對象自動感知被綁定到session中.HttpSessionBindingListener 這個接口是由javaBean實現的,並且不需要在web.xml文件中註冊.但是需要讓bean對象實現HttpSessionBindingListener
在jsp中
2.javabean對象可以活化或鈍化到session中。
HttpSessionActivationListener如果javaBean實現了這個接口,那麼當我們正常關閉服務器時,session中的javaBean對象就會被鈍化到我們指定的文件中。
當下一次在啓動服務器,因爲我們已經將對象寫入到文件中,這時就會自動將javaBean對象活化到session中。
我們還需要個context.xml文件來配置鈍化時存儲的文件
在meta-inf目錄下創建一個context.xml文件
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="it315"/>
</Manager>
</Context>