Spring MVC的項(xiàng)目準(zhǔn)備和連接建立方法
1. 什么是 Spring Web MVC
Spring Web MVC 是基于 Servlet API 構(gòu)建的原始 Web 框架,從已開是就包含在 Spring 框架中。它的正式名稱“Spring Web MVC”是自其源模塊的名稱(Spring-webmvc),但它通常被稱為“Spring mvc”
[!quote] 什么是
Servlet
Servlet是一種實(shí)現(xiàn)動(dòng)態(tài)頁面的技術(shù)。準(zhǔn)確來講Servlet是一套Java Web開發(fā)的規(guī)范,或者說是一套 JavaWeb 開發(fā)的技術(shù)標(biāo)準(zhǔn)。只有規(guī)范并不能做任何事,必須要有人去實(shí)現(xiàn)它。所謂實(shí)現(xiàn)Servlet規(guī)范,就是真正編寫代碼去實(shí)現(xiàn)Servlet規(guī)范提到的各種功能,包括類、方法、屬性等。Servlet規(guī)范是開放的,除了Sun公司,其他公司也能實(shí)現(xiàn)Servlet規(guī)范,目前常見的實(shí)現(xiàn)了Servlet規(guī)范的產(chǎn)品包括Tomcat、Weblogic、Jetty、Jboss、WebSphere等,它們都被稱為“Servlet容器”。Servlet容器用來管理程序猿編寫的Servlet類
從上述定義我們可以得出一個(gè)信息:Spring Web MVC 是一個(gè) Web 框架。下面我們簡(jiǎn)稱“Spring MVC”
然而要真正理解什么是 Spring MVC,我們首先要搞清楚什么是 MVC
1.1 MVC 定義
MVC 是 Model View Controller 的縮寫,它是軟件工程中的一種軟件架構(gòu)設(shè)計(jì)模式,它把軟件系統(tǒng)分為:模型、視圖和控制器三個(gè)部分

View(視圖):指在應(yīng)用程序中專門用來與瀏覽器進(jìn)行交互,展示數(shù)據(jù)的資源Model(模型):是應(yīng)用程序的主體部分,用來處理程序中數(shù)據(jù)邏輯的部分Controller(控制器):可以理解為一個(gè)分發(fā)器,用來決定視圖發(fā)來的請(qǐng)求,需要用哪一個(gè)模型來處理,以及處理完后需要跳回哪一個(gè)視圖。即用來連接視圖和模型
我們?nèi)ワ埖瓿燥?,我們坐下,服?wù)員讓我們點(diǎn)單。點(diǎn)完之后,服務(wù)員就把單給到前臺(tái),然后前臺(tái)把單給到后廚
- 服務(wù)員 ==>
View,接待我們的 - 前臺(tái)==>
Contriller,出現(xiàn)一些沖突(菜不對(duì)等等情況),就會(huì)去前臺(tái) - 后廚 ==>
Model,菜做好之后,把菜品給到前臺(tái),前臺(tái)再把菜給到服務(wù)員,服務(wù)員給我們上菜
我們是和服務(wù)員進(jìn)行交互,前臺(tái)是控制他們兩個(gè)之間的關(guān)系
去面試,HR 和部門的負(fù)責(zé)人對(duì)接。候選人到達(dá)公司,HR 接待;HR 去找部門的負(fù)責(zé)人安排面試;部門的負(fù)責(zé)人安排一個(gè)小伙去進(jìn)行面試
- HR ==>
View - 部門負(fù)責(zé)人 ==>
Controller - 面試官 ==>
Model
1.2 什么是 Spring MVC
MVC 是一種設(shè)計(jì)模式,也是一種思想,而 Spring MVC 是對(duì) MVC 思想的具體實(shí)現(xiàn)。除此之外,Spring MVC 還是一個(gè) Web 框架
總結(jié)來說:Spring MVC 是一個(gè)實(shí)現(xiàn)了 MVC 模式的 Web 框架
所以,Spring MVC 主要關(guān)注有兩個(gè)點(diǎn):
MVCWeb框架
Spring MVC 全稱是 Spring Web MVC
其實(shí),Spring MVC 我們?cè)谇懊嬉呀?jīng)用過了,在創(chuàng)建 Spring Boot 項(xiàng)目的時(shí)候,我們勾選的 Spring Web 框架,其實(shí)就是 Spring MVC 框架:

可以看到,Spring Web 的介紹是:
- Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container使用
Spring MVC構(gòu)建Web應(yīng)用程序,包括 RESTful 應(yīng)用程序。 - 使用 Apache Tomcat 作為默認(rèn)的嵌入式容器。
前面創(chuàng)建的不是 Spring Boot 項(xiàng)目嗎?為什么又變成了 Spring MVC 項(xiàng)目?它們之間到底有著什么樣的關(guān)系?
Spring Boot 是 2014 年發(fā)布的,Spring 是 2004 年發(fā)布的,在 2014 發(fā)布之前,就不能用 Spring 實(shí)現(xiàn) MVC 了嗎?顯然不是
Spring Boot只是實(shí)現(xiàn)Spring MVC的其中一種方式而已Spring Boot可以添加很多依賴,借助這些依賴實(shí)現(xiàn)不同的功能。Spring Boot通過添加Spring Web MVC框架,來實(shí)現(xiàn)Web功能
比如,廚房可以用來做飯,但真實(shí)實(shí)現(xiàn)做飯功能的是火以及各種做飯相關(guān)的工作和食材。廚房就好比是
Spring Boot,廚房可以裝柜子,實(shí)現(xiàn)收納功能,裝燃?xì)庠?,?shí)現(xiàn)做飯功能。做飯這個(gè)事,就是MVC,在幾千年前,有火就可以實(shí)現(xiàn)做飯
不過 Spring 在實(shí)現(xiàn) MVC 的時(shí)候,也結(jié)合自身項(xiàng)目的特點(diǎn),做了一些改變,相對(duì)而言,下面這個(gè)圖也許更加適合一些

