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

深入理解JavaWeb中過濾器與監(jiān)聽器的應(yīng)用

 更新時間:2023年05月15日 09:43:08   作者:春哥的魔法書  
這篇文章主要介紹了JavaWeb中過濾器與監(jiān)聽器的應(yīng)用,過濾器能夠?qū)ζヅ涞恼埱蟮竭_(dá)目標(biāo)之前或返回響應(yīng)之后增加一些處理代碼,監(jiān)聽器是一個接口內(nèi)容由我們實現(xiàn),會在特定時間被調(diào)用,感興趣想要詳細(xì)了解可以參考下文

過濾器Filter

Filter過濾器能夠?qū)ζヅ涞恼埱蟮竭_(dá)目標(biāo)之前或返回響應(yīng)之后增加一些處理代碼

常用來做 全局轉(zhuǎn)碼 ,session有效性判斷

過濾器聲明

在 web.xml 中聲明Filter的匹配過濾特征及對應(yīng)的類路徑 , 3.0版本后可以在類上使用 @WebFilter 注解來聲明

filter-class : 內(nèi)部地址路徑

url-pattern : 匹配過濾的特征, 實際開發(fā)中匹配規(guī)則的準(zhǔn)確性非常重要

filter-name : 兩者的對應(yīng)

<filter>
    <filter-name>myfilter</filter-name>
    <filter-class>com.yuan.filter.MyFilter</filter-class>
 </filter>
 <filter-mapping>
    <filter-name>myfilter</filter-name>
    <url-pattern>*.do</url-pattern>
 </filter-mapping>

過濾器生命周期

加載 : 在web.xml中聲明Filter相關(guān)信息

實例化 : 由WebServer( 如 : Tomcat )根據(jù)web.xml中聲明信息進(jìn)行實例化, 實例化后才能調(diào)用方法

初始化 : 在init() 方法中,進(jìn)行初始屬性設(shè)置

過濾 : 用戶發(fā)請求到達(dá)目標(biāo)之前, 或者完成服務(wù)產(chǎn)生響應(yīng)之后, 在 doFilter()方法中增加處理代碼

銷毀 : 當(dāng)servlet被銷毀時, 調(diào)用destroy()方法, 可以在這個方法中釋放一些資源

垃圾回收 : 被JVM進(jìn)行垃圾回收時, 調(diào)用 finalize() 方法

package com.yuan.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // 初始化方法
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        // 對請求進(jìn)行加工
        filterChain.doFilter(servletRequest, servletResponse);
    }
    @Override
    public void destroy() {
        // 銷毀方法
    }
}

監(jiān)聽器Listener

Java Servlet的Listener是一種特殊的Java類,它可以監(jiān)聽Web應(yīng)用程序中發(fā)生的事件,例如Servlet的生命周期事件、HTTP會話事件等。

它可以在Servlet容器啟動時注冊,當(dāng)Web應(yīng)用程序中發(fā)生事件時,容器會調(diào)用Listener的相應(yīng)方法來處理它。

監(jiān)聽器Listener 用于監(jiān)聽web應(yīng)用中某些對象、信息的創(chuàng)建、銷毀、增加,修改,刪除等動作的發(fā)生,然后作出相應(yīng)的響應(yīng)處理。

當(dāng)范圍對象的狀態(tài)發(fā)生變化的時候,服務(wù)器自動調(diào)用監(jiān)聽器對象中的方法。

常見的Java Servlet Listener包括:

  1. ServletContextListener:用于監(jiān)聽Servlet上下文初始化和銷毀事件。
  2. HttpSessionListener:用于監(jiān)聽HTTP會話的創(chuàng)建和銷毀事件。
  3. ServletRequestListener:用于監(jiān)聽Servlet請求的創(chuàng)建和銷毀事件。
  4. ServletRequestAttributeListener:用于監(jiān)聽Servlet請求屬性的增刪改事件。
  5. HttpSessionAttributeListener:用于監(jiān)聽HTTP會話屬性的增刪改事件。

通過監(jiān)聽這些事件,我們可以在應(yīng)用程序初始化、銷毀、或者在每個請求和會話之間共享信息、修改請求或響應(yīng)、改變應(yīng)用程序行為以及跟蹤應(yīng)用程序的狀態(tài)等。

常用于 統(tǒng)計在線人數(shù)和在線用戶,系統(tǒng)加載時進(jìn)行信息初始化,統(tǒng)計網(wǎng)站的訪問量等等。

Listener聲明

在web.xml中聲明

listener-class : 內(nèi)部地址路徑

  <listener>
    <listener-class>com.yuan.listener.MyListener</listener-class>
  </listener>

