知識點彙總
一、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("從磁盤中讀取出來。。。");
}
}