18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Spring攔截器:你的請求休想逃過我的五指山!

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2025-07-26 11:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

攔截器概述

在Spring框架中,攔截器(Interceptor)是一種強大的機制,它允許開發(fā)者在請求處理的不同階段插入自定義邏輯。WebApplicationContext作為Spring Web應(yīng)用的上下文容器,為攔截器的配置和管理提供了基礎(chǔ)支持。

攔截器主要作用于以下場景:
權(quán)限驗證
日志記錄
性能監(jiān)控
事務(wù)管理
通用行為注入等

攔截器與WebApplicationContext的關(guān)系

WebApplicationContext是Spring Web應(yīng)用的IoC容器擴展,它繼承自ApplicationContext,并添加了Web應(yīng)用特有的功能。攔截器通過WebApplicationContext進(jìn)行注冊和管理,成為請求處理管道的一部分。

public interface WebApplicationContext extends ApplicationContext {
    String ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE = WebApplicationContext.class.getName() + ".ROOT";
    
    ServletContext getServletContext();
}

攔截器類型

HandlerInterceptor

最常用的攔截器接口,定義了三個關(guān)鍵方法:

public interface HandlerInterceptor {
    default boolean preHandle(HttpServletRequest request, 
                             HttpServletResponse response, 
                             Object handler) throws Exception {
        return true;
    }
    
    default void postHandle(HttpServletRequest request, 
                          HttpServletResponse response, 
                          Object handler,
                          ModelAndView modelAndView) throws Exception {
    }
    
    default void afterCompletion(HttpServletRequest request, 
                               HttpServletResponse response, 
                               Object handler, 
                               Exception ex) throws Exception {
    }
}

AsyncHandlerInterceptor

HandlerInterceptor的擴展,增加了異步處理的支持。

WebRequestInterceptor

與HandlerInterceptor類似,但提供了更通用的WebRequest抽象,不依賴于Servlet API

攔截器配置

XML配置方式


    
    
    
    
    
        
        
    

