Java-Web監聽器

來源:互聯網
上載者:User

標籤:控制台   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監聽器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.