web事件操作【監聽器】之對application監聽

來源:互聯網
上載者:User

 在上一篇文章“過濾器應用”中我們提到過Servlet一共有三種:簡單Servlet、過濾Servlet和監聽Servlet,和大家一起學習過了前兩種Servlet之後,我們再一起來學習第三種Servlet--監聽Servlet監聽器)

監聽器

對某一些操作進行監聽,就成為監聽器,比如:有人走過,被網路攝影機拍下,這就是監聽,很好理解。

在WEB 中的監聽主要的功能是用於對ServletContext、session、Request進行監聽的一種操作

當相關事件觸發之後將產生事件,並對此事件進行處理。

對application進行監聽

application是ServletContext介面的對象,表示的是整個內容相關的環境

 如果要想實現對application監聽,則可以使用如下兩個介面:

ServletContextListenter:是對整個上下文環境的監控

ServletContextAttributeListener:對屬性的監聽

第一種介面;ServletContextListenter(對整個上下文環境的監控)

對Servlet上下文狀態監聽可以使用javax.servlet.ServletContextListener 介面,此介面定的方法如下表:尋找API文檔 在javax.servlet中有個ServletContextListener。)

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1142543015-0.png" title="圖片1.png" />

我們可以看到在兩個方法中都有一個ServletContextEvent sce,  這是個事件 開啟這個事件可以找到這樣的一個方法。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1142546039-1.png" title="圖片2.png" />

在上下文狀態的監聽操作中,一旦觸發了ServletContextListener介面中定義的事件後,可以通過ServletContextEvent進行事件的處理

package listener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class ServletContextListenerDemo implements ServletContextListener{   public void contextInitialized(ServletContextEvent event){//對上下文初始化觸發    System.out.println("**容器初始化-->"+event.getServletContext().getContextPath());    }   public void contextDestroyed(ServletContextEvent event){//上下文銷毀時觸發       System.out.println("**容器銷毀-->"+event.getServletContext().getContextPath());   }}zai

在完成之後,老規矩,配置web.xml。

簡單Servlet需要:<servelt><servlet-mapping>

 過濾器需要:<filter><filter-mapping>

但是現在的監聽器就省事多了,直接編寫<listener>即可

<listener>    <listener-class>        listener.ServletContextListenerDemo    </listener-class></listener>

啟動伺服器,如所示,出現了初始化,當關閉伺服器的時候就執行銷毀了。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1142541M6-2.jpg" title="z111111111111111.jpg" />

只要是容器的啟動和關閉都呀執行這些操作,但是這樣有什麼用處,我們待會再說吧650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1142542931-3.gif" />

第二種介面:ServletContextAttributeListener對屬性的監聽)

此介面可以直接對屬性監聽

看一下這個介面的方法: 在API中javax.servlet中的ServletContextAttributeList

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1142542013-4.png" title="圖片3.png" />

在內容屬性監聽中,一旦觸發了ServletContextAttributeListener介面中定義的事件後,可以通過ServletContextAttributeEvent進行事件的處理,事件定義方法如下:

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1142542914-5.png" title="圖片4.png" />

package listener;import javax.servlet.*;public class ServletContextAttributeListenerDemo implements ServletContextAttributeListener {     public void attributeAdded(ServletContextAttributeEvent event){//屬性增加時觸發         System.out.println("**增加屬性->:"+event.getName()+",屬性內容:"+event.getValue());       }     public void attributeRemoved(ServletContextAttributeEvent event){//屬性刪除的時觸發         System.out.println("**刪除屬性->屬性名稱:"+event.getName()+",屬性內容:"+event.getValue());     }     public void attributeReplaced(ServletContextAttributeEvent event){//屬性替換時觸發         System.out.println("**增加替換->屬性名稱:"+event.getName()+",屬性內容:"+event.getValue());     }}

配置web.xml檔案如下

<listener>    <listener-class>        listener.ServletContextAttributeListenerDemo    </listener-class></listener>

這個時候啟動伺服器是沒有效果顯示的

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1142542029-6.png" title="圖片5.png" />

這個時候為了看出我們設定的application,可以寫一個JSP頁面

application_attribute_add.jsp<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%><html><head><title>WEB開發項目</title></head><body><%    //設定application範圍屬性    this.getServletContext().setAttribute("info","http://zhaoyuqiang.blog.51cto.com");%></body></html>

啟動伺服器,然後在瀏覽器中輸入:http://localhost:8080/test/jsp/application_attribute_add.jsp

頁面什麼都東西都沒有 但是看我們的伺服器,如所示:

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1142545J7-7.png" title="圖片6.png" />

當我們重新整理瀏覽器的時候,伺服器顯示替換屬性了,重複重新整理就重複替換,如所示

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/11425431B-8.png" title="圖片7.png" />

那什麼時候可以刪除呢?為了觀察方便,我們再來建立一個JSP頁面

application_attribute_remove.jsp<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%><html><head><title>WEB開發項目</title></head><body><%    //設定application範圍屬性    this.getServletContext().removeAttribute("info");%></body></html>

在瀏覽器中輸入:http://localhost:8080/test/jsp/application_attribute_remove.jsp  觀察伺服器效果如下

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1142541560-9.png" title="圖片8.png" />

監聽器就是實現介面,覆寫方法


以上都是對application實現操作的監聽,session對象額監聽我們下一篇文章再進行學習吧!


本文出自 “趙玉強的部落格” 部落格,請務必保留此出處http://zhaoyuqiang.blog.51cto.com/6328846/1197628

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.