Java配置方式

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoggingInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/static/**");
        
        registry.addInterceptor(new AuthInterceptor())
                .addPathPatterns("/admin/**");
    }
}

注解方式

@Component
public class MyInterceptor implements HandlerInterceptor {
    // 實現(xiàn)方法
}

@Configuration
public class InterceptorConfig {
    
    @Autowired
    private MyInterceptor myInterceptor;
    
    @Bean
    public WebMvcConfigurer adapter() {
        return new WebMvcConfigurer() {
            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                registry.addInterceptor(myInterceptor);
            }
        };
    }
}

攔截器執(zhí)行流程

攔截器在DispatcherServlet的處理流程中扮演重要角色:

preHandle:在處理器執(zhí)行前調(diào)用

返回true繼續(xù)執(zhí)行

返回false中斷請求處理

postHandle:在處理器執(zhí)行后,視圖渲染前調(diào)用

可修改ModelAndView

afterCompletion:在完整請求完成后調(diào)用

適合資源清理

高級攔截器特性

攔截器順序控制

可以通過order屬性控制多個攔截器的執(zhí)行順序:

registry.addInterceptor(new InterceptorA()).order(1);
registry.addInterceptor(new InterceptorB()).order(2);

路徑匹配模式

支持Ant風(fēng)格的路徑模式:

? 匹配一個字符

匹配零個或多個字符

** 匹配零個或多個目錄

異步請求處理

對于異步請求,afterConcurrentHandlingStarted方法會被調(diào)用而不是postHandle和afterCompletion。

攔截器與過濾器的區(qū)別

特性 攔截器(Interceptor) 過濾器(Filter)
容器依賴 Spring容器 Servlet容器
作用范圍 Spring MVC處理的請求 所有進(jìn)入容器的請求
訪問對象 可以訪問Handler和方法信息 只能訪問ServletRequest/Response
執(zhí)行時機 在DispatcherServlet內(nèi)部執(zhí)行 在DispatcherServlet外部執(zhí)行
依賴注入 支持 不支持

實際應(yīng)用示例

日志攔截器

public class LoggingInterceptor implements HandlerInterceptor {
    
    private static final Logger logger = LoggerFactory.getLogger(LoggingInterceptor.class);
    
    @Override
    public boolean preHandle(HttpServletRequest request, 
                           HttpServletResponse response, 
                           Object handler) {
        long startTime = System.currentTimeMillis();
        request.setAttribute("startTime", startTime);
        logger.info("Request URL: {} : Start Time={}", 
                   request.getRequestURL(), startTime);
        return true;
    }
    
    @Override
    public void afterCompletion(HttpServletRequest request, 
                               HttpServletResponse response, 
                               Object handler, 
                               Exception ex) {
        long startTime = (Long) request.getAttribute("startTime");
        long endTime = System.currentTimeMillis();
        logger.info("Request URL: {} : End Time={} : Time Taken={}ms", 
                   request.getRequestURL(), endTime, (endTime - startTime));
    }
}

認(rèn)證攔截器

public class AuthInterceptor implements HandlerInterceptor {
    
    @Override
    public boolean preHandle(HttpServletRequest request,
                            HttpServletResponse response,
                            Object handler) throws Exception {
        
        HttpSession session = request.getSession();
        if (session.getAttribute("user") == null) {
            response.sendRedirect("/login");
            return false;
        }
        return true;
    }
}

DEMO實測效果

被攔截

image.png

未被攔截

image.png
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1297

    瀏覽量

    73264
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    521

    瀏覽量

    22749
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    15665
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    HarmonyOS實戰(zhàn)開發(fā)-如何在Navigation中完成路由攔截

    路由攔截器interceptor.ets,定義攔截容器、注冊方法和公共攔截邏輯,interceptor.ets /** * 定義攔截實現(xiàn)接口 * * @param routerI
    發(fā)表于 05-08 14:21

    什么是java spring

    的事情。然而,Spring的用途不僅限于服務(wù)端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。Spring是一個容器,它包含并且管理系統(tǒng)對象
    發(fā)表于 09-11 11:16

    想做一個號碼攔截器。面對面5米內(nèi)接收到對方的手機號碼。也咨詢很多人,不是技

    想做一個號碼攔截器。面對面5米內(nèi)接收到對方的手機號碼。也咨詢很多人,不是技術(shù)問題就是,怕這東西觸犯法律。只是正規(guī)用途,并不會觸犯法律底線!望“能人”解決
    發(fā)表于 04-29 16:16

    五指山回收發(fā)那科驅(qū)動回收三菱變頻回收秀洲CPU模塊執(zhí)行回收PLC

    `五指山回收發(fā)那科驅(qū)動回收三菱變頻回收秀洲CPU模塊執(zhí)行回收PLC,長期專業(yè)回收西門子系列觸摸屏,回收西門子人機界面,回收西門子擴展模塊,回收西門子電源模塊,回收西門子通訊模塊,
    發(fā)表于 07-14 17:50

    網(wǎng)絡(luò)組件axios可以在OpenHarmony上使用了

    分為兩種:請求攔截器、響應(yīng)攔截器?!?請求攔截器請求發(fā)送前進(jìn)行必要操作處理,例如添加統(tǒng)一co
    發(fā)表于 08-29 12:11

    動能攔截器六自由度仿真建模研究

    仿真建模技術(shù)是動能攔截器制導(dǎo)律研究中的重要技術(shù),文中主要建立動能攔截器的軌道運動動力學(xué)以及姿態(tài)運動動力學(xué)模型,并建立完整的制導(dǎo)控制系統(tǒng)數(shù)學(xué)模型。文末,以某型
    發(fā)表于 08-07 08:50 ?14次下載

    springmvc 自定義攔截器實現(xiàn)未登錄用戶的攔截

    springmvc自定義攔截器實現(xiàn)未登錄用戶的攔截
    發(fā)表于 11-25 14:44 ?2642次閱讀
    springmvc 自定義<b class='flag-5'>攔截器</b>實現(xiàn)未登錄用戶的<b class='flag-5'>攔截</b>

    汽車庫融融資監(jiān)控“五指山

    ,使用了這個技術(shù)手段,如同有了如來佛祖的“五指山”,不用人為管理了,大幅節(jié)約成本,本質(zhì)上徹底實現(xiàn)監(jiān)管。智信通庫融融資方案將逐步成為主流小編看著躊躇滿志的智信通銷售總經(jīng)理,感嘆:科技,只有科技支撐的公司,才可以有這樣的底氣。同時隱約感覺到智信通庫融融資方案的潛力實在巨大。
    發(fā)表于 09-20 14:57 ?273次閱讀

    小米的“五指山”意圖擊敗余承東的華為終端+榮耀組合的寶具“雙截龍”

    首先是小米的“五指山”,“ 小米將專注先進(jìn)技術(shù)的率先導(dǎo)入”,問題是小米有先進(jìn)技術(shù)嗎?據(jù)小米官方消息,小米集團在2018年第一季度的研發(fā)費用為11.04億元;2017年全年研發(fā)費用為31.51億元
    的頭像 發(fā)表于 01-28 16:01 ?3891次閱讀

    五指刮擦試驗儀測試方法的概述及優(yōu)勢介紹

    五指刮擦試驗儀適用于行業(yè): 五指刮擦試驗儀用于各種汽車用內(nèi)飾材料,如塑料、橡膠、皮革、織物、涂層材料、非涂層材料及其他復(fù)合材料等的耐刮擦性能檢測。 多功能耐刮擦儀也稱之為:耐刮擦試驗機、耐刮擦測定儀
    發(fā)表于 07-27 11:26 ?2452次閱讀

    Spring認(rèn)證_什么是Spring GraphQL

    GraphQL 支持通過 HTTP 和 WebSocket 的 GraphQL 請求。 HTTP GraphQlHttpHandler 通過 HTTP 請求處理 GraphQL,并委托給 Web 攔截執(zhí)行
    的頭像 發(fā)表于 08-06 14:30 ?1100次閱讀
    <b class='flag-5'>Spring</b>認(rèn)證_什么是<b class='flag-5'>Spring</b> GraphQL

    Spring中用到了哪些設(shè)計模式

    Spring 通過動態(tài)代理對類進(jìn)行方法級別的切面增強,動態(tài)生成目標(biāo)對象的代理類,并在代理類的方法中設(shè)置攔截器,通過執(zhí)行攔截器中的邏輯增強了代理方法的功能,從而實現(xiàn) AOP。
    發(fā)表于 05-30 09:43 ?447次閱讀
    <b class='flag-5'>Spring</b>中用到了哪些設(shè)計模式

    Spring MVC的工作原理是怎樣的

    的處理、視圖的渲染和響應(yīng)的發(fā)送。 首先,當(dāng)用戶在瀏覽中輸入一個URL并發(fā)送請求時,請求被發(fā)送到服務(wù)。服務(wù)會根據(jù)
    的頭像 發(fā)表于 11-22 16:53 ?1315次閱讀

    springboot過濾器和攔截器哪個先執(zhí)行

    Spring Boot是一個用于構(gòu)建Java應(yīng)用程序的開發(fā)框架,它提供了許多功能和工具來簡化開發(fā)和部署過程。其中兩個重要的功能是過濾器和攔截器。本文將詳細(xì)介紹Spring Boot過濾器和攔截
    的頭像 發(fā)表于 12-03 15:00 ?3193次閱讀

    使用go語言實現(xiàn)一個grpc攔截器

    在開發(fā)grpc服務(wù)時,我們經(jīng)常會遇到一些通用的需求,比如:日志、鏈路追蹤、鑒權(quán)等。這些需求可以通過grpc攔截器來實現(xiàn)。本文使用go語言來實現(xiàn)一個 grpc一元模式(Unary)攔截器,上報鏈路追蹤信息。
    的頭像 發(fā)表于 12-18 10:13 ?1114次閱讀
    使用go語言實現(xiàn)一個grpc<b class='flag-5'>攔截器</b>