網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
在之前我們先簡(jiǎn)單那談?wù)凷pring、SpringBoot以及Spring MVC框架之間有什么關(guān)系?
首先Spring是一個(gè)框架,SpringBoot腳手架是為了快速開(kāi)發(fā)Spring框架而創(chuàng)造的技術(shù)。可以理解為SpringBoot又在Spring上面包了一層殼子,是基于Spring的,是為了讓使用Spring更爽,其核心還是Spring。然后,Spring MVC是Spring中的一個(gè)Web框架模塊,是基于Servlet API構(gòu)建的。
那MVC又是什么呢?
MVC 是Model View Controller 的首字母縮寫(xiě),翻譯中文就是“模型、視圖、控制器”,它是一種設(shè)計(jì)模式,這種設(shè)計(jì)模式將軟件(項(xiàng)目)分為三部分:模型、視圖和控制器。

MVC和 Spring MVC是什么關(guān)系?
MVC是一種設(shè)計(jì)思想,而Spring MVC是一個(gè)具體的實(shí)現(xiàn)框架。有點(diǎn)類似IoC和DI的關(guān)系了,IoC是一種思想,而DI是這種思想的一種具體實(shí)現(xiàn)。
Spring MVC是一個(gè)基于MVC設(shè)計(jì)模式和Servlet API實(shí)現(xiàn)的Web 項(xiàng)日,同時(shí)Spring MVC 又是Spring 框架中的一個(gè)WEB模塊,它是隨著Spring 的誕生而存在的一個(gè)框架。Spring 和 Spring MVC誕生的歷史是比較久遠(yuǎn),在它們之后才有了Spring Boot。
Spring MVC項(xiàng)目如何創(chuàng)建呢?
基于Spring Boot框架添加一個(gè)Spring Web(它使用的就是Spring MVC)依賴,此時(shí)項(xiàng)目就變成了Spring MVC項(xiàng)目。
本文主要從以下三個(gè)方面進(jìn)行闡述:
1、實(shí)現(xiàn)用戶和程序的映射(在瀏覽器輸入U(xiǎn)RL地址之后,能夠在程序中匹配到相應(yīng)方法)。
2、服務(wù)器端獲取到用戶的請(qǐng)求參數(shù)。
3、服務(wù)器端要將結(jié)果返回給用戶(前端)。
1、實(shí)現(xiàn)用戶和程序的映射
方法一:@RequestMapping("/ xxx")

@RequestMapping特征:
1、@RequestMapping 既能修飾類((可選)也能修飾方法。
2、默認(rèn)情況下@RequestMapping 既支持 POST請(qǐng)求方式,也支持GET請(qǐng)求方式。
@RequestMapping 參數(shù)擴(kuò)展(只支持某種類型的請(qǐng)求方式,比如 POST、GET、PUT等類型的請(qǐng)求方式):

方法2:使用@PostMapping ("/xxx")

方法3:使用@GetMapping("/xxx")

2、服務(wù)器端獲取到用戶的請(qǐng)求參數(shù)
1.獲取單個(gè)參數(shù)

2.獲取多個(gè)參數(shù)

3.獲取對(duì)象


擴(kuò)展功能:參數(shù)重命名
使用@RequestParam注解,當(dāng)前端傳過(guò)來(lái)的參數(shù)名稱與我們?cè)诤蠖怂鶎?xiě)的參數(shù)名字不相對(duì)應(yīng)的時(shí)候,而且還不能改動(dòng)前端代碼的時(shí)候以及后端代碼大量使用了這個(gè)名稱不便修改時(shí),這個(gè)時(shí)候往往我們可以通過(guò)參數(shù)重命名的方式來(lái)解決。
比如前端傳過(guò)來(lái)的是name,而我們后端大量使用的是username:

@RequestParam注意事項(xiàng):如果在參數(shù)中添加@RequestParam注解,那么前端一定要傳遞此參數(shù),否則就會(huì)報(bào)錯(cuò),如果想要解決此問(wèn)題,可以給@RequestParam里面添加required = false。

4.接收.JSON格式的數(shù)據(jù)
使用Postman模擬發(fā)送JSON數(shù)據(jù)給服務(wù)器:


