SpringMVC 概念引入與連接的操作方法
1.前言
哈嘍大家好,今天來(lái)給大家?guī)?lái)Spring相關(guān)的學(xué)習(xí),主要內(nèi)容有概念的講解以及如何分別通過Java代碼和工具Postman來(lái)建立連接,那么話不多說讓我們開始吧。
2.正文
2.1SpringMVC是什么
Spring MVC 是 Spring 框架的一個(gè)模塊,專門用于構(gòu)建 Web 應(yīng)用程序。它基于經(jīng)典的 MVC 設(shè)計(jì)模式(Model-View-Controller),將應(yīng)用程序分為三層:
- Model(模型):封裝數(shù)據(jù)(如數(shù)據(jù)庫(kù)查詢結(jié)果)。
- View(視圖):展示數(shù)據(jù)(如 HTML 頁(yè)面)。
- Controller(控制器):處理用戶請(qǐng)求,協(xié)調(diào) Model 和 View。
官方文檔:
Spring Web MVC :: Spring Framework
https://docs.spring.io/spring-framework/reference/web/webmvc.html
使用它有哪些優(yōu)點(diǎn)呢:
- 簡(jiǎn)化開發(fā):通過注解和配置減少代碼量。
- 靈活擴(kuò)展:支持多種視圖技術(shù)(JSP、Thymeleaf 等)。
- 與 Spring 生態(tài)無(wú)縫集成:如 Spring Security、Spring Data 等。
那么SpringMVC是如何處理用戶發(fā)送過來(lái)的Http請(qǐng)求呢:
DispatcherServlet(前端控制器)
- 所有請(qǐng)求的入口,相當(dāng)于“調(diào)度中心”。
- 負(fù)責(zé)將請(qǐng)求分發(fā)給對(duì)應(yīng)的 Controller。
HandlerMapping(處理器映射器)
- 根據(jù)請(qǐng)求的 URL,找到對(duì)應(yīng)的 Controller 和方法。
Controller(控制器)
- 處理業(yè)務(wù)邏輯(如查詢數(shù)據(jù)庫(kù)),返回 Model 和視圖名稱。
ViewResolver(視圖解析器)
- 將視圖名稱(如
"home")解析為具體的視圖(如/WEB-INF/home.jsp)。
View(視圖)
- 渲染頁(yè)面,將 Model 數(shù)據(jù)展示給用戶。
流程:
用戶請(qǐng)求 → DispatcherServlet → HandlerMapping → Controller → 返回 ModelAndView → ViewResolver → View → 響應(yīng)給用戶
2.2詳解@RequestMapping注解
@RequestMapping 是 Spring MVC 中最核心的注解之一,用于將 HTTP 請(qǐng)求映射到具體的控制器方法。它支持靈活的 URL 匹配、請(qǐng)求方法限制、參數(shù)過濾等功能。(學(xué)習(xí)這一部分時(shí),建議搭配后文使用)
基本用法:在類或方法上使用 @RequestMapping,指定 URL 路徑:
@Controller
@RequestMapping("/user") // 類級(jí)別的公共路徑,類路徑
public class UserController {
@RequestMapping("/info") // 完整路徑是 /user/info,方法路徑
public String getUserInfo() {
return "user_info";
}
}那么該注解到底是GET請(qǐng)求還是POST請(qǐng)求呢?這個(gè)時(shí)候我們就要來(lái)借助以下抓包工具:
測(cè)試代碼:
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class test1 {
@RequestMapping("/hello")
public String hello(){
return "hello";
}
}
此時(shí)可以看出來(lái)是GET請(qǐng)求。那有沒有可能是POST請(qǐng)求呢?讓我們來(lái)測(cè)試下:
我們?cè)趕tatic創(chuàng)建一個(gè)HTML文件:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/hello" method="post">
<input type = "submit" value = "傳送">
</form>
</body>
</html>

就會(huì)發(fā)現(xiàn)此時(shí)是POST請(qǐng)求 。
那么我們?nèi)绾味x該注解是GET請(qǐng)求還是POST請(qǐng)求呢?
@RequestMapping(method=GET) @RequestMapping(method=POST)
利用method設(shè)置一下即可。
總結(jié)下核心屬性:
| 屬性 | 作用 | 示例 |
|---|---|---|
value 或 path | 指定 URL 路徑 | @RequestMapping("/user") |
method | 限制請(qǐng)求方法(GET、POST 等) | method = RequestMethod.POST |
params | 要求請(qǐng)求必須包含特定參數(shù) | params = "id=100"(參數(shù) id 必須為 100) |
headers | 要求請(qǐng)求頭包含特定字段 | headers = "Content-Type=text/json" |
consumes | 限制請(qǐng)求的 Content-Type(如接收 JSON) | consumes = "application/json" |
produces | 指定響應(yīng)的 Content-Type(如返回 JSON) | produces = "application/json" |
2.3創(chuàng)建Spring項(xiàng)目
既然我們學(xué)習(xí)了該注解,那么就要想辦法應(yīng)用出來(lái),所以我們們需要先創(chuàng)建一個(gè)Spring項(xiàng)目
在idea社區(qū)版裝上Spring插件或者使用Spring專業(yè)版,創(chuàng)建項(xiàng)目時(shí)勾選:

