欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Listener監(jiān)聽器生命周期(詳解)

 更新時間:2017年10月18日 09:47:29   作者:小Cai先森  
下面小編就為大家?guī)硪黄贚istener監(jiān)聽器生命周期(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、Listener生命周期

listener是web三大組件之一,是servlet監(jiān)聽器,用來監(jiān)聽請求,監(jiān)聽服務端的操作。

listener分為:(都是接口類,必須實現(xiàn)相應方法)

1.生命周期監(jiān)聽器(3個)

ServletContextListener 
requestDestroyed 在容器啟動時被調(diào)用(在servlet被實例化前執(zhí)行)
requestInitialized 在容器銷毀時調(diào)用(在servlet被銷毀后執(zhí)行)
HttpSessionListener
sessionCreated 在HttpSession創(chuàng)建后調(diào)用
sessionDestroyed 在HttpSession銷毀前調(diào)用(執(zhí)行session.invalidate();方法)
ServletRequestListener
requestDestroyed 在request對象創(chuàng)建后調(diào)用(發(fā)起請求)
requestInitialized 在request對象銷毀前調(diào)用(請求結(jié)束)

2.屬性變化監(jiān)聽器(3個)

attributeAdded(ServletContextAttributeEvent event)向appliction中添加屬性時調(diào)用
attributeRemoved(ServletContextAttributeEvent event)從appliction中刪除屬性時調(diào)用
attributeReplaced(ServletContextAttributeEvent event)替換application中的屬性時調(diào)用
HttpSessionAttributeListener
attributeAdded(HttpSessionBindingEvent event)
attributeRemoved(HttpSessionBindingEvent event)
attributeReplaced(HttpSessionBindingEvent event)
ServletRequestAttributeListener
attributeAdded(ServletRequestAttributeEvent event)
attributeRemoved(ServletRequestAttributeEvent event)
attributeReplaced(ServletRequestAttributeEvent event)

以上監(jiān)聽器接口除了傳參不同,方法名都是一樣的。分別監(jiān)聽application,session,request對象的屬性變化。

3.session中指定類屬性變化監(jiān)聽器(2)

HttpSessionBindingListener 
valueBound(HttpSessionBindingEvent event) 當該類實例設置進session域中時調(diào)用
valueUnbound(HttpSessionBindingEvent event) 當該類的實例從session域中移除時調(diào)用
HttpSessionActivationListener 
sessionWillPassivate(HttpSessionEvent se) 
sessionDidActivate(HttpSessionEvent se)

二、測試范例

1.生命周期監(jiān)聽:

ServletContentAttribute_Listener.java

public class ServletContentAttribute_Listener implements ServletContextListener {
 /**
  * ServletContextListener實現(xiàn)方法
  * @param sce
  */
 public void contextInitialized(ServletContextEvent sce) {
  System.out.println("ServletContextListener初始化");
 }

 public void contextDestroyed(ServletContextEvent sce) {
  System.out.println("ServletContextListener銷毀");
 }
}

其他兩個監(jiān)聽器類似,不在重復貼出。

在web.xml中配置

<!-- 監(jiān)聽器 -->
 <!-- servlet監(jiān)聽器 -->
 <listener>
 <listener-class>study.myListener.ServletContentAttribute_Listener</listener-class>
 </listener>

 <!-- session監(jiān)聽器 -->
 <listener>
 <listener-class>study.myListener.HttpSessionAttribute_Listener</listener-class>
 </listener>
 
 <!-- request監(jiān)聽器-->
 <listener>
 <listener-class>study.myListener.ServletRequestAttribute_Listener</listener-class>
 </listener>

運行結(jié)果:

 

  

2.屬性監(jiān)聽:

ServletContentAttribute_Listener.java

public class ServletContentAttribute_Listener implements ServletContextAttributeListener{

 /**
  * ServletContextAttributeListener實現(xiàn)方法
  * @param event
  */
 public void attributeAdded(ServletContextAttributeEvent event) {
  String meg = MessageFormat.format("ServletContent添加屬性:{0},屬性值:{1}",event.getName(),event.getValue());
  System.out.println(meg);
 }

 public void attributeRemoved(ServletContextAttributeEvent event) {
  String meg = MessageFormat.format("ServletContent刪除屬性:{0},屬性值:{1}",event.getName(),event.getValue());
  System.out.println(meg);
 }

 public void attributeReplaced(ServletContextAttributeEvent event) {
  String meg = MessageFormat.format("ServletContent替換屬性:{0},屬性值:{1}",event.getName(),event.getValue());
  System.out.println(meg);
 }

}

另外兩個監(jiān)聽器類似,不在贅訴。接下來用jsp頁面測試

listenerDemo.jsp

<%--
 Created by IntelliJ IDEA.
 User: Administrator
 Date: 2017/10/17
 Time: 15:28
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>監(jiān)聽器設置</title>
</head>
<body>
 <%
  /**
   * servlet監(jiān)聽
   */
  application.setAttribute("name","changxiang");
  application.setAttribute("name","小Cai先森");
  application.removeAttribute("name");

  /**
   * session監(jiān)聽
   */
  session.setAttribute("sessionName","changxiang");
  session.setAttribute("sessionName","小Cai先森");
  session.removeAttribute("sessionName");
  session.invalidate();
  /**
   * request監(jiān)聽
   */
  request.setAttribute("requestName","changxiang");
  request.setAttribute("requestName","小Cai先森");
  request.removeAttribute("requestName");
 %>
</body>
</html>

執(zhí)行結(jié)果如下:

 

注意:其中遇到一個問題:就是在啟動tomcat的時候servletcontextListener監(jiān)聽執(zhí)行了兩次,最后刪除掉server.xml中 Context 的手動配置,這樣就不會加載兩次了。

以上這篇基于Listener監(jiān)聽器生命周期(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Spring Security基本架構(gòu)與初始化操作流程詳解

    Spring Security基本架構(gòu)與初始化操作流程詳解

    這篇文章主要介紹了Spring Security基本架構(gòu)與初始化操作流程,Spring Security是一個能夠為基于Spring的企業(yè)應用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架
    2023-03-03
  • springboot關于容器啟動事件總結(jié)

    springboot關于容器啟動事件總結(jié)

    在本篇文章里小編給大家整理的是一篇關于springboot容器啟動事件相關知識點,需要的朋友們學習下。
    2019-10-10
  • Spring Boot 功能整合的實現(xiàn)

    Spring Boot 功能整合的實現(xiàn)

    Spring Boot生態(tài)豐富,集成也不算困難。本文簡單的介紹下功能整合的步驟,最后提供一個具體的實現(xiàn)例子,學習Spring Boot的同學可以參考下
    2021-05-05
  • 基于Mybatis-Plus的CRUD的實現(xiàn)

    基于Mybatis-Plus的CRUD的實現(xiàn)

    這篇文章主要介紹了基于Mybatis-Plus的CRUD的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • SpringBoot3結(jié)合gRpc實現(xiàn)遠程服務調(diào)用的流程步驟

    SpringBoot3結(jié)合gRpc實現(xiàn)遠程服務調(diào)用的流程步驟

    gRPC是一個現(xiàn)代開源高性能遠程過程調(diào)用(RPC)框架,可以在任何環(huán)境中運行,它由Google開發(fā),旨在幫助開發(fā)人員更輕松地構(gòu)建分布式應用,特別是當代碼可能在不同地方運行的時候,本文介紹了SpringBoot3結(jié)合gRpc實現(xiàn)遠程服務調(diào)用的流程步驟,需要的朋友可以參考下
    2024-07-07
  • 詳細總結(jié)各種排序算法(Java實現(xiàn))

    詳細總結(jié)各種排序算法(Java實現(xiàn))

    下面小編就為大家?guī)硪黄敿毧偨Y(jié)各種排序算法(Java實現(xiàn))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java檢查字符串是否一致的四種方法

    Java檢查字符串是否一致的四種方法

    字符串比較是常見的操作,包括比較相等、比較大小、比較前綴和后綴串等,在 Java 中,比較字符串的常用方法有四個:equals(),equalsIgnoreCase(),compareTo()和compareToIgnoreCase(),下面詳細介紹這四個方法的使用
    2024-04-04
  • HttpServletRequestWrapper干預Request處理流程解析

    HttpServletRequestWrapper干預Request處理流程解析

    這篇文章主要分析在?Tomcat的處理?http?請求的流程中干預?Request對象,?通過基于HttpServletRequestWrapper和?Filter組合進行干預,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-09-09
  • springboot 整合 seata的配置過程

    springboot 整合 seata的配置過程

    本文給大家介紹springboot 整合 seata的配置過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-08-08
  • SpringBoot接口加密解密統(tǒng)一處理

    SpringBoot接口加密解密統(tǒng)一處理

    這篇文章主要為大家詳細介紹了SpringBoot接口加密解密統(tǒng)一處理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評論