目錄
1.什么是Spring Web MVC?
1.1 MVC定義
1.2 Spring MVC與MVC關系
2.為什么要學習Spring MVC
3.項目創建
4.Spring MVC連接
4.1 @RequestMapping
4.2 @PostMapping和@GetMapping
5.Spring MVC參數獲取
5.1 獲取單個參數
5.2 獲取多個參數
5.3 獲取普通對象
5.4 接收JSON對象
?5.5 獲取URL中參數
5.6 獲取文件
?5.7 獲取Cookie/Session
5.8 獲取Header
6.返回數據(響應)
6.1 返回靜態頁面
6.2 返回數據
6.3 返回HTML代碼片段
6.4 返回JSON
1.什么是Spring Web MVC?
Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, "Spring Web MVC",comes from the name of its source module (spring-webmvc)
?引至:Spring Web MVC :: Spring Framework
那么什么是Servet呢?為什么不直接使用Servet?
Servlet 是 Java 語言編寫的服務器端程序,用于處理客戶端發送的請求并生成響應。Servlet 運行在支持 Java Servlet 規范的 Web 服務器中,如 Apache Tomcat、Jetty 等。Servlet 提供了一種在 Web 服務器上動態生成 Web 內容的方式,可以處理各種類型的請求,如 HTTP 請求。
盡管 Servlet 可以實現 Web 應用程序的各種功能,但它們通常是在較低級別上操作 HTTP 請求和響應的。使用 Servlet 編寫應用程序需要處理很多底層細節,例如解析請求參數、處理會話管理、管理狀態等。這些工作可以在開發 Web 應用程序時變得繁瑣和重復。
也就是說Servet開發Web還是太麻煩了,現在這個追求效率的時代,再去使用Servet已經是out了。
用一句話總結Spring Web MCV:Spring Web MVC 是?個 Web 框架.,下面簡稱為Spring MVC。然?要真正的理解什么是 Spring MVC?我們?先要搞清楚什么是 MVC?
1.1 MVC定義

1.2 Spring MVC與MVC關系
所以, Spring MVC主要關注有兩個點:?
1.MVC
2.Web架構。
2.為什么要學習Spring MVC

3.項目創建
創建方式1:Spring MVC 使? Spring Boot 的?式創建創建方式2:Spring MVC更早期的創建?式:通過maven添加所需要的各種依賴,這種方式中的過程較復雜,故在2018年以后基本都是使用Spring Boot來進行創建Spring MVC項目。
?通過Spring Boot創建Spring MVC項目:

4.Spring MVC連接
前面提到了學習Spring MVC的第一個點:
路由映射是將用戶發起的請求(通常是 URL 請求)與服務器端程序中的特定處理邏輯進行關聯的過程。在 Web 開發中,當用戶在瀏覽器地址欄輸入一個 URL 或點擊頁面中的鏈接時,瀏覽器會向服務器發送一個請求。路由映射的作用是將這個請求映射到后端服務器中的某個處理器(例如控制器方法)上,以執行相應的業務邏輯。
Spring MVC項目實現連接的操作就與路由映射密切相關,實現路由映射可以使用注解。
用來實現注冊接口的路由映射的常見注解有@RequestMapping
,@PostMapping
,@GetMapping
。
4.1 @RequestMapping
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@RestController
public class UserController {// 路由器規則注冊@RequestMapping("/sayHi")public String sayHi(){return "hello,Spring MVC";}
}
@RequestMapping注解的基本用法說明:
- @RequestMapping注解可以修飾類,也可以修飾方法,當修飾類和方法時,訪問的地址是類+方法。
- ?@RequestMapping注解可以處理任何HTTP方法的請求,包括GET、POST、PUT、DELETE等。
- @RequestMapping注解可以使用method屬性來進行限定處理請求的HTTP方法。
- @RequestMapping 的URL 路徑最前?加不加 / (斜杠)都可以, Spring程序啟動時, 會進?判斷, 如果前?沒有加 / , Spring會拼接上?個 /