接著導(dǎo)入SpringWeb相關(guān)模塊:

這樣就完成了Spring項(xiàng)目的創(chuàng)建。
2.4建立連接
下面我們?cè)趇dea中建立連接:
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class test1 {
@RequestMapping("/hello")
public String hello(){
return "hello";
}
}資源路徑:類路徑+方法路徑。
核心注解說明:
1.
@RestController
- 是
@Controller+@ResponseBody的組合注解。- 作用:
- 標(biāo)記這個(gè)類是一個(gè)控制器,能接收 HTTP 請(qǐng)求。
- 所有方法的返回值會(huì)直接寫入 HTTP 響應(yīng)體(Response Body),而不是跳轉(zhuǎn)到視圖頁(yè)面。
- 適合場(chǎng)景:開發(fā) RESTful API(返回 JSON/XML 數(shù)據(jù))。
2.
@RequestMapping("/hello")
- 作用:將 HTTP 請(qǐng)求路徑
/hello映射到hello()方法。- 默認(rèn)行為:
- 支持所有 HTTP 方法(GET、POST、PUT 等)。
- 返回的字符串 "hello" 會(huì)直接作為響應(yīng)內(nèi)容返回給客戶端。
當(dāng)我們運(yùn)行項(xiàng)目并在瀏覽器訪問訪問 http://localhost:8080/hello時(shí):

這樣就代表連接成功。
如果注解相同,那么就必須保證資源路徑(類路徑+方法路徑)不同:
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class test1 {
@RequestMapping("/hello")
public String hello(){
return "hello";
}
@RequestMapping("/hello")
public String hello1(String name){ return "hello" + name; }
}項(xiàng)目直接啟動(dòng)報(bào)錯(cuò)并退出:

紅線標(biāo)注部分“error”就是錯(cuò)誤日志了。
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class test1 {
@RequestMapping("/hello")
public String hello(){
return "hello";
}
@RequestMapping("/hello1")
public String hello1(String name){ return "hello" + name; }
}這樣即可正常運(yùn)行:

2.5Postman
官網(wǎng):Download Postman | Get Started for Free
https://www.postman.com/downloads/
Postman是什么呢:
Postman 是一款API 開發(fā)與測(cè)試工具,被廣泛用于設(shè)計(jì)、調(diào)試、測(cè)試和文檔化 HTTP 接口。無(wú)論是后端開發(fā)者、測(cè)試工程師,還是前端開發(fā)者,都可以用它快速驗(yàn)證 API 的功能和可靠性。
- 發(fā)送 HTTP 請(qǐng)求(GET/POST/PUT/DELETE 等)。
- 自動(dòng)化測(cè)試 API 接口。
- 管理 API 集合(分類、分組、共享)。
- 生成 API 文檔。
- 模擬服務(wù)器(Mock Server)。
- 團(tuán)隊(duì)協(xié)作(共享工作區(qū))。

頁(yè)面看起來(lái)還是很清新的。
就還拿上一段代碼來(lái)測(cè)試,第二個(gè)方法還有一個(gè)參數(shù)name,我們?cè)赑ostman里可以快捷在請(qǐng)求中添加參數(shù),注意參數(shù)名一定要相同。

發(fā)送成功。
3.小結(jié)
今天的分享到這里就結(jié)束了,喜歡的小伙伴點(diǎn)點(diǎn)贊點(diǎn)點(diǎn)關(guān)注,你的支持就是對(duì)我最大的鼓勵(lì),大家加油!
到此這篇關(guān)于SpringMVC 概念引入與連接的文章就介紹到這了,更多相關(guān)SpringMVC 概念引入與連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Java方法調(diào)用的優(yōu)先級(jí)問題
這篇文章主要介紹了淺談Java方法調(diào)用的優(yōu)先級(jí)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-10-10
Java Web開發(fā)入門書籍實(shí)例解析(總結(jié)一)
從事Java Web開發(fā)這一段時(shí)間來(lái),對(duì)Java 面向?qū)ο蟮乃枷牒蚆VC開發(fā)模式可以說已經(jīng)熟悉了。我當(dāng)前參與的項(xiàng)目使用的框架是Spring、SpringMVC、Hibernate。下面腳本之家小編給大家整理一篇教程幫助大家學(xué)習(xí)javaweb相關(guān)知識(shí),感興趣的朋友可以參考下2016-03-03
SpringBoot實(shí)現(xiàn)接口數(shù)據(jù)的加解密功能
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)接口數(shù)據(jù)的加解密功能,對(duì)接口的加密解密操作主要有兩種實(shí)現(xiàn)方式,文中給大家詳細(xì)介紹,需要的朋友可以參考下2019-10-10
Java靜態(tài)static與實(shí)例instance方法示例
這篇文章主要為大家介紹了Java靜態(tài)static與實(shí)例instance方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Java中ShardingSphere分庫(kù)分表實(shí)戰(zhàn)
我們做項(xiàng)目的時(shí)候,數(shù)據(jù)量比較大,單表千萬(wàn)級(jí)別的,需要分庫(kù)分表,本文主要介紹了Java中ShardingSphere分庫(kù)分表實(shí)戰(zhàn),感興趣的可以了解一下2021-09-09

