2024/11/20日 日誌 關於 Filter & Listener

Moonbeamsc發表於2024-11-21

Filter

點選檢視程式碼
-- Filter
-- 
-- ·概念:Filter 表示過濾器,是JavaWeb 三大元件(Servlet、Filter、Listener)之一
-- ·過濾器可以把對資源的請求攔截下來,從而實現一些特殊的功能。
-- ·過濾器一般完成一些通用的操作,比如:許可權控制、統一編碼處理、敏感字元處理等等
-- 
-- Filter 快速入門
-- 1.定義類,實現 Filter介面,並重寫其所有方法
-- public class FilterDemo implements Filter {
-- public void init(Filterconfig filterconfig)
-- public void doFilter(ServletRequest request···
-- public void destroy(){}
-- 2.配置Filter攔截資源的路徑:在類上定義 @WebFilter 註解
-- @WebFilter("/*")
-- public class FilterDemo implements Filter {
-- 3.在doFiter方法中輸出一句話,並放行
-- public void doFilter(ServletRequest request···
-- System.out.println("filter 被執行了...");
-- //液行
-- chain.doFilter(request,response);
-- 
-- 1.執行流程 放行後訪問對應資源,資源訪問完成後,還會回到Filter中嗎? 會
-- 2.如果回到Filter中,是重頭執行還是執行放行後的邏輯呢? 放行後邏輯
-- 執行放行前邏輯->放行->訪問資源->執行放行後邏輯
-- 
-- 使用細節
-- Filter 攔截路徑配置
-- Filter 可以根據需求,配置不同的攔截資源路徑
-- @WebFilter("/*")
-- public class FilterDemo
-- 攔截具體的資源:/indexjsp:只有訪問index.jsp時才會被攔截
-- 目錄攔截:/user/*:訪問/user下的所有資源,都會被攔截
-- 字尾名攔截:*jsp:訪問字尾名為jsp的資源,都會被攔截
-- 攔截所有:/*:訪問所有資源,都會被攔截
-- 
-- 過濾器鏈
-- 一個Web應用,可以配置多個過濾器,這多個過濾器稱為過濾器鏈
-- 註解配置的Filter,優先順序按照過濾器類名(字串)的自然排序
-- 

Listener

點選檢視程式碼
-- Listener
-- 
-- Listener
-- · 概念:Listener表示監聽器,是JavaWeb三大元件(Servlet、Filter、Listener)之一。
-- · 監聽器可以監聽就是在application,session,request三個物件建立、銷燬
-- 或者往其中新增修改刪除屬性時自動執行程式碼的功能元件
-- · Listener分類:JavaWeb中提供了8個監聽器
-- 監聽器分類及監聽器名稱											作用
-- Servletcontext監聽
-- ServletcontextListener          用於對Servletcontext物件進行監聽(建立、銷燬)
-- ServletcontextAttributeListener 對Servletcontext物件中屬性的監聽(增刪改屬性)
-- Session監聽
-- HttpSessionListener             對session物件的整體狀態的監聽(建立、銷燬)
-- HttpSessionAttributeListener    對session物件中的屬性監聽(增刪改屬性)
-- HttpSessionBindingListener      監聽物件於session的繫結和解除
-- HttpSessionActivationListener   對session資料的鈍化和活化的監聽
-- Request監聽 
-- ServletRequestListener          對Request物件進行監聽(建立、銷燬)
-- ServletRequestAttributeListener 對Request物件中屬性的監聽(增刪改屬性)
-- 
-- 例如:
-- ServletContextListener 使用
-- 1.定義類,實現ServletContextListener接囗
-- public class ContextioaderListener implements ServletContextListener {
-- /**
-- * Servletcontext物件被建立:整個web應用釋出成功
-- * @param sce
-- */
-- /**
-- public void contextInitialized(ServletcontextEvent sce){}
-- /**
-- * ServletContext物件被銷燬:整個web應用解除安裝
-- * @param sce
-- */
-- public void contextDestroyed(ServletContextEvent sce){}
-- }
-- 2.在類上新增@WebListener 註解
-- 

相關文章