5.從URL地址中獲取參數(shù)(不是從URL地址中的參數(shù)部分獲取參數(shù))


6.上傳文件
在上傳文件之前,先講講不同運(yùn)行平臺(tái)的配置文件設(shè)置:
1、新建不同平臺(tái)的配置文件(不同平臺(tái)配置文件的命名規(guī)則: application-平臺(tái).yml(properits)【必須這樣命名】)

2、在主配置文件中設(shè)置運(yùn)行的配置文件

3.服務(wù)器端代碼

4.使用Postman模擬上傳文件

這個(gè)時(shí)候就會(huì)在目錄下面看到上傳的文件了:

Spring中設(shè)置上傳文件的大小:
application.properties配置:
spring.servlet.multipart.max-file-size=100MB # 單個(gè)文件
spring.servlet.multipart.max-request-size=100MB # 單次請(qǐng)求,例如一個(gè)請(qǐng)求有多文件
application.yml配置:
spring:
servlet:
multipart:
maxFileSize: 100Mb
maxRequestSize: 1000Mb
7獲取Cookie
a) Servlet獲取Cookie 的方法


b)使用@Cookievalue注解實(shí)現(xiàn)Cookie 的讀取


8、獲取Header(請(qǐng)求頭)里面的信息
a) Servlet獲取Header的方法


b)使用@RequestHeader注解實(shí)現(xiàn)


9存儲(chǔ)和獲取Session
存儲(chǔ)Session: Servlet和 SpringMVC操作方式是一樣的。


獲取Session方法1(Servlet 模式):


獲取session方式2:@SessionAttribute


3、服務(wù)器端要將結(jié)果返回給用戶(前端)
1.返回一個(gè)非靜態(tài)頁(yè)面的數(shù)據(jù),使用@ResponseBody 注解

@ResponseBody 可以修飾類:表示當(dāng)前類中所有方法都會(huì)返回一個(gè)非靜態(tài)頁(yè)面的數(shù)據(jù);可以修飾方法:表示當(dāng)前方法返回的是一個(gè)非靜態(tài)頁(yè)面的數(shù)據(jù)。否則默認(rèn)返回的是一個(gè)html頁(yè)面
2.使用@RestController(=Controller+ResponseBody)


3.后端接受JSON數(shù)據(jù)的標(biāo)準(zhǔn)格式

4.請(qǐng)求重定向和請(qǐng)求轉(zhuǎn)發(fā)
請(qǐng)求轉(zhuǎn)發(fā)(forward)實(shí)現(xiàn)方式1:(請(qǐng)求轉(zhuǎn)發(fā)是服務(wù)器端幫用戶實(shí)現(xiàn)的)

請(qǐng)求轉(zhuǎn)發(fā)的實(shí)現(xiàn)方式2:

請(qǐng)求重定向(redirect)的實(shí)現(xiàn)方式1:(重定向的請(qǐng)求發(fā)生在客戶端(瀏覽器端))

請(qǐng)求重定向?qū)崿F(xiàn)方式2:

請(qǐng)求重定向和請(qǐng)求轉(zhuǎn)發(fā)有什么區(qū)別?
1.定義不同
2.跳轉(zhuǎn)方式不同
3.數(shù)據(jù)共享不同
4.最終URL地址不同
5.代碼實(shí)現(xiàn)不同
原文鏈接:https://blog.csdn.net/crazy_xieyi/article/details/129351331
- 上一篇:沒(méi)有了
- 下一篇:沒(méi)有了
相關(guān)推薦
- 2022-06-29 python人工智能tensorflow優(yōu)化器Optimizer算法匯總_python
- 2022-11-26 詳解redis-cli?命令_Redis
- 2023-10-31 SpringBoot手動(dòng)獲取實(shí)例
- 2022-01-17 Failed to load resource: the server responded with
- 2022-07-03 C#中的預(yù)定義類型與引用類型_C#教程
- 2022-06-06 flutter 創(chuàng)建項(xiàng)目、運(yùn)行項(xiàng)目、項(xiàng)目目錄
- 2023-04-06 TypeScript?基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)哈希表?HashTable教程_其它
- 2022-11-17 python中的queue隊(duì)列類型及函數(shù)用法_python
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支