spring boot開發中的資源處理等問題

文章目錄

      • 一、RESTful 風格
      • 二、Spring Boot 靜態資源處理
      • 三、Spring Boot 首頁(歡迎頁)
      • 四、@PathVariable 注解
      • 五、攔截器(Interceptor)
      • 六、過濾器(Filter)
      • 七、觸發器(Trigger)
      • 八、HandlerMapping 組件

一、RESTful 風格

  • 核心特點:將請求參數嵌入 URL 路徑中,通過 HTTP 方法(GET/POST/PUT/DELETE 等)表達操作語義,使接口設計更簡潔、規范。
  • 參數傳遞方式:使用 URL 路徑占位符(如 /users/{id})傳遞參數,而非傳統的 ?key=value 形式。
  • 示例
    • 獲取 ID 為 1 的用戶:GET /users/1(參數 id=1 放在 URL 中)
    • 更新 ID 為 1 的用戶:PUT /users/1

二、Spring Boot 靜態資源處理

  • 默認存放路徑:項目中 src/main/resources/static/ 目錄(或 public/resources/ 目錄,優先級:resources > static > public)。
  • 訪問規則
    • 靜態資源可直接通過 URL 訪問,路徑為 /資源名(無需包含 static 前綴)。例如 static/image/logo.png 可通過 http://localhost:8080/image/logo.png 訪問。
    • 靜態資源請求(/static/** 路徑模式)會被 Spring Boot 內置的資源處理器直接處理,不會經過 Controller 或 HandlerMapping,避免與業務接口沖突。

三、Spring Boot 首頁(歡迎頁)

  • 默認規則:Spring Boot 會自動識別 src/main/resources/static/src/main/resources/public/ 目錄下的 index.html 文件作為首頁。
  • 訪問方式:直接訪問應用根路徑(如 http://localhost:8080)即可顯示該首頁。

四、@PathVariable 注解

  • 作用:用于從 URL 路徑中獲取參數,配合 RESTful 風格使用。
  • 示例
    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {// id 的值從 URL 路徑中的 {id} 占位符獲取return userService.getUserById(id);
    }
    
  • 注意:若參數名與路徑占位符名稱不一致,需指定 value,如 @PathVariable("userId") Long id

五、攔截器(Interceptor)

  • 技術本質:基于 Spring MVC 的接口回調機制,用于在請求處理的預處理、后處理、完成后三個階段進行攔截操作(如登錄驗證、日志記錄)。
  • 實現方式
    1. 自定義類實現 HandlerInterceptor 接口,重寫 preHandle(預處理)、postHandle(后處理)、afterCompletion(完成后)方法。
    2. 通過 WebMvcConfigurer 配置類的 addInterceptors 方法注冊攔截器,并指定攔截/排除的路徑。
  • 示例
    // 自定義攔截器
    public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {// 預處理邏輯(如驗證登錄狀態)return true; // true 放行,false 攔截}
    }// 注冊攔截器
    @Configuration
    public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**") // 攔截所有路徑.excludePathPatterns("/login"); // 排除登錄路徑}
    }
    

六、過濾器(Filter)

  • 技術定位:Java EE 規范中的 Web 三大組件(Servlet、Filter、Listener)之一,基于 Servlet 容器,在請求進入 Servlet 之前或響應返回客戶端之前進行過濾。
  • 與攔截器的區別
    維度過濾器(Filter)攔截器(Interceptor)
    技術依賴依賴 Servlet 容器依賴 Spring MVC 框架
    攔截范圍所有請求(包括靜態資源)僅攔截 Spring MVC 處理的請求(Controller 方法)
    執行時機請求進入 Servlet 之前Controller 方法調用前后
  • 使用場景:字符編碼設置、跨域請求處理、敏感詞過濾等。

七、觸發器(Trigger)

  • 技術定位:數據庫層面的機制,當數據庫發生指定操作(如 INSERT/UPDATE/DELETE)時,自動觸發預設的 SQL 邏輯。
  • 特點
    • 運行在數據庫內部,與應用程序解耦。
    • 項目中慎用:遷移數據庫時可能因語法差異(如 MySQL 與 Oracle 觸發器語法不同)導致兼容性問題,且邏輯隱藏在數據庫中,不利于維護。

八、HandlerMapping 組件

  • 作用:Spring MVC 中用于 映射請求 URL 到具體的 Handler(如 Controller 方法) 的組件,負責解析請求路徑并找到對應的處理器。
  • 常見實現類
    1. BeanNameUrlHandlerMapping:根據 Bean 的名稱(以 / 開頭)映射 URL,如 Bean 名稱為 /user,則處理 http://localhost:8080/user 請求。
    2. RequestMappingHandlerMapping(主流):解析 @RequestMapping 及其派生注解(@GetMapping@PostMapping 等),實現 URL 與 Controller 方法的映射,支持復雜的路徑匹配和參數綁定。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94399.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94399.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94399.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[2025CVPR-圖象生成方向]ODA-GAN:由弱監督學習輔助的正交解耦比對GAN 虛擬免疫組織化學染色

?研究背景與挑戰? ?臨床需求? 組織學染色(如H&E和IHC)是病理診斷的核心技術,但IHC染色存在耗時、組織消耗大、圖像未對齊等問題。 虛擬染色技術可通過生成模型將H&E圖像轉換為IHC圖像,但現有方法面臨兩大挑戰: ?染色不真實性?:生成圖像與真實IHC的分布存在…

【Leetcode】2106. 摘水果

文章目錄題目思路代碼CJavaPython復雜度分析時間復雜度空間復雜度結果總結題目 題目鏈接🔗 在一個無限的 x 坐標軸上,有許多水果分布在其中某些位置。給你一個二維整數數組 fruits ,其中 fruits[i] [positioni, amounti] 表示共有 amounti…

(CVPR 2024)SLAM卷不動了,機器人還有哪些方向能做?

關注gongzhonghao【CVPR頂會精選】眾所周知,機器人因復雜環境適應性差、硬件部署成本高,對高效泛化一直需求迫切。再加上多傳感器協同難題、真實場景數據獲取不易,當下對遷移學習 機器人智能融合的研究也就更熱烈了。不過顯然,這…

Go語言 延 遲 語 句

延遲語句(defer)是Go 語言里一個非常有用的關鍵字,它能把資源的釋放語句與申請語句放到距離相近的位置,從而減少了資源泄漏的情況發生。延遲語句是什么defer 是Go 語言提供的一種用于注冊延遲調用的機制:讓函數或語句可…

【go 】數組的多種初始化方式與操作

在 Go 語言中,數組是一種固定長度的數據結構,用于存儲相同類型的元素。以下是 Go 中數組的多種初始化方式,結合搜索結果整理如下: (一)使用 var 關鍵字聲明并初始化數組 使用 var 關鍵字聲明數組時&#xf…

基于Java+MySQL 實現(Web)網上商城

悅桔拉拉商城1. 課設目的可以鞏固自己之前所學的知識,以及學習更多的新知識。可以掌握業務流程,學習工作的流程。2. 開發環境硬件環境:Window11 電腦、Centos7.6 服務器軟件環境:IntelliJ IDEA 2021.1.3 開發工具JDK 16 運行環境M…

高并發搶單系統核心實現詳解:Redisson分布式鎖實戰

一、方法整體流程解析 #mermaid-svg-MROZ2xF7WaNPaztA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MROZ2xF7WaNPaztA .error-icon{fill:#552222;}#mermaid-svg-MROZ2xF7WaNPaztA .error-text{fill:#552222;strok…

Android12 User版本開啟adb root, adb remount, su, 關閉selinux

開啟adb root 直接看adb源碼: __android_log_is_debuggable就是判斷ro.debuggable屬性值,感興趣可以在 源碼下grep下實現看看。auth_required :在adb源碼下定義的全局變量,默認等于true,。看名字就是是否需要用戶授權的flag, 這里不再繼續跟…

金融專業高分簡歷撰寫指南

一、金融求職簡歷原則:深度與亮點并存在金融行業求職時,一份出色的簡歷需突出經歷深度與亮點。01 教育背景需如實填寫畢業院校、專業、GPA及所學課程。金融行業不少公司對求職者學校和學歷有嚴格標準,如“985”“211”院校或碩士以上學歷等。…

專題:2025生命科學與生物制藥全景報告:產業圖譜、投資方向及策略洞察|附130+份報告PDF、原數據表匯總下載

原文鏈接:https://tecdat.cn/?p43526 過去一年,全球生命科學VC融資回暖至1021.5億美元,并購交易雖下滑23%卻聚焦關鍵賽道,創新藥管線中GLP-1受體激動劑以170億美元市場規模領跑,AI技術將研發周期縮短60%……這些數據背…

Compose筆記(四十)--ClickableText

這一節主要了解一下Compose中的ClickableText,在Jetpack Compose中,ClickableText是用于創建可點擊文本的組件,其核心功能是通過聲明式語法將文本設置為交互式元素,用戶點擊時可觸發特定操作。簡單總結如下:API含義 text&#xff…

面試必刷的數組三連:原地刪除與合并

堅持用 清晰易懂的圖解 多語言代碼,讓每道題變得簡單! 呆頭個人主頁詳情 呆頭個人Gitee代碼倉庫 呆頭詳細專欄系列 座右銘: “不患無位,患所以立。” 面試必刷的數組三連:原地刪除與合并前言目錄1.移除元素2.刪除有序…

力扣經典算法篇-41-旋轉圖像(輔助數組法,原地旋轉法)

1、題干 給定一個 n n 的二維矩陣 matrix 表示一個圖像。請你將圖像順時針旋轉 90 度。 你必須在 原地 旋轉圖像,這意味著你需要直接修改輸入的二維矩陣。請不要 使用另一個矩陣來旋轉圖像。 示例 1:輸入:matrix [[1,2,3],[4,5,6],[7,8,9]]…

譯|用戶增長策略如何使用因果機器學習的案例

來自上傳文件中的文章《[Causal Machine Learning for Growth: Loyalty Programs, LTV, and What to Do When You Can’t Experiment | by Torty Sivill | Towards AI]》 本文探討了當 A/B 測試不可行時,如何利用因果推斷從歷史數據中獲取洞察。技術亮點在于通過構建…

java~final關鍵字

final關鍵字final基本介紹final的使用細節final基本介紹 final是最終的意思,可以修飾類,屬性,方法,局部變量什么時候會要使用到final呢? 1.想要類不被繼承時 2.不希望類的某個屬性的值被改變時 3.不想父類的某個方法被…

Node.js(四)之數據庫與身份認證

數據庫與身份認證 目錄 數據庫與身份認證 十三、數據庫的基本概念 13.1 什么是數據庫 13.2 常見的數據庫及分類 13.3 傳統型數據庫的數據組織結構 1. Excel 的數據組織結構 2. 傳統型數據庫的數據組織結構 3. 實際開發中庫、表、行、字段的關系 十四、安裝并配置MySQ…

SpringBoot+SpringMVC常用注解

文章目錄發展歷程項目創建項目結構入門案例配置文件的兩種方式:只能使用一種創建項目二入門案例常用知識及注解Controller:類上面加,SpringMVC的注解GetMapping:方法上面加Spring框架的兩項核心功能Component:組件。控制反轉,加在業務類上面&…

標準GS相位恢復算法

標準GS相位恢復算法詳解與MATLAB實現 Gerchberg-Saxton (GS) 算法是一種經典的相位恢復方法,廣泛應用于光學成像、衍射成像和全息技術等領域。該算法通過迭代過程從未知相位的強度測量中恢復相位信息。 算法原理 GS算法的核心思想是利用傅里葉變換關系在空間域和頻率…

【Linux網絡編程基礎--socket地址API】

一、主機字節序和網絡字節序主機字節序(Host Byte Order):你當前電腦的內存字節順序(比如 x86 是小端)網絡字節序(Network Byte Order):統一規定為大端序(高位字節在高位…

Linux路徑MTU發現(Path MTU Discovery, PMTU)

Linux路徑MTU發現(Path MTU Discovery, PMTU)機制是TCP/IP協議棧中確保數據包高效傳輸的核心技術。其核心目標是動態探測源主機到目的主機路徑上的最小MTU(Maximum Transmission Unit),從而避免IP分片,提升…