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)動態(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
框架。下面我們簡稱“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ā)來的請求,需要用哪一個(gè)模型來處理,以及處理完后需要跳回哪一個(gè)視圖。即用來連接視圖和模型
我們?nèi)ワ埖瓿燥?,我們坐下,服?wù)員讓我們點(diǎn)單。點(diǎn)完之后,服務(wù)員就把單給到前臺,然后前臺把單給到后廚
- 服務(wù)員 ==>
View
,接待我們的 - 前臺==>
Contriller
,出現(xiàn)一些沖突(菜不對等等情況),就會去前臺 - 后廚 ==>
Model
,菜做好之后,把菜品給到前臺,前臺再把菜給到服務(wù)員,服務(wù)員給我們上菜
我們是和服務(wù)員進(jìn)行交互,前臺是控制他們兩個(gè)之間的關(guān)系
去面試,HR 和部門的負(fù)責(zé)人對接。候選人到達(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
是對 MVC
思想的具體實(shí)現(xiàn)。除此之外,Spring MVC
還是一個(gè) Web
框架
總結(jié)來說:Spring MVC
是一個(gè)實(shí)現(xiàn)了 MVC
模式的 Web
框架
所以,Spring MVC
主要關(guān)注有兩個(gè)點(diǎn):
MVC
Web
框架
Spring MVC
全稱是 Spring Web MVC
其實(shí),Spring MVC
我們在前面已經(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),做了一些改變,相對而言,下面這個(gè)圖也許更加適合一些
不過核心沒變
- 比如上面的例子中,去飯店吃飯。一些飯店是前廳來負(fù)責(zé)接待客戶,幫助客戶點(diǎn)餐,也就是
Controller
來負(fù)責(zé)接收用戶的請求 - 去公司面試,直接由面試官來接待候選人,省去了中間
HR
的交接環(huán)節(jié)
2. 學(xué)習(xí) Spring MVC
既然是 Web
框架,那么當(dāng)用戶在瀏覽器中輸入了 URL
之后,我們的 Spring MVC
項(xiàng)目就可以感知到用戶的請求,并給予響應(yīng)。我們也是主要學(xué)習(xí)如何通過瀏覽器和用戶程序進(jìn)行交互,主要分為以下三個(gè)方面:
- 建立連接:將用戶(瀏覽器)和
Java
程序連接起來,也就是訪問一個(gè)地址能夠調(diào)用到我們的Spring
程序 - 請求:用戶請求的時(shí)候會帶一些參數(shù),在程序中要想辦法獲取到參數(shù),所以請求這塊主要是獲取參數(shù)的功能
- 響應(yīng):執(zhí)行了業(yè)務(wù)邏輯之后,要把程序執(zhí)行的結(jié)果返回給用戶,也就是響應(yīng)
比如用戶區(qū)銀行存款
- 建立連接:去柜臺
- 請求:帶著銀行卡,身份證去存款
- 響應(yīng):銀行返回一張存折
對于 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring boot+VUE實(shí)現(xiàn)token驗(yàn)證的示例代碼
本文詳細(xì)介紹了使用Vue和SpringBoot實(shí)現(xiàn)token認(rèn)證的方法,包括前后端交互流程、后端依賴導(dǎo)入、token工具類、攔截器、跨域處理、前端路由守衛(wèi)、請求攔截器等內(nèi)容,具有一定的參考價(jià)值,感興趣的可以了解一下2024-10-10commons fileupload實(shí)現(xiàn)文件上傳的實(shí)例代碼
這篇文章主要介紹了commons fileupload實(shí)現(xiàn)文件上傳的實(shí)例代碼,包括文件上傳的原理分析等相關(guān)知識點(diǎn),本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-10-10Java權(quán)重隨機(jī)的實(shí)現(xiàn)方法
這篇文章主要介紹了Java權(quán)重隨機(jī)的實(shí)現(xiàn)方法,實(shí)例分析了權(quán)重隨機(jī)算法的原理與完整實(shí)現(xiàn)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01Java監(jiān)聽器三種實(shí)現(xiàn)方法代碼解析
這篇文章主要介紹了Java監(jiān)聽器三種實(shí)現(xiàn)方法代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08idea插件生成jpa實(shí)體類的實(shí)現(xiàn)示例
本文主要介紹了idea插件生成jpa實(shí)體類的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01在eclipse中使用SVN的實(shí)現(xiàn)方法(圖文教程)
這篇文章主要介紹了在eclipse中使用SVN的實(shí)現(xiàn)方法(圖文教程),文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07JAVA面試題之緩存擊穿、緩存穿透、緩存雪崩的三者區(qū)別
當(dāng)服務(wù)器QPS比較高,并且對數(shù)據(jù)的實(shí)時(shí)性要求不高時(shí),往往會接入緩存以達(dá)到快速Response、降低數(shù)據(jù)庫壓力的作用,常用來做緩存的中間件如Redis等。本文主要介紹了JAVA面試時(shí)??嫉木彺鎿舸?、穿透、雪崩場景三者區(qū)別,有興趣的小伙伴可以看一下2021-11-11java使用randomaccessfile在文件任意位置寫入數(shù)據(jù)
Java在文件任意位置寫入數(shù)據(jù)可以使用RandomAccessFile方法來完成,下面看一個(gè)簡單的示例就明白了2014-01-01Java實(shí)現(xiàn)人臉識別登錄、注冊等功能(最新完整版)
這段時(shí)間由于學(xué)校實(shí)行靜態(tài)化管理,寢室門和校門都是用了人臉識別的裝置,本系列項(xiàng)目從設(shè)計(jì)到實(shí)現(xiàn)源碼全部開源免費(fèi)學(xué)習(xí)使用,對Java實(shí)現(xiàn)人臉識別登錄、注冊功能感興趣的朋友一起看看吧2022-05-05