国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Java Web開(kāi)發(fā)——Servlet監(jiān)聽(tīng)器

2019-11-14 22:53:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
java Web開(kāi)發(fā)——Servlet監(jiān)聽(tīng)器

一、Servlet監(jiān)聽(tīng)器的概念

Servlet監(jiān)聽(tīng)器是Servlet規(guī)范中定義的一種特殊類,用于監(jiān)聽(tīng)ServletContext、Httpsession和ServletRequest等域?qū)ο蟮膭?chuàng)建與銷毀事件,以及監(jiān)聽(tīng)這些域?qū)ο笾袑傩园l(fā)生修改的事件。

監(jiān)聽(tīng)對(duì)象:

1、ServletContext:application,整個(gè)應(yīng)用只存在一個(gè)

2、HttpSession:session,針對(duì)每一個(gè)對(duì)話

3、ServletRequest:request,針對(duì)每一個(gè)客戶請(qǐng)求

監(jiān)聽(tīng)內(nèi)容:創(chuàng)建、銷毀、屬性改變事件

監(jiān)聽(tīng)作用:可以在事件發(fā)生前、發(fā)生后進(jìn)行一些處理,一般可以用來(lái)統(tǒng)計(jì)在線人數(shù)和在線用戶、統(tǒng)計(jì)網(wǎng)站訪問(wèn)量、系統(tǒng)啟動(dòng)時(shí)初始化信息等。

二、監(jiān)聽(tīng)器的基本使用

創(chuàng)建步驟:

1、創(chuàng)建一個(gè)實(shí)現(xiàn)監(jiān)聽(tīng)器接口的類

2、配置web.xml文件,注冊(cè)監(jiān)聽(tīng)器

<listener>    <listener-class>完整類名</listener-class></listener>

監(jiān)聽(tīng)器的啟動(dòng)順序:按照web.xml的配置順序來(lái)啟動(dòng)

加載順序:監(jiān)聽(tīng)器>過(guò)濾器>Servlet

三、監(jiān)聽(tīng)器的分類

3.1 按照監(jiān)聽(tīng)的對(duì)象劃分

1、用于監(jiān)聽(tīng)?wèi)?yīng)用程序環(huán)境對(duì)象(ServletContext)的事件監(jiān)聽(tīng)器,實(shí)現(xiàn)ServletContextListener、ServletContextAttributeListener接口

2、用于監(jiān)聽(tīng)用戶會(huì)話對(duì)象(HttpSeesion)的事件監(jiān)聽(tīng)器,實(shí)現(xiàn)HttpSessionListener、HttpSessionAttributeListener接口

3、用于監(jiān)聽(tīng)請(qǐng)求消息對(duì)象(ServletRequest)的事件監(jiān)聽(tīng)器,實(shí)現(xiàn)ServletRequestListener、ServletRequestAttributeListener接口

3.2按照監(jiān)聽(tīng)事件劃分

1、監(jiān)聽(tīng)域?qū)ο笞陨淼膭?chuàng)建和銷毀的事件監(jiān)聽(tīng)器

根據(jù)監(jiān)聽(tīng)對(duì)象不同分別實(shí)現(xiàn)ServletContextListener、HttpSessionListener、ServletRequestListener接口。

①ServletContext的創(chuàng)建和銷毀:contextInitialized方法和contextDestroyed方法

public void contextInitialized(ServletContextEvent sce)//ServletContext創(chuàng)建時(shí)調(diào)用public void contextDestroyed(ServletContextEvent sce)//ServletContext銷毀時(shí)調(diào)用

主要用途:作為定時(shí)器、加載全局屬性對(duì)象、創(chuàng)建全局數(shù)據(jù)庫(kù)連接、加載緩存信息等

實(shí)例:

在web.xml中可以配置項(xiàng)目初始化信息,在contextInitialized方法中進(jìn)行啟動(dòng)

<context-param>    <param-name>屬性名</param-name>    <param-value>屬性值</param-value></context-param>

自定義監(jiān)聽(tīng)器

