Spring MVC的項目準備和連接建立方法
1. 什么是 Spring Web MVC
Spring Web MVC 是基于 Servlet API 構(gòu)建的原始 Web 框架,從已開是就包含在 Spring 框架中。它的正式名稱“Spring Web MVC”是自其源模塊的名稱(Spring-webmvc),但它通常被稱為“Spring mvc”
[!quote] 什么是
Servlet
Servlet
是一種實現(xiàn)動態(tài)頁面的技術(shù)。準確來講Servlet
是一套Java Web
開發(fā)的規(guī)范,或者說是一套 JavaWeb 開發(fā)的技術(shù)標準。只有規(guī)范并不能做任何事,必須要有人去實現(xiàn)它。所謂實現(xiàn)Servlet
規(guī)范,就是真正編寫代碼去實現(xiàn)Servlet
規(guī)范提到的各種功能,包括類、方法、屬性等。Servlet
規(guī)范是開放的,除了Sun
公司,其他公司也能實現(xiàn)Servlet
規(guī)范,目前常見的實現(xiàn)了Servlet
規(guī)范的產(chǎn)品包括Tomcat
、Weblogic
、Jetty
、Jboss
、WebSphere
等,它們都被稱為“Servlet
容器”。Servlet
容器用來管理程序猿編寫的Servlet
類
從上述定義我們可以得出一個信息:Spring Web MVC
是一個 Web
框架。下面我們簡稱“Spring MVC
”
然而要真正理解什么是 Spring MVC
,我們首先要搞清楚什么是 MVC
1.1 MVC 定義
MVC 是 Model View Controller 的縮寫,它是軟件工程中的一種軟件架構(gòu)設(shè)計模式,它把軟件系統(tǒng)分為:模型、視圖和控制器三個部分
View
(視圖):指在應(yīng)用程序中專門用來與瀏覽器進行交互,展示數(shù)據(jù)的資源Model
(模型):是應(yīng)用程序的主體部分,用來處理程序中數(shù)據(jù)邏輯的部分Controller
(控制器):可以理解為一個分發(fā)器,用來決定視圖發(fā)來的請求,需要用哪一個模型來處理,以及處理完后需要跳回哪一個視圖。即用來連接視圖和模型
我們?nèi)ワ埖瓿燥垼覀冏?,服?wù)員讓我們點單。點完之后,服務(wù)員就把單給到前臺,然后前臺把單給到后廚
- 服務(wù)員 ==>
View
,接待我們的 - 前臺==>
Contriller
,出現(xiàn)一些沖突(菜不對等等情況),就會去前臺 - 后廚 ==>
Model
,菜做好之后,把菜品給到前臺,前臺再把菜給到服務(wù)員,服務(wù)員給我們上菜
我們是和服務(wù)員進行交互,前臺是控制他們兩個之間的關(guān)系
去面試,HR 和部門的負責人對接。候選人到達公司,HR 接待;HR 去找部門的負責人安排面試;部門的負責人安排一個小伙去進行面試
- HR ==>
View
- 部門負責人 ==>
Controller
- 面試官 ==>
Model
1.2 什么是 Spring MVC
MVC
是一種設(shè)計模式,也是一種思想,而 Spring MVC
是對 MVC
思想的具體實現(xiàn)。除此之外,Spring MVC
還是一個 Web
框架
總結(jié)來說:Spring MVC
是一個實現(xiàn)了 MVC
模式的 Web
框架
所以,Spring MVC
主要關(guān)注有兩個點:
MVC
Web
框架
Spring MVC
全稱是 Spring Web MVC
其實,Spring MVC
我們在前面已經(jīng)用過了,在創(chuàng)建 Spring Boot
項目的時候,我們勾選的 Spring Web
框架,其實就是 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 作為默認的嵌入式容器。
前面創(chuàng)建的不是 Spring Boot
項目嗎?為什么又變成了 Spring MVC
項目?它們之間到底有著什么樣的關(guān)系?
Spring Boot
是 2014 年發(fā)布的,Spring
是 2004 年發(fā)布的,在 2014 發(fā)布之前,就不能用 Spring
實現(xiàn) MVC
了嗎?顯然不是
Spring Boot
只是實現(xiàn)Spring MVC
的其中一種方式而已Spring Boot
可以添加很多依賴,借助這些依賴實現(xiàn)不同的功能。Spring Boot
通過添加Spring Web MVC
框架,來實現(xiàn)Web
功能
比如,廚房可以用來做飯,但真實實現(xiàn)做飯功能的是火以及各種做飯相關(guān)的工作和食材。廚房就好比是
Spring Boot
,廚房可以裝柜子,實現(xiàn)收納功能,裝燃氣灶,實現(xiàn)做飯功能。做飯這個事,就是MVC
,在幾千年前,有火就可以實現(xiàn)做飯
不過 Spring
在實現(xiàn) MVC
的時候,也結(jié)合自身項目的特點,做了一些改變,相對而言,下面這個圖也許更加適合一些
不過核心沒變
- 比如上面的例子中,去飯店吃飯。一些飯店是前廳來負責接待客戶,幫助客戶點餐,也就是
Controller
來負責接收用戶的請求 - 去公司面試,直接由面試官來接待候選人,省去了中間
HR
的交接環(huán)節(jié)
2. 學習 Spring MVC
既然是 Web
框架,那么當用戶在瀏覽器中輸入了 URL
之后,我們的 Spring MVC
項目就可以感知到用戶的請求,并給予響應(yīng)。我們也是主要學習如何通過瀏覽器和用戶程序進行交互,主要分為以下三個方面:
- 建立連接:將用戶(瀏覽器)和
Java
程序連接起來,也就是訪問一個地址能夠調(diào)用到我們的Spring
程序 - 請求:用戶請求的時候會帶一些參數(shù),在程序中要想辦法獲取到參數(shù),所以請求這塊主要是獲取參數(shù)的功能
- 響應(yīng):執(zhí)行了業(yè)務(wù)邏輯之后,要把程序執(zhí)行的結(jié)果返回給用戶,也就是響應(yīng)
比如用戶區(qū)銀行存款
- 建立連接:去柜臺
- 請求:帶著銀行卡,身份證去存款
- 響應(yīng):銀行返回一張存折
對于 Spring MVC
來說,掌握了以上三個功能就相當于掌握了 Spring MVC
2.1 項目準備
Spring MVC
項目創(chuàng)建和 Spring Boot
創(chuàng)建項目相同,在創(chuàng)建的時候選擇 Spring Web
就相當與創(chuàng)建了 Spring MVC
的項目
在項目創(chuàng)建的時候,勾選上 Spring web
模塊即可,如下圖所示:
2.2 建立連接
在 Spring MVC 中使用 @RequestMapping
來實現(xiàn) URL
路由映射,也就是瀏覽器連接程序的作用
創(chuàng)建一個 UserController
類,實現(xiàn)用戶通過瀏覽器和程序的交互,具體實現(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的項目準備和連接建立的文章就介紹到這了,更多相關(guān)Spring MVC連接建立內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring boot+VUE實現(xiàn)token驗證的示例代碼
本文詳細介紹了使用Vue和SpringBoot實現(xiàn)token認證的方法,包括前后端交互流程、后端依賴導入、token工具類、攔截器、跨域處理、前端路由守衛(wèi)、請求攔截器等內(nèi)容,具有一定的參考價值,感興趣的可以了解一下2024-10-10commons fileupload實現(xiàn)文件上傳的實例代碼
這篇文章主要介紹了commons fileupload實現(xiàn)文件上傳的實例代碼,包括文件上傳的原理分析等相關(guān)知識點,本文給大家介紹的非常詳細,具有參考借鑒價值,感興趣的朋友一起看看吧2016-10-10在eclipse中使用SVN的實現(xiàn)方法(圖文教程)
這篇文章主要介紹了在eclipse中使用SVN的實現(xiàn)方法(圖文教程),文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07JAVA面試題之緩存擊穿、緩存穿透、緩存雪崩的三者區(qū)別
當服務(wù)器QPS比較高,并且對數(shù)據(jù)的實時性要求不高時,往往會接入緩存以達到快速Response、降低數(shù)據(jù)庫壓力的作用,常用來做緩存的中間件如Redis等。本文主要介紹了JAVA面試時常考的緩存擊穿、穿透、雪崩場景三者區(qū)別,有興趣的小伙伴可以看一下2021-11-11java使用randomaccessfile在文件任意位置寫入數(shù)據(jù)
Java在文件任意位置寫入數(shù)據(jù)可以使用RandomAccessFile方法來完成,下面看一個簡單的示例就明白了2014-01-01Java實現(xiàn)人臉識別登錄、注冊等功能(最新完整版)
這段時間由于學校實行靜態(tài)化管理,寢室門和校門都是用了人臉識別的裝置,本系列項目從設(shè)計到實現(xiàn)源碼全部開源免費學習使用,對Java實現(xiàn)人臉識別登錄、注冊功能感興趣的朋友一起看看吧2022-05-05