日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Web开发——Servlet监听器

發布時間:2023/12/4 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Web开发——Servlet监听器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Servlet監聽器的概念

Servlet監聽器是Servlet規范中定義的一種特殊類,用于監聽ServletContext、HttpSession和ServletRequest等域對象的創建與銷毀事件,以及監聽這些域對象中屬性發生修改的事件。

監聽對象:

1、ServletContext:application,整個應用只存在一個

2、HttpSession:session,針對每一個對話

3、ServletRequest:request,針對每一個客戶請求

監聽內容:創建、銷毀、屬性改變事件

監聽作用:可以在事件發生前、發生后進行一些處理,一般可以用來統計在線人數和在線用戶、統計網站訪問量、系統啟動時初始化信息等。

二、監聽器的基本使用

創建步驟:

1、創建一個實現監聽器接口的類

2、配置web.xml文件,注冊監聽器

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

監聽器的啟動順序:按照web.xml的配置順序來啟動

加載順序:監聽器>過濾器>Servlet

三、監聽器的分類

3.1 按照監聽的對象劃分

1、用于監聽應用程序環境對象(ServletContext)的事件監聽器,實現ServletContextListener、ServletContextAttributeListener接口

2、用于監聽用戶會話對象(HttpSeesion)的事件監聽器,實現HttpSessionListener、HttpSessionAttributeListener接口

3、用于監聽請求消息對象(ServletRequest)的事件監聽器,實現ServletRequestListener、ServletRequestAttributeListener接口

3.2按照監聽事件劃分

1、監聽域對象自身的創建和銷毀的事件監聽器

根據監聽對象不同分別實現ServletContextListener、HttpSessionListener、ServletRequestListener接口。?

①ServletContext的創建和銷毀:contextInitialized方法和contextDestroyed方法

public void contextInitialized(ServletContextEvent sce)//ServletContext創建時調用 public void contextDestroyed(ServletContextEvent sce)//ServletContext銷毀時調用

主要用途:作為定時器、加載全局屬性對象、創建全局數據庫連接、加載緩存信息等

實例:

在web.xml中可以配置項目初始化信息,在contextInitialized方法中進行啟動

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

自定義監聽器

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){ //關閉時操作   } }

?②HttpSession的創建和銷毀:sessionCreated和sessionDestroyed方法

public void sessionCreated(HttpSessionEvent se)//session創建時調用 public void sessionDestroyed(HttpSessionEvent se)//session銷毀時調用

主要用途:統計在線人數、記錄訪問日志等

【注】

?web.xml配置session超時參數,單位:分,session超時的時間并不是精確的

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

?③ServletRequest的創建和銷毀:requestInitialized和requestDestroyed方法

public void requestInitialized(ServletRequestEvent sre)//request創建時調用 public void requestDestroyed(ServletRequestEvent sre)//request銷毀時調用

主要用途:讀取request參數,記錄訪問歷史

實例:?

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

??

2、監聽域對象中的屬性的增加和刪除的事件監聽器

  根據監聽對象不同分別實現ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener接口。

  實現方法:attributeAdded、attributeRemoved、attributeReplaced

?

3、監聽綁定到HttpSeesion域中的某個對象的狀態的事件監聽器(創建普通JavaBean)

  HttpSession中的對象狀態:綁定→解除綁定;鈍化→活化

  實現接口及方法:HttpSessionBindingListener接口(valueBound和valueUnbound方法)、HttpSessionActivationListener接口(sessionWillPassivate和sessionDidActivate方法)

【注1】①要實現鈍化和活化必須實現Serializable接口

? ? ? ? ? ?②不需要在web.xml中注冊

【注2】

  綁定:    通過setAttribute保存到session對象當中

  解除綁定:  通過removeAttribue去除

  鈍化:    將session對象持久化到存儲設備上

  活化:    將session對象從存儲設備上進行恢復

  session鈍化機制:

    ①把服務器不常使用的session對象暫時序列化到系統文件或者是數據庫中,當使用時反序列化到內存中,整個過程由服務器自動完成;

    ②session的鈍化機制由SessionManager管理,創建一個普通的JavaBean綁定和接觸需要實現HttpSessionBindingListener接口

四、Servlet3.0下監聽器的使用

4.1 使用條件

  1、使用servlet3.0新標準的jar包

  2、JDK在1.6以上版本

  3、編譯器的編譯級別為6.0

  4、在web.xml文件中,使用3.0規范

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

4.2 servlet3.0下監聽器的用法

使用注解 @WebListener 即可,無法去定義監聽器的順序

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

該注解用于將類聲明為監聽器,被?@WebListener 標注的類必須實現以下至少一個接口:

  ServletContextListener

  ServletContextAttributeListener

  ServletRequestListener

  ServletRequestAttributeListener

  HttpSessionListener

  HttpSessionAttributeListener

轉載于:https://www.cnblogs.com/tigerui/p/6569091.html

總結

以上是生活随笔為你收集整理的Java Web开发——Servlet监听器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。