4.2 @PostMapping和@GetMapping
(1)@PostMapping基本使用
@RestController
public class UserController {// 路由器規則注冊@PostMapping("/sayHi")public String sayHi(){return "hello,Spring MVC";}
}
@PostMapping注解的基本用法說明:
- @PostMapping注解通常用于修飾控制器類中的方法,而不是類本身。
- @PostMapping注解只可以處理HTTP POST請求映射到處理方法上。
(2)@GetMapping基本使用
@RestController
public class UserController {// 路由器規則注冊@GetMapping("/sayHi")public String sayHi(){return "hello,Spring MVC";}
}
@GetMapping注解的基本用法說明:
- @GetMapping注解通常用于修飾控制器類中的方法,而不是類本身。
- @GetMapping注解只可以處理HTTP GET請求映射到處理方法上
(3)get請求在Spring MVC中的3種寫法
// 寫法1
@RequestMapping("/index")
// 寫法2
@RequestMapping(value = "/index",method = RequestMethod.GET)
// 寫法3
@GetMapping("/index")
(4)post的2種寫法
// 寫法1
@RequestMapping(value = "/index",method = RequestMethod.POST)
// 寫法2
@PostMapping("/index")
5.Spring MVC參數獲取
5.1 獲取單個參數
(1)代碼
(2)Postman發送請求驗證
注意:
- 代碼中聲明的參數名與請求地址欄中的參數名要完全一致
- ?否則,必須要在后端對變量進行重命名
注意: 此時我們的前端就必須傳遞被重命名后的變量了,也就是前端的變量名必須是userName,否則就會報錯。

5.2 獲取多個參數
(1)代碼:
(2)Postman驗證
獲取多個參數注意說明:
1)進行參數匹配時,后端代碼的參數名稱要與地址欄中的參數名稱要保證完全一致。
2)前后端進行參數匹配時,是以參數的名稱進行匹配的,因此地址欄中的參數位置是不影響后端獲取參數的結果。
5.3 獲取普通對象
實體類:
(1)代碼:
(2)postman驗證
獲取普通對象注意說明:
1)Spring MVC 會根據地址欄中輸入的參數列表自動實現參數對象的賦值操作。
5.4 接收JSON對象


?5.5 獲取URL中參數
使用@PathVariable注解


?注意:

5.6 獲取文件
使用@RequestPart
(1)代碼:
?(3)觀察硬盤F:/Download下是否成功寫入后端接收的前端傳來的文件:
?5.7 獲取Cookie/Session
(1)什么是Cookie
HTTP 協議??是屬于 "?狀態" 協議. 也就是說:默認情況下 HTTP 協議的客?端和服務器之間的這次通信, 和下次通信之間沒有直接的聯系.
上述圖中的 "令牌" 通常就存儲在 Cookie 字段中。



(4)Session的存儲與獲取


- HttpSession getSession(boolean create);
- HttpSession getSession();




5.8 獲取Header
傳統方式獲取Header
獲取Header也是從 HttpServletRequest 中獲取
?也可以通過@RequestHeader注解來實現:
6.返回數據(響應)
獲取到前端傳來的參數后,我們可以在后端進行業務編排和處理。當處理完業務后,需要再將數據響應給前端,響應結果可以是數據, 也可以是靜態??,也可 以針對響應設置狀態碼, Header信息等。
6.1 返回靜態頁面
創建前端?? index.html(注意路徑)
后端代碼:
執行結果:


@RestController = @Controller + @ResponseBody?
6.2 返回數據
@Controller
public class IndexController {@RequestMapping("/index")public Object index(){return "/index.html";
}@RequestMapping("/returnData")@ResponseBodypublic String returnData(){return "該?法返回數據";}
}
6.3 返回HTML代碼片段


6.4 返回JSON
結 語
這就是本期總結的全部關于Spring MVC的知識點,希望這篇博客能夠幫助大家更好地掌握SpringMVC,并在實際項目中應用這些知識,構建出高效、穩定的Web應用。如果你有任何疑問或需要進一步的探討,歡迎在評論區留言,我們一起交流學習。感謝你的閱讀!