FilterListener笔记
生活随笔
收集整理的這篇文章主要介紹了
FilterListener笔记
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今日內(nèi)容
1. Filter:過濾器 2. Listener:監(jiān)聽器Filter:過濾器
1. 概念:* 生活中的過濾器:凈水器,空氣凈化器,土匪、* web中的過濾器:當(dāng)訪問服務(wù)器的資源時,過濾器可以將請求攔截下來,完成一些特殊的功能。* 過濾器的作用:* 一般用于完成通用的操作。如:登錄驗證、統(tǒng)一編碼處理、敏感字符過濾...2. 快速入門:1. 步驟:1. 定義一個類,實(shí)現(xiàn)接口Filter2. 復(fù)寫方法3. 配置攔截路徑1. web.xml2. 注解2. 代碼:@WebFilter("/*")//訪問所有資源之前,都會執(zhí)行該過濾器public class FilterDemo1 implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("filterDemo1被執(zhí)行了....");//放行filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {}}3. 過濾器細(xì)節(jié):1. web.xml配置 <filter><filter-name>demo1</filter-name><filter-class>cn.itcast.web.filter.FilterDemo1</filter-class></filter><filter-mapping><filter-name>demo1</filter-name><!-- 攔截路徑 --><url-pattern>/*</url-pattern></filter-mapping>2. 過濾器執(zhí)行流程1. 執(zhí)行過濾器2. 執(zhí)行放行后的資源3. 回來執(zhí)行過濾器放行代碼下邊的代碼3. 過濾器生命周期方法1. init:在服務(wù)器啟動后,會創(chuàng)建Filter對象,然后調(diào)用init方法。只執(zhí)行一次。用于加載資源2. doFilter:每一次請求被攔截資源時,會執(zhí)行。執(zhí)行多次3. destroy:在服務(wù)器關(guān)閉后,Filter對象被銷毀。如果服務(wù)器是正常關(guān)閉,則會執(zhí)行destroy方法。只執(zhí)行一次。用于釋放資源4. 過濾器配置詳解* 攔截路徑配置:1. 具體資源路徑: /index.jsp 只有訪問index.jsp資源時,過濾器才會被執(zhí)行2. 攔截目錄: /user/* 訪問/user下的所有資源時,過濾器都會被執(zhí)行3. 后綴名攔截: *.jsp 訪問所有后綴名為jsp資源時,過濾器都會被執(zhí)行4. 攔截所有資源:/* 訪問所有資源時,過濾器都會被執(zhí)行* 攔截方式配置:資源被訪問的方式* 注解配置:* 設(shè)置dispatcherTypes屬性1. REQUEST:默認(rèn)值。瀏覽器直接請求資源2. FORWARD:轉(zhuǎn)發(fā)訪問資源3. INCLUDE:包含訪問資源4. ERROR:錯誤跳轉(zhuǎn)資源5. ASYNC:異步訪問資源* web.xml配置* 設(shè)置<dispatcher></dispatcher>標(biāo)簽即可5. 過濾器鏈(配置多個過濾器)* 執(zhí)行順序:如果有兩個過濾器:過濾器1和過濾器21. 過濾器12. 過濾器23. 資源執(zhí)行4. 過濾器25. 過濾器1 * 過濾器先后順序問題:1. 注解配置:按照類名的字符串比較規(guī)則比較,值小的先執(zhí)行* 如: AFilter 和 BFilter,AFilter就先執(zhí)行了。2. web.xml配置: <filter-mapping>誰定義在上邊,誰先執(zhí)行 4. 案例:1. 案例1_登錄驗證* 需求:1. 訪問day17_case案例的資源。驗證其是否登錄2. 如果登錄了,則直接放行。3. 如果沒有登錄,則跳轉(zhuǎn)到登錄頁面,提示"您尚未登錄,請先登錄"。2. 案例2_敏感詞匯過濾* 需求:1. 對day17_case案例錄入的數(shù)據(jù)進(jìn)行敏感詞匯過濾2. 敏感詞匯參考《敏感詞匯.txt》3. 如果是敏感詞匯,替換為 *** * 分析:1. 對request對象進(jìn)行增強(qiáng)。增強(qiáng)獲取參數(shù)相關(guān)方法2. 放行。傳遞代理對象* 增強(qiáng)對象的功能:* 設(shè)計模式:一些通用的解決固定問題的方式1. 裝飾模式2. 代理模式* 概念:1. 真實(shí)對象:被代理的對象2. 代理對象:3. 代理模式:代理對象代理真實(shí)對象,達(dá)到增強(qiáng)真實(shí)對象功能的目的* 實(shí)現(xiàn)方式:1. 靜態(tài)代理:有一個類文件描述代理模式2. 動態(tài)代理:在內(nèi)存中形成代理類* 實(shí)現(xiàn)步驟:1. 代理對象和真實(shí)對象實(shí)現(xiàn)相同的接口2. 代理對象 = Proxy.newProxyInstance();3. 使用代理對象調(diào)用方法。4. 增強(qiáng)方法* 增強(qiáng)方式:1. 增強(qiáng)參數(shù)列表2. 增強(qiáng)返回值類型3. 增強(qiáng)方法體執(zhí)行邏輯Listener:監(jiān)聽器
* 概念:web的三大組件之一。* 事件監(jiān)聽機(jī)制* 事件 :一件事情* 事件源 :事件發(fā)生的地方* 監(jiān)聽器 :一個對象* 注冊監(jiān)聽:將事件、事件源、監(jiān)聽器綁定在一起。 當(dāng)事件源上發(fā)生某個事件后,執(zhí)行監(jiān)聽器代碼* ServletContextListener:監(jiān)聽ServletContext對象的創(chuàng)建和銷毀* 方法:* void contextDestroyed(ServletContextEvent sce) :ServletContext對象被銷毀之前會調(diào)用該方法* void contextInitialized(ServletContextEvent sce) :ServletContext對象創(chuàng)建后會調(diào)用該方法* 步驟:1. 定義一個類,實(shí)現(xiàn)ServletContextListener接口2. 復(fù)寫方法3. 配置1. web.xml<listener><listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class></listener>* 指定初始化參數(shù)<context-param>2. 注解:* @WebListener總結(jié)
以上是生活随笔為你收集整理的FilterListener笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AjaxJson笔记(1)
- 下一篇: Response笔记