溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaWeb中過濾器與監(jiān)聽器的應用方法

發(fā)布時間:2023-10-08 14:55:02 來源:億速云 閱讀:108 作者:栢白 欄目:開發(fā)技術

本篇文章和大家了解一下JavaWeb中過濾器與監(jiān)聽器的應用方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

過濾器Filter

Filter過濾器能夠對匹配的請求到達目標之前或返回響應之后增加一些處理代碼

常用來做 全局轉碼 ,session有效性判斷

JavaWeb中過濾器與監(jiān)聽器的應用方法

過濾器聲明

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

filter-class : 內部地址路徑

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

filter-name : 兩者的對應

<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>

過濾器生命周期

JavaWeb中過濾器與監(jiān)聽器的應用方法

加載 : 在web.xml中聲明Filter相關信息

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

初始化 : 在init() 方法中,進行初始屬性設置

過濾 : 用戶發(fā)請求到達目標之前, 或者完成服務產生響應之后, 在 doFilter()方法中增加處理代碼

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

垃圾回收 : 被JVM進行垃圾回收時, 調用 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 {
        // 對請求進行加工
        filterChain.doFilter(servletRequest, servletResponse);
    }
    @Override
    public void destroy() {
        // 銷毀方法
    }
}

監(jiān)聽器Listener

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

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

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

當范圍對象的狀態(tài)發(fā)生變化的時候,服務器自動調用監(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)聽這些事件,我們可以在應用程序初始化、銷毀、或者在每個請求和會話之間共享信息、修改請求或響應、改變應用程序行為以及跟蹤應用程序的狀態(tài)等。

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

JavaWeb中過濾器與監(jiān)聽器的應用方法

Listener聲明

在web.xml中聲明

listener-class : 內部地址路徑

  <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í)行的方法
    }
}

以上就是JavaWeb中過濾器與監(jiān)聽器的應用方法的簡略介紹,當然詳細使用上面的不同還得要大家自己使用過才領會。如果想了解更多,歡迎關注億速云行業(yè)資訊頻道哦!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI