国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring中的攔截器與過(guò)濾器:原理、區(qū)別與案例解析

這篇具有很好參考價(jià)值的文章主要介紹了Spring中的攔截器與過(guò)濾器:原理、區(qū)別與案例解析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

在Web應(yīng)用中,我們經(jīng)常需要對(duì)用戶的請(qǐng)求進(jìn)行某種處理,比如權(quán)限驗(yàn)證、日志記錄等。

Spring框架提供了兩種機(jī)制來(lái)實(shí)現(xiàn)這一需求:攔截器和過(guò)濾器。雖然它們的目標(biāo)相似,但在使用上存在一些差異。本篇文章我們將詳細(xì)探討這兩種機(jī)制的原理、區(qū)別,希望能給各位大佬帶來(lái)幫助!

Spring中的攔截器與過(guò)濾器:原理、區(qū)別與案例解析,秋招總結(jié)&小白入坑Java,spring,python,java

攔截器(Interceptor)

  1. 原理

攔截器是Spring MVC框架的一部分,它允許你在請(qǐng)求被實(shí)際處理之前或之后執(zhí)行某些操作。攔截器基于Java的反射機(jī)制,可以攔截到方法級(jí)別的請(qǐng)求。

  1. 實(shí)現(xiàn)

實(shí)現(xiàn)一個(gè)攔截器需要實(shí)現(xiàn)HandlerInterceptor接口,并重寫preHandle、postHandleafterCompletion方法。

其中,preHandle方法在請(qǐng)求被處理之前調(diào)用,可以用于權(quán)限驗(yàn)證等;postHandle方法在請(qǐng)求被處理之后,但在視圖渲染之前調(diào)用;afterCompletion方法在整個(gè)請(qǐng)求處理完成后調(diào)用。

  1. 配置

在Spring MVC的配置文件中,可以通過(guò)<mvc:interceptors>標(biāo)簽來(lái)配置攔截器,并指定其攔截的路徑。

  1. 舉個(gè)栗子

比如我們使用攔截器來(lái)實(shí)現(xiàn)權(quán)限驗(yàn)證。

@Component  
public class AuthInterceptor implements HandlerInterceptor {  
    @Override  
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
        // 簡(jiǎn)單的權(quán)限驗(yàn)證邏輯  
        String role = request.getSession().getAttribute("role");  
        if ("admin".equals(role)) {  
            return true;  // 允許請(qǐng)求繼續(xù)  
        } else {  
            response.sendRedirect("/access-denied");  // 重定向到拒絕訪問(wèn)頁(yè)面  
            return false;  // 中斷請(qǐng)求  
        }  
    }  
}

三、過(guò)濾器(Filter)

  1. 原理

過(guò)濾器是Servlet規(guī)范的一部分,它允許你在請(qǐng)求到達(dá)Servlet之前或響應(yīng)離開(kāi)Servlet之后執(zhí)行某些操作。過(guò)濾器基于函數(shù)回調(diào),可以攔截到請(qǐng)求和響應(yīng)對(duì)象,但對(duì)具體的處理方法不可見(jiàn)。

  1. 實(shí)現(xiàn)

實(shí)現(xiàn)一個(gè)過(guò)濾器需要實(shí)現(xiàn)Filter接口,并重寫doFilter方法。在該方法中,你可以對(duì)請(qǐng)求和響應(yīng)對(duì)象進(jìn)行操作。

  1. 配置

在web.xml文件中,可以通過(guò)<filter><filter-mapping>標(biāo)簽來(lái)配置過(guò)濾器,并指定其過(guò)濾的路徑。

  1. 舉個(gè)栗子

比如我們使用過(guò)濾器設(shè)置字符編碼。

@WebFilter(urlPatterns = "/*")  
public class EncodingFilter implements Filter {  
    @Override  
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {  
        request.setCharacterEncoding("UTF-8");  // 設(shè)置請(qǐng)求字符編碼  
        response.setCharacterEncoding("UTF-8");  // 設(shè)置響應(yīng)字符編碼  
        chain.doFilter(request, response);  // 繼續(xù)處理請(qǐng)求  
    }  
}

四、攔截器與過(guò)濾器的區(qū)別

