標籤:控制台 tor 生命週期 eth att listener ida 修改 不能
在WEB端實現監聽實質:
實現一系列的監聽介面(實現相應的介面,覆寫各介面中相應的方法,在相應的事件觸發的時候會執行自己的監聽器中的覆寫的方法,在各個方法中完成自己想要的操作,從而實現了監聽)
監聽--就是在進行某種各個範圍(application,session,request)中有相關值的設定、修改、替換的時候,這些操作都會觸發事件,而Java中事件的代理機制,事件處理是利用listener機制,所以為了在事件觸發的時候能夠使自己能夠採取相應的措施,就需要---->繼承這樣的listener,在listener中覆寫相應的方法,覆寫相應的事件處理方法,在對應的方法中處理對應的事件,也就是進行了監聽(網上總結的特別好的)
總結:主要是用來監聽特定對象的建立或銷毀、屬性的變化,需要實現特定介面的普通類。
先關的介面
一、監聽對象建立/銷毀的監聽器介面
Interface ServletRequestListener 監聽request對象的建立或銷毀
Interface HttpSessionListener 監聽session對象的建立或銷毀
Interface ServletContextListener 監聽servletContext對象的建立或銷毀
二、監聽對象屬性的變化
Interface ServletRequestAttributeListener 監聽request對象屬性變化: 添加、移除、修改
Interface HttpSessionAttributeListener 監聽session對象屬性變化: 添加、移除、修改
Interface ServletContextAttributeListener 監聽servletContext對象屬性變化
三、session相關監聽器
Interface HttpSessionBindingListener 監聽對象綁定到session上的事件
Interface HttpSessionActivationListener 監聽session序列化及還原序列化的事件
生命週期
監聽器的使用步驟
1、寫一個普通的java類,實現先關介面
2、不住xml檔案
A、ServletRequestListener(在sevlet中的jsp方法傳入的參數是ServletRequest,在HttpServlet中將其強制轉型了,所以沒有HttpServletRequestListener相關介面,使用最基本的ServletRequest)
建立對應的實作類別
package comgqx.a_life;import javax.servlet.ServletRequestEvent;import javax.servlet.ServletRequestListener;/** * 監聽request對象的建立和銷毀 * @author Administrator */public class MyRequestListener implements ServletRequestListener{@Overridepublic void requestDestroyed(ServletRequestEvent sre) {// TODO Auto-generated method stub//擷取request中的存放的資料Object obj=sre.getServletRequest().getAttribute("cn");System.out.println(obj);System.out.println("MyRequestListener.requestDestoryed()");}@Overridepublic void requestInitialized(ServletRequestEvent sre) {// TODO Auto-generated method stub//擷取request中的存放的資料Object obj=sre.getServletRequest().getAttribute("cn");System.out.println(obj+"hhhhh");System.out.println("MyRequestListener.requestInitialized()");}}
session對象在強制關閉瀏覽器的時候,不算是session對象的銷毀,只能說是不能用了,所以不會觸發銷毀事件
package comgqx.a_life;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class MySessionListener implements HttpSessionListener{//建立銷毀@Overridepublic void sessionCreated(HttpSessionEvent se) {// TODO Auto-generated method stubSystem.out.println("MySessionListener.sessionCreated()");}@Overridepublic void sessionDestroyed(HttpSessionEvent se) {// TODO Auto-generated method stubSystem.out.println("MySessionListener.sessionDestroyed()");}}
package comgqx.a_life;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class MyServletListener implements ServletContextListener{//一般在伺服器啟動的時候建立,伺服器關閉後銷毀,用的相對比較多@Overridepublic void contextDestroyed(ServletContextEvent arg0) {// TODO Auto-generated method stubSystem.out.println("MyServletListener.contextDestroyed()");}@Overridepublic void contextInitialized(ServletContextEvent arg0) {// TODO Auto-generated method stubSystem.out.println("1........MyServletListener.contextInitialized");}}
寫好設定檔
<!-- 監聽request對象的建立 --> <listener> <listener-class>comgqx.a_life.MyRequestListener</listener-class> </listener> <!-- 監聽servletContext對象的建立 --> <listener> <listener-class>comgqx.a_life.MyServletListener</listener-class> </listener> <!-- 監聽session對象的建立 --> <listener> <listener-class>comgqx.a_life.MySessionListener</listener-class> </listener>
寫一個jsp來實驗
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>My JSP ‘index.jsp‘ starting page</title> </head> <body> i am coming! <%request.setAttribute("cn", "china"); session.invalidate();//銷毀session(session最大活躍時間是30分鐘) %> </body></html>
在啟動伺服器的時候會看到servlet對象的建立
然後通過jsp去訪問,控制台如下顯示
Java-Web監聽器