實例

package com.yuan.listener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class MyListener implements HttpSessionAttributeListener {
    @Override
    public void attributeAdded(HttpSessionBindingEvent se) {
        // 向session加入信息時執(zhí)行的方法
    }
    @Override
    public void attributeRemoved(HttpSessionBindingEvent se) {
        // 從session中移除信息時執(zhí)行的方法
    }
    @Override
    public void attributeReplaced(HttpSessionBindingEvent se) {
        // session中的信息被替換時執(zhí)行的方法
    }
}

到此這篇關(guān)于深入理解JavaWeb中過濾器與監(jiān)聽器的應(yīng)用的文章就介紹到這了,更多相關(guān)JavaWeb過濾器與監(jiān)聽器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nacos框架與原理之Nacos的參數(shù)

    Nacos框架與原理之Nacos的參數(shù)

    這篇文章主要介紹了Nacos框架與原理之Nacos的參數(shù),Nacos?中的參數(shù)有很多,如:命名空間、分組名、服務(wù)名、保護(hù)閾值、服務(wù)路由類型、臨時實例等,但下面文章我們要講解的是參數(shù),參數(shù)是什么呢,下面一起進(jìn)去文章學(xué)習(xí)詳細(xì)內(nèi)容吧
    2022-05-05
  • JVM知識總結(jié)之垃圾收集算法

    JVM知識總結(jié)之垃圾收集算法

    本博客為讀書筆記,讀的是《深入理解Java虛擬機(jī)》一書,在看這個書的時候,最大的一個感受便是“當(dāng)初怎么就沒有好好學(xué)習(xí)操作系統(tǒng)呢,不然也不會有這么多看的云里霧里的地方了”,不過那都是過去的事了,學(xué)習(xí)最好的時刻便是現(xiàn)在,需要的朋友可以參考下
    2021-06-06
  • Java非阻塞I/O模型之NIO相關(guān)知識總結(jié)

    Java非阻塞I/O模型之NIO相關(guān)知識總結(jié)

    在了解NIO (Non-Block I/O) 非阻塞I/O模型之前,我們可以先了解一下原始的BIO(Block I/O) 阻塞I/O模型,NIO模型能夠以非阻塞的方式更好的利用服務(wù)器資源,需要的朋友可以參考下
    2021-05-05
  • Java畢業(yè)設(shè)計實戰(zhàn)之寵物醫(yī)院與商城一體的系統(tǒng)的實現(xiàn)

    Java畢業(yè)設(shè)計實戰(zhàn)之寵物醫(yī)院與商城一體的系統(tǒng)的實現(xiàn)

    這是一個使用了java+Springboot+Jsp+maven+Mysql開發(fā)的寵物醫(yī)院與商城一體的系統(tǒng),是一個畢業(yè)設(shè)計的實戰(zhàn)練習(xí),具有寵物醫(yī)院和寵物商城該有的所有功能,感興趣的朋友快來看看吧
    2022-02-02
  • 詳解SpringMVC的攔截器鏈實現(xiàn)及攔截器鏈配置

    詳解SpringMVC的攔截器鏈實現(xiàn)及攔截器鏈配置

    攔截器(Interceptor)是一種動態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動態(tài)攔截控制器方法的執(zhí)行。本文將詳細(xì)講講SpringMVC中攔截器參數(shù)及攔截器鏈配置,感興趣的可以嘗試一下
    2022-08-08
  • Java學(xué)習(xí)之線程同步與線程間通信詳解

    Java學(xué)習(xí)之線程同步與線程間通信詳解

    這篇文章主要為大家詳細(xì)介紹了線程同步和線程之間的通信的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定的幫助,感興趣的可以了解一下
    2022-12-12
  • 基于Spring?Boot的線程池監(jiān)控問題及解決方案

    基于Spring?Boot的線程池監(jiān)控問題及解決方案

    這篇文章主要介紹了基于Spring?Boot的線程池監(jiān)控方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • mybatis mapper.xml 區(qū)間查詢條件詳解

    mybatis mapper.xml 區(qū)間查詢條件詳解

    這篇文章主要介紹了mybatis mapper.xml 區(qū)間查詢條件詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • idea同時編輯多行問題-win&mac都支持

    idea同時編輯多行問題-win&mac都支持

    這篇文章主要介紹了idea同時編輯多行問題-win&mac都支持,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • java迭代子模式詳解

    java迭代子模式詳解

    這篇文章主要為大家詳細(xì)介紹了java迭代子模式的相關(guān)資料,需要的朋友可以參考下
    2016-02-02

最新評論