不過核心沒變
- 比如上面的例子中,去飯店吃飯。一些飯店是前廳來負(fù)責(zé)接待客戶,幫助客戶點(diǎn)餐,也就是
Controller來負(fù)責(zé)接收用戶的請(qǐng)求 - 去公司面試,直接由面試官來接待候選人,省去了中間
HR的交接環(huán)節(jié)
2. 學(xué)習(xí) Spring MVC
既然是 Web 框架,那么當(dāng)用戶在瀏覽器中輸入了 URL 之后,我們的 Spring MVC 項(xiàng)目就可以感知到用戶的請(qǐng)求,并給予響應(yīng)。我們也是主要學(xué)習(xí)如何通過瀏覽器和用戶程序進(jìn)行交互,主要分為以下三個(gè)方面:
- 建立連接:將用戶(瀏覽器)和
Java程序連接起來,也就是訪問一個(gè)地址能夠調(diào)用到我們的Spring程序 - 請(qǐng)求:用戶請(qǐng)求的時(shí)候會(huì)帶一些參數(shù),在程序中要想辦法獲取到參數(shù),所以請(qǐng)求這塊主要是獲取參數(shù)的功能
- 響應(yīng):執(zhí)行了業(yè)務(wù)邏輯之后,要把程序執(zhí)行的結(jié)果返回給用戶,也就是響應(yīng)
比如用戶區(qū)銀行存款
- 建立連接:去柜臺(tái)
- 請(qǐng)求:帶著銀行卡,身份證去存款
- 響應(yīng):銀行返回一張存折
對(duì)于 Spring MVC 來說,掌握了以上三個(gè)功能就相當(dāng)于掌握了 Spring MVC
2.1 項(xiàng)目準(zhǔn)備
Spring MVC 項(xiàng)目創(chuàng)建和 Spring Boot 創(chuàng)建項(xiàng)目相同,在創(chuàng)建的時(shí)候選擇 Spring Web 就相當(dāng)與創(chuàng)建了 Spring MVC 的項(xiàng)目
在項(xiàng)目創(chuàng)建的時(shí)候,勾選上 Spring web 模塊即可,如下圖所示:

2.2 建立連接
在 Spring MVC 中使用 @RequestMapping 來實(shí)現(xiàn) URL 路由映射,也就是瀏覽器連接程序的作用
創(chuàng)建一個(gè) UserController 類,實(shí)現(xiàn)用戶通過瀏覽器和程序的交互,具體實(shí)現(xiàn)代碼如下:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@RequestMapping("/sayHello")
public String sayHi() {
return "hello, spring mvc";
}
}方法名和路徑名稱無需一致接下來訪問:
http://127.0.0.1:8080/sayHi,就可以看到程序返回的數(shù)據(jù)了

到此這篇關(guān)于Spring MVC的項(xiàng)目準(zhǔn)備和連接建立的文章就介紹到這了,更多相關(guān)Spring MVC連接建立內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot讀取外部的配置文件的代碼實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot讀取外部的配置文件的代碼實(shí)現(xiàn),文中通過代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-11-11
Java Spring Cloud Bus 實(shí)現(xiàn)配置實(shí)時(shí)更新詳解
這篇文章主要介紹了SpringCloud Bus如何實(shí)現(xiàn)配置刷新,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09
詳解Spring Boot中整合Sharding-JDBC讀寫分離示例
這篇文章主要介紹了詳解Spring Boot中整合Sharding-JDBC讀寫分離示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03
如何在SpringBoot中添加攔截器忽略請(qǐng)求URL當(dāng)中的指定字符串
這篇文章主要介紹了在SpringBoot中添加攔截器忽略請(qǐng)求URL當(dāng)中的指定字符串,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
一篇文章帶你了解jdk1.8新特性--為什么使用lambda表達(dá)式
Lambda是一個(gè)匿名函數(shù),我們可以把Lambda表達(dá)式理解為是一段可以傳遞的代碼,本篇文章就帶你了解,希望能給你帶來幫助2021-08-08
Spring Cloud Gateway 緩存區(qū)異常問題及解決方案
最近在測(cè)試環(huán)境spring cloud gateway突然出現(xiàn)了異常,接下來通過本文給大家介紹Spring Cloud Gateway 緩存區(qū)異常問題解決方案,需要的朋友可以參考下2024-06-06
SpringBoot集成FFmpeg實(shí)現(xiàn)生成圖片預(yù)覽圖與縮略圖
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何集成FFmpeg實(shí)現(xiàn)生成圖片預(yù)覽圖與縮略圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2026-02-02

