JavaWeb知識——Listener監聽器的使用

知識點彙總

一、ServletContextListener:監聽ServletContext對象被創建或銷燬的Servlet監聽器
①創建實現Servlet Context Listener的類並且實現其中的兩個方法。
②在web.xml文件中配置Listener
作用:在當前web應用被加載時對當前的web應用相關資源進行初始化操作。
二、域對象中屬性變更的事件監聽器這三個監聽器的接口分別是:
ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener
三、感知Session綁定的時間監聽器
HttpSessionBindingListener接口和HttpSessionActivationListener接口不需要配置web.xml
代碼示例:

實現ServletContextListener,ServletRequestListener,HttpSessionListener接口
public class HelloServletContextListener implements ServletContextListener,
ServletRequestListener,HttpSessionListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("ServletContext對象創建"+sce.getServletContext());
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("ServletContext對象被銷燬"+sce.getServletContext());
    }

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        System.out.println("ServletRequestListener被銷燬");
    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        System.out.println("ServletRequestListener被創建");
    }

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("httpSession被創建");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("HttpSession被創建");
    }
}

ServletContextAttributeListener,ServletRequestAttributeListener,HttpSessionAttributeListener接口實現
public class AttributeListener implements ServletContextAttributeListener,
        ServletRequestAttributeListener,HttpSessionAttributeListener {
    @Override
    public void attributeAdded(ServletContextAttributeEvent scae) {
        System.out.println("");
    }
    @Override
    public void attributeRemoved(ServletContextAttributeEvent scae) {

    }
    @Override
    public void attributeReplaced(ServletContextAttributeEvent scae) {

    }
    @Override
    public void attributeAdded(ServletRequestAttributeEvent srae) {
        System.out.println("向request中添加了一個屬性"+srae.getName()+srae.getValue());
    }
    @Override
    public void attributeRemoved(ServletRequestAttributeEvent srae) {
        System.out.println("request中移除了一個屬性"+srae.getName()+srae.getValue());
    }
    @Override
    public void attributeReplaced(ServletRequestAttributeEvent srae) {
        System.out.println("request中替換了一個屬性"+srae.getName()+srae.getValue());
    }
    @Override
    public void attributeAdded(HttpSessionBindingEvent se) {

    }
    @Override
    public void attributeRemoved(HttpSessionBindingEvent se) {

    }
    @Override
    public void attributeReplaced(HttpSessionBindingEvent se) {

    }
}

在web.xml中配置如下

 <!--配置Listener-->
    <listener>
        <listener-class>cn.javaweb7.com.HelloServletContextListener</listener-class>
    </listener>
    <listener>
        <listener-class>cn.javaweb7.com.AttributeListener</listener-class>
    </listener>
實現HttpSessionBindingListener, HttpSessionActivationListener接口
public class Customer implements HttpSessionBindingListener,
        HttpSessionActivationListener{
    @Override
    public void valueBound(HttpSessionBindingEvent event) {
        System.out.println("綁定到Session");
    }
    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
        System.out.println("從Session中解除綁定");
    }
    @Override
    public void sessionWillPassivate(HttpSessionEvent se) {
        System.out.println("從內存中寫到磁盤上。。。");
    }
    @Override
    public void sessionDidActivate(HttpSessionEvent se) {
        System.out.println("從磁盤中讀取出來。。。");
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章