最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaWeb之Filter與Listener使用解析

 更新時(shí)間:2024年01月12日 10:47:05   作者:咕咕貓_  
這篇文章主要介紹了JavaWeb之Filter與Listener使用解析,Filter表示過(guò)濾器,是JavaWeb三大組件(Servlet、Filter、Listener)之一,過(guò)濾器可以把對(duì)資源的請(qǐng)求攔截下來(lái),從而實(shí)現(xiàn)一些特殊的功能,需要的朋友可以參考下

一、Filter

1.1 Filter概述

  • 概念:Filter表示過(guò)濾器,是JavaWeb三大組件 (Servlet、Filter、Listener) 之一
  • 過(guò)濾器可以把對(duì)資源的請(qǐng)求攔截下來(lái),從而實(shí)現(xiàn)一些特殊的功能
  • 過(guò)濾器一般完成一些通用的操作,比如:權(quán)限控制、統(tǒng)一編碼處理、敏感字符處理等等

1.2 Filter快速入門

進(jìn)行 Filter 開(kāi)發(fā)分成以下三步實(shí)現(xiàn)

定義類,實(shí)現(xiàn)Filter接口,并重寫其所有方法

配置Filter攔截資源的路徑:在類上定義 @WebFilter 注解。而注解的value屬性值 /* 表示攔截所有的資源

在doFilter方法中輸出一句話,并放行

package com.learn.web.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/**
 * @author 咕咕貓
 * @version 1.0
 */
@WebFilter("/*")
public class FilterDemo implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //放行前,對(duì)request數(shù)據(jù)進(jìn)行處理
        System.out.println("1. FilterDemo....");
        //放行
        filterChain.doFilter(servletRequest,servletResponse);
        //放行后,對(duì)response數(shù)據(jù)進(jìn)行處理
        System.out.println("3. FilterDemo....");
    }
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void destroy() {
    }
}

1.3 Filter執(zhí)行流程

Filter的執(zhí)行流程如下:

1.4 Filter攔截的路徑配置

攔截路徑表示 Filter 會(huì)對(duì)請(qǐng)求的哪些資源進(jìn)行攔截,使用 @WebFilter 注解進(jìn)行配置。如: @WebFilter("攔截路徑")

攔截路徑有如下四種配置方式:

  1. 攔截具體的資源: /index.jsp:只有訪問(wèn)index.jsp時(shí)才會(huì)被攔截
  2. 目錄攔截:/user/*:訪問(wèn)/user下的所有資源,都會(huì)攔截
  3. 后綴名攔截:*. jsp:訪問(wèn)后綴名為jsp 的所有資源,都會(huì)被攔截
  4. 攔截所有:/*:訪問(wèn)所有資源,都會(huì)被攔截

1.5 過(guò)濾器鏈

過(guò)濾器鏈?zhǔn)侵冈谝粋€(gè)Web應(yīng)用,可以配置多個(gè)過(guò)濾器,這多個(gè)過(guò)濾器稱為過(guò)濾器鏈。

代碼案例中為什么是先執(zhí)行 FilterDemo ,后執(zhí)行 FilterDemo2 呢?

  • 我們現(xiàn)在使用的是注解配置Filter,而這種配置方式的優(yōu)先級(jí)是按照過(guò)濾器類名(字符串)的自然排序。
  • 比如有如下兩個(gè)名稱的過(guò)濾器 : BFilterDemo 和 AFilterDemo 。那一定是 AFilterDemo 過(guò)濾器先執(zhí)行。

二、Listener

2.1 概述

  • Listener表示監(jiān)聽(tīng)器,是JavaWeb三大組件(Servlet、Filter、Listener) 之一
  • 監(jiān)聽(tīng)器可以監(jiān)聽(tīng)就是在 application , session , request 三個(gè)對(duì)象創(chuàng)建、銷毀或者往其中添加修改刪除屬性時(shí)自動(dòng) 執(zhí)行代碼的功能組件。

application 是 ServletContext 類型的對(duì)象。

ServletContext 代表整個(gè)web應(yīng)用,在服務(wù)器啟動(dòng)的時(shí)候,tomcat會(huì)自動(dòng)創(chuàng)建該對(duì)象。在服務(wù)器關(guān)閉時(shí)會(huì)自動(dòng)銷毀該 對(duì)象。

2.2 分類

JavaWeb 提供了8個(gè)監(jiān)聽(tīng)器:

 這里面只有 ServletContextListener 這個(gè)監(jiān)聽(tīng)器后期會(huì)接觸到, ServletContextListener 是用來(lái)監(jiān)聽(tīng) ServletContext 對(duì)象的創(chuàng)建和銷毀。

2.3 ServletContextListener的使用

1. 定義類,實(shí)現(xiàn) ServletContextListener 接口并重寫所有的抽象方法

2. 在類上添加 @WebListener 注解

package com.learn.web.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
 * @author 咕咕貓
 * @version 1.0
 */