public class MyFirstListener implements ServletContextListener{    public void contextInitialized(ServletContextEvent sce){        //獲取web.xml中配置的屬性        String value=sce.getServletContext().getInitParameter("屬性名");        System.out.PRintln(value);  }    public void contextDestroyed(ServletContextEvent sce){        //關(guān)閉時(shí)操作  }}

②HttpSession的創(chuàng)建和銷毀:sessionCreated和sessionDestroyed方法

public void sessionCreated(HttpSessionEvent se)//session創(chuàng)建時(shí)調(diào)用public void sessionDestroyed(HttpSessionEvent se)//session銷毀時(shí)調(diào)用

主要用途:統(tǒng)計(jì)在線人數(shù)、記錄訪問(wèn)日志等

【注】

web.xml配置session超時(shí)參數(shù),單位:分,session超時(shí)的時(shí)間并不是精確的

<session-config>    <session-timeout>10</session-timeout></session-config>

③ServletRequest的創(chuàng)建和銷毀:requestInitialized和requestDestroyed方法

public void requestInitialized(ServletRequestEvent sre)//request創(chuàng)建時(shí)調(diào)用public void requestDestroyed(ServletRequestEvent sre)//request銷毀時(shí)調(diào)用

主要用途:讀取request參數(shù),記錄訪問(wèn)歷史

實(shí)例:

public class MySRequestListener implements SevletRequestListener{    public void requestInitialized(ServletRequestEvent sre){        String value=sre.getServletRequest().getParameter("key");//獲取request中的參數(shù)        System.out.println(value);    }    public void requestDestroyed(ServletRequestEvent sre){          System.out.println("request destroyed");    }}   

2、監(jiān)聽(tīng)域?qū)ο笾械膶傩缘脑黾雍蛣h除的事件監(jiān)聽(tīng)器

  根據(jù)監(jiān)聽(tīng)對(duì)象不同分別實(shí)現(xiàn)ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener接口。

  實(shí)現(xiàn)方法:attributeAdded、attributeRemoved、attributeReplaced

3、監(jiān)聽(tīng)綁定到HttpSeesion域中的某個(gè)對(duì)象的狀態(tài)的事件監(jiān)聽(tīng)器(創(chuàng)建普通JavaBean)

  HttpSession中的對(duì)象狀態(tài):綁定→解除綁定;鈍化→活化

  實(shí)現(xiàn)接口及方法:HttpSessionBindingListener接口(valueBound和valueUnbound方法)、HttpSessionActivationListener接口(sessionWillPassivate和sessionDidActivate方法)

【注1】①要實(shí)現(xiàn)鈍化和活化必須實(shí)現(xiàn)Serializable接口

②不需要在web.xml中注冊(cè)

【注2】

  綁定:    通過(guò)setAttribute保存到session對(duì)象當(dāng)中

  解除綁定:  通過(guò)removeAttribue去除

  鈍化:    將session對(duì)象持久化到存儲(chǔ)設(shè)備上

  活化:    將session對(duì)象從存儲(chǔ)設(shè)備上進(jìn)行恢復(fù)

  session鈍化機(jī)制:

    ①把服務(wù)器不常使用的session對(duì)象暫時(shí)序列化到系統(tǒng)文件或者是數(shù)據(jù)庫(kù)中,當(dāng)使用時(shí)反序列化到內(nèi)存中,整個(gè)過(guò)程由服務(wù)器自動(dòng)完成;

    ②session的鈍化機(jī)制由SessionManager管理,創(chuàng)建一個(gè)普通的JavaBean綁定和接觸需要實(shí)現(xiàn)HttpSessionBindingListener接口

四、Servlet3.0下監(jiān)聽(tīng)器的使用

4.1 使用條件

  1、使用servlet3.0新標(biāo)準(zhǔn)的jar包

  2、JDK在1.6以上版本

  3、編譯器的編譯級(jí)別為6.0

  4、在web.xml文件中,使用3.0規(guī)范

  5、使用支持servlet3.0特性的web容器,比如tomcat7

4.2 servlet3.0下監(jiān)聽(tīng)器的用法

使用注解 @WebListener 即可,無(wú)法去定義監(jiān)聽(tīng)器的順序

@WebListener的常用屬性
屬性名類型是否可選描述
valueString該監(jiān)聽(tīng)器的描述信息
@WebListener("This is a listener")public class FirstListener impliements ServletRequestListener{}

該注解用于將類聲明為監(jiān)聽(tīng)器,被@WebListener 標(biāo)注的類必須實(shí)現(xiàn)以下至少一個(gè)接口:

  ServletContextListener

  ServletContextAttributeListener

  ServletRequestListener

  ServletRequestAttributeListener

  HttpSessionListener

  HttpSessionAttributeListener

參考資料:慕課網(wǎng)【JAVA Web開(kāi)發(fā)技術(shù)應(yīng)用——監(jiān)聽(tīng)器】http://www.imooc.com/learn/271


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 沙湾县| 漠河县| 桦南县| 枣强县| 江西省| 加查县| 华蓥市| 桐城市| 和平区| 周宁县| 闵行区| 鞍山市| 新乡县| 襄城县| 龙江县| 潞城市| 陇西县| 景宁| 宜昌市| 北安市| 岑溪市| 南安市| 青海省| 广州市| 富源县| 彝良县| 墨竹工卡县| 陕西省| 会宁县| 合江县| 石门县| 呈贡县| 景宁| 攀枝花市| 报价| 桃源县| 循化| 杭锦后旗| 大兴区| 清水县| 工布江达县|