這塊是面試中的重點(diǎn),在秋招中好幾次被問(wèn)到了這一點(diǎn),在這里詳細(xì)總結(jié)下:

  1. 規(guī)范不同:攔截器是Spring MVC框架的一部分,而過(guò)濾器是Servlet規(guī)范的一部分。
  2. 攔截級(jí)別不同:攔截器可以攔截到方法級(jí)別的請(qǐng)求,而過(guò)濾器只能攔截到請(qǐng)求和響應(yīng)對(duì)象。
  3. 使用范圍不同:攔截器只能用于Spring MVC項(xiàng)目,而過(guò)濾器可以用于任何基于Servlet的項(xiàng)目。
  4. 執(zhí)行順序不同:過(guò)濾器的執(zhí)行順序由其在web.xml中的配置順序決定,而攔截器的執(zhí)行順序由其在Spring MVC配置文件中的配置順序決定。

再舉個(gè)栗子,現(xiàn)在我們要做一個(gè)用戶登錄操作,我們來(lái)看兩者都是怎么實(shí)現(xiàn)的:

  1. 使用攔截器實(shí)現(xiàn):在preHandle方法中,檢查用戶的登錄狀態(tài)。如果用戶已登錄,則返回true讓請(qǐng)求繼續(xù)處理;如果用戶未登錄,則重定向到登錄頁(yè)面。
  2. 使用過(guò)濾器實(shí)現(xiàn):在doFilter方法中,同樣檢查用戶的登錄狀態(tài)。如果用戶已登錄,則調(diào)用chain.doFilter(request, response)讓請(qǐng)求繼續(xù)處理;如果用戶未登錄,則重定向到登錄頁(yè)面。

文章到這里就先結(jié)束了,感興趣的可以訂閱專欄哈,后續(xù)會(huì)繼續(xù)分享相關(guān)的知識(shí)點(diǎn)。

Spring中的攔截器與過(guò)濾器:原理、區(qū)別與案例解析,秋招總結(jié)&amp;小白入坑Java,spring,python,java文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-856516.html

到了這里,關(guān)于Spring中的攔截器與過(guò)濾器:原理、區(qū)別與案例解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring MVC學(xué)習(xí)筆記,包含mvc架構(gòu)使用,過(guò)濾器、攔截器、執(zhí)行流程等等

    Spring MVC學(xué)習(xí)筆記,包含mvc架構(gòu)使用,過(guò)濾器、攔截器、執(zhí)行流程等等

    ??????創(chuàng)作不易,各位看官點(diǎn)贊收藏. Spring MVC:Spring MVC是Spring Framework的一部分,是基于java實(shí)現(xiàn)的MVC的輕量級(jí)Web框架。 官網(wǎng)文檔地址:https://docs.spring.io/spring-framework/docs/4.2.4.RELEASE/spring-framework-reference/html/mvc.html 輕量級(jí),簡(jiǎn)單易學(xué)。 高效,基于請(qǐng)求和響應(yīng)的MVC框架。 與Spri

    2024年02月15日
    瀏覽(29)
  • 過(guò)濾器和攔截器的辨析

    過(guò)濾器和攔截器都是為了在請(qǐng)求到達(dá)目標(biāo)處理器(Servlet或Controller)之前或者之后插入自定義的處理邏輯 過(guò)濾器 : 遵循AOP(面向切面編程)思想實(shí)現(xiàn),基于Servlet規(guī)范提供的Filter接口,它是位于客戶端請(qǐng)求與服務(wù)器響應(yīng)之間的一個(gè)組件,依賴于Servlet容器。當(dāng)請(qǐng)求到達(dá)服務(wù)器時(shí),過(guò)濾器

    2024年03月11日
    瀏覽(21)
  • 【SpringBoot篇】Interceptor攔截器 | 攔截器和過(guò)濾器的區(qū)別

    【SpringBoot篇】Interceptor攔截器 | 攔截器和過(guò)濾器的區(qū)別

    攔截器(Interceptor)是一種軟件設(shè)計(jì)模式,用于在應(yīng)用程序處理請(qǐng)求或響應(yīng)時(shí)對(duì)其進(jìn)行攔截和修改。攔截器可以在整個(gè)應(yīng)用程序中使用,用于執(zhí)行跨越多個(gè)層的通用任務(wù),如身份驗(yàn)證、授權(quán)、緩存、日志記錄、性能計(jì)量等。 在Web開(kāi)發(fā)中,攔截器通常用于在請(qǐng)求到達(dá)控制器之前

    2024年02月04日
    瀏覽(28)
  • 過(guò)濾器Filter,攔截器Interceptor

    過(guò)濾器Filter,攔截器Interceptor

    過(guò)濾器Filter 快速入門 ? 詳情 登錄校驗(yàn)-Filter 攔截器Interceptor 簡(jiǎn)介快速入門 定義攔截器 配置攔截器 詳解(攔截路徑,執(zhí)行流程) 登錄校驗(yàn)-Interceptor

    2024年02月07日
    瀏覽(31)
  • 過(guò)濾器,監(jiān)聽(tīng)器與攔截器的區(qū)別

    過(guò)濾器,監(jiān)聽(tīng)器與攔截器的區(qū)別

    ? 過(guò)濾器和監(jiān)聽(tīng)器不是Spring MVC中的組件,而是Servlet的組件,由Servlet容器來(lái)管理。攔截器是Spring MVC中的組件,由Spring容器來(lái)管理 ? Servlet過(guò)濾器與Spring MVC 攔截器在Web應(yīng)用中所處的層次如下圖所示: 過(guò)濾器是Servlet的高級(jí)特性之一,是實(shí)現(xiàn)Filter接口的Java類。其基本功能就是對(duì)

    2024年02月14日
    瀏覽(53)
  • 【SpringBoot】過(guò)濾器,監(jiān)聽(tīng)器,攔截器介紹

    【SpringBoot】過(guò)濾器,監(jiān)聽(tīng)器,攔截器介紹

    通過(guò)兩幅圖我們可以理解攔截器和過(guò)濾器的特點(diǎn) 1、過(guò)濾器 過(guò)濾器是在請(qǐng)求進(jìn)入tomcat容器后,但請(qǐng)求進(jìn)入servlet之前進(jìn)行預(yù)處理的。請(qǐng)求結(jié)束返回也是,是在servlet處理完后,返回給前端之前。 理解上面這句話我們就可以知道,進(jìn)入servlet之前,主要是兩個(gè)參數(shù):ServletRequest,

    2024年02月04日
    瀏覽(28)
  • Springboot中使用攔截器、過(guò)濾器、監(jiān)聽(tīng)器

    Springboot中使用攔截器、過(guò)濾器、監(jiān)聽(tīng)器

    Javaweb三大組件:servlet、Filter(過(guò)濾器)、?Listener(監(jiān)聽(tīng)器) SpringBoot特有組件:Interceptor(攔截器) 過(guò)濾器、攔截器、監(jiān)聽(tīng)器、AOP(后續(xù)文章介紹)、全局異常處理器(后續(xù)文章介紹)是搭建系統(tǒng)框架時(shí),經(jīng)常用到的部分,全局異常處理器的作用很明顯,就是處理接口執(zhí)行

    2024年02月03日
    瀏覽(25)
  • 登錄頁(yè)面jwt密鑰,過(guò)濾器,攔截器,異常處理

    需求: 用戶未登錄時(shí),訪問(wèn)其他也沒(méi)面,操作添加、刪除等操作時(shí),強(qiáng)行跳轉(zhuǎn)至登錄頁(yè)面。 實(shí)現(xiàn)方法: 1.使用Cookie,登錄后后端添加一個(gè)cookie,每次頁(yè)面判斷是否有cookie, 2。使用session,原理同上,只不過(guò)session是存儲(chǔ)在服務(wù)器里的,cookie是在瀏覽器里。 3。使用jwt令牌,登

    2023年04月25日
    瀏覽(26)
  • springbboot攔截器,過(guò)濾器,監(jiān)聽(tīng)器及執(zhí)行流程

    springbboot攔截器,過(guò)濾器,監(jiān)聽(tīng)器及執(zhí)行流程

    過(guò)濾器是在請(qǐng)求進(jìn)入容器后,但請(qǐng)求進(jìn)入servlet之前進(jìn)行預(yù)處理的。請(qǐng)求結(jié)束返回也是,是在servlet處理完后,返回給前端之前 請(qǐng)求按照上圖進(jìn)入conteoller后執(zhí)行完再返回 過(guò)濾器是Servlet規(guī)范中定義的一種組件,可以用于在請(qǐng)求進(jìn)入Web應(yīng)用程序之前或響應(yīng)離開(kāi)Web應(yīng)用程序之前對(duì)請(qǐng)

    2024年02月13日
    瀏覽(20)
  • 過(guò)濾器(Filter)和攔截器(Interceptor)有什么不同?

    過(guò)濾器(Filter)和攔截器(Interceptor)有什么不同?

    過(guò)濾器(Filter)和攔截器(Interceptor)是用于處理請(qǐng)求和響應(yīng)的中間件組件,但它們?cè)趯?shí)現(xiàn)方式和應(yīng)用場(chǎng)景上有一些不同。 過(guò)濾器 是Servlet規(guī)范中定義的一種組件,通常以Java類的形式實(shí)現(xiàn)。過(guò)濾器通過(guò)在 web.xml 配置文件中聲明來(lái)注冊(cè),并在Web應(yīng)用程序的請(qǐng)求和響應(yīng)鏈中攔截請(qǐng)

    2024年02月07日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包