@WebListener
public class ContextLoaderListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        //加載資源
        System.out.println("ContextLoaderListener...");
    }
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        //釋放資源
    }
}

到此這篇關(guān)于JavaWeb之Filter與Listener使用解析的文章就介紹到這了,更多相關(guān)Filter與Listener使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot項(xiàng)目沒(méi)有把依賴的jar包一起打包的問(wèn)題解決

    SpringBoot項(xiàng)目沒(méi)有把依賴的jar包一起打包的問(wèn)題解決

    這篇文章主要介紹了SpringBoot項(xiàng)目沒(méi)有把依賴的jar包一起打包的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • SpringCloud微服務(wù)中跨域配置的方法詳解

    SpringCloud微服務(wù)中跨域配置的方法詳解

    在使用SpringCloud實(shí)現(xiàn)微服務(wù)時(shí),經(jīng)常會(huì)碰到前端頁(yè)面訪問(wèn)多個(gè)二級(jí)域名的情況,跨域是首先要解決的問(wèn)題。解決這個(gè)問(wèn)題,可以從兩方面入手,一種方案是在微服務(wù)各自的業(yè)務(wù)模塊中實(shí)現(xiàn),即在SpringBoot層實(shí)現(xiàn),另外一種方案就是在Gateway層實(shí)現(xiàn)
    2023-02-02
  • Netty實(shí)戰(zhàn)源碼解析NIO編程

    Netty實(shí)戰(zhàn)源碼解析NIO編程

    這篇文章主要為大家介紹了Netty實(shí)戰(zhàn)源碼解析NIO編程的核心組件及關(guān)系詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • @PathVariable獲取路徑中帶有 / 斜杠的解決方案

    @PathVariable獲取路徑中帶有 / 斜杠的解決方案

    這篇文章主要介紹了@PathVariable獲取路徑中帶有 / 斜杠的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring Boot整合mybatis使用注解實(shí)現(xiàn)動(dòng)態(tài)Sql、參數(shù)傳遞等常用操作(實(shí)現(xiàn)方法)

    Spring Boot整合mybatis使用注解實(shí)現(xiàn)動(dòng)態(tài)Sql、參數(shù)傳遞等常用操作(實(shí)現(xiàn)方法)

    這篇文章主要介紹了Spring Boot整合mybatis使用注解實(shí)現(xiàn)動(dòng)態(tài)Sql、參數(shù)傳遞等常用操作(實(shí)現(xiàn)方法),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Springboot?yml?Map?List讀取方式

    Springboot?yml?Map?List讀取方式

    這篇文章主要介紹了Springboot?yml?Map?List讀取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java之單例模式實(shí)現(xiàn)方案詳解

    Java之單例模式實(shí)現(xiàn)方案詳解

    這篇文章主要介紹了Java之單例模式實(shí)現(xiàn)方案詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java 中模仿源碼自定義ArrayList

    Java 中模仿源碼自定義ArrayList

    這篇文章主要介紹了Java 中模仿源碼自定義ArrayList的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java for循環(huán)Map集合優(yōu)化實(shí)現(xiàn)解析

    Java for循環(huán)Map集合優(yōu)化實(shí)現(xiàn)解析

    這篇文章主要介紹了Java for循環(huán)Map集合優(yōu)化實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot使用Hibernate攔截器實(shí)現(xiàn)時(shí)間自動(dòng)注入的操作代碼

    SpringBoot使用Hibernate攔截器實(shí)現(xiàn)時(shí)間自動(dòng)注入的操作代碼

    這篇文章主要介紹了SpringBoot使用Hibernate攔截器實(shí)現(xiàn)時(shí)間自動(dòng)注入的操作代碼,主要包括hibernate攔截器的相關(guān)知識(shí),結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10

最新評(píng)論

阿城市| 房山区| 壶关县| 新郑市| 定日县| 潞城市| 慈利县| 东乌珠穆沁旗| 得荣县| 洛南县| 洪泽县| 积石山| 武隆县| 云和县| 手游| 江城| 漠河县| 邹城市| 元氏县| 崇明县| 吉隆县| 山丹县| 高雄县| 密山市| 长垣县| 邢台县| 鄂托克旗| 祁连县| 衡南县| 玛纳斯县| 珠海市| 宁夏| 潼南县| 莱阳市| 梅河口市| 安义县| 东莞市| 龙川县| 贡觉县| 永春县| 济宁市|