SpringMVC系列(一)(介紹,簡單應用以及路徑位置通配符)

0 引言

作者正在學習SpringMVC相關內容,學到了一些知識,希望分享給需要短時間想要了解SpringMVC的讀者朋友們,想用通俗的語言講述其中的知識,希望與諸位共勉,共同進步!

1 SpringMVC介紹

SpringMVC本質上是Spring家族中專門做Web的一個模塊,我們熟知對于網頁的開發主要存在前后端分離開發以及前后不分離開發兩種模式,其中第一種模式為現在企業開發中經常使用的模式;前后端不分離主要是服務器控制頁面的轉發和跳轉而前后端分離就不需要控制頁面的跳轉,后端只需要關注兩個部分:

1)前端發送過來的請求

2)根據請求,相應需要的數據給前端

因為作者學習的是后端開發部分,所以所介紹的內容是以上兩個角度展開介紹。

2 SpringMVC的HelloWorld(小嘗試)

首先創建一個SpringBoot的Maven項目:

第一步:紅框中的三項標注好,分別是選定Spring Boot框架,Maven項目以及自己的JDK版本以及勾選lombok以及Spring Web。

(2)在這個包底下創建一個HELLO類,并寫下代碼:

package org.example.demo123.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class HELLO {@RequestMapping("/hello")@ResponseBody//返回值放在相應體中public String hello(){return "hello SpringMVC !";}
}

其中@RequestMapping("/hello")表示在網頁請求端請求的網址為XXXX/hello,即路徑和方法進行綁定,就是說誰輸入這個網址,就調用這個方法返回值;

@ResponseBody表示需要把方法的返回值存在響應體中返回給網頁。、

之后啟動Demo123Application,表示開啟服務,這樣就可以在網頁中測試是否生效:

展示效果:

看到以下界面說明測試成功!

注意:項目中默認的端口為8080,如果端口被占用可以在配置文件中修改端口即可:

3 SpringMVC路徑位置通配符

(1)?通配符

這個符號可以代表任意一個字符(但一定需要有一個字符),例如我們有:

    @RequestMapping("/hell?")@ResponseBody//返回值放在相應體中public String hello1(){return "hello SpringMVC !11111111";}

表示我們輸入任意hell+任意字符都可以調用這個方法,如我們測試/hell1請求訪問:

注意:當輸入localhost:9999/hello的時候會響應hello方法,而不會響應hello1方法,這是因為精確匹配優先!!!

(2)* 通配符

這個符號可以代表任意多個字符(也可以表示沒有字符),例如我們有:

    @RequestMapping("/hell*")@ResponseBody//返回值放在相應體中public String hello2(){return "hello SpringMVC !2222222222";}

?如我們測試/hell請求訪問:

或者測試/hellnidjw請求訪問:

(3)** 通配符

這個符號可以代表任意多層路徑,例如我們有:

    @RequestMapping("/hello/**")@ResponseBody//返回值放在相應體中public String hello3(){return "hello SpringMVC !3333333";}

如我們測試/hello/1/2de請求訪問:

4 簡化注解:

因為我們每次寫一個方法頭頂上都需要帶注解@ResponseBody,十分麻煩,所以SpingMVC提供了一個新注解@RestController(包含了@Controller和@ResponseBody注解)在類頭上,所以以后方法頭上只需要帶一個@RequestMapping即可:

package org.example.demo123.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HELLO {@RequestMapping("/hello")public String hello(){return "hello SpringMVC !";}}

5 參考:

1.?P84-P88

088.@RequestMapping - 請求限定_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV14WtLeDEit?spm_id_from=333.788.videopod.episodes&vd_source=a19259eb64dbd6c65948ee3815e95f70&p=88

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87480.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87480.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87480.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java中如何使用lambda表達式分類groupby

Java中如何使用lambda表達式分類groupby Java中如何使用lambda表達式分類groupby分類問題場景傳統手寫方式lambda使用groupBy()方法一行結束!!!完整代碼 Java中如何使用lambda表達式分類groupby 分類問題場景 比如一群學生根據性別和年齡排…

無人機開發分享——無人機集群基于braft實現長機動態推選算法

在無人機集群項目的算法開發中,推選長機作為集群的動態中心,往往承擔著集群管理、通訊中繼等重要功能。由于通訊鏈路的有限性和任務的實時性需要,需要保證動態長機時刻工作正常,并在異常情況下快速切換新長機。 本文主要分享基于b…

python 解碼 jwt

import base64 import jsondef base64url_decode(base64url_data):# 將URL安全的base64編碼數據轉換為標準的base64編碼數據base64_data base64url_data.replace(-, ).replace(_, /)# 如果數據長度不是4的倍數,則補齊padding_length 4 - len(base64_data) % 4base…

騰訊云TCCA認證考試報名 - TDSQL數據庫交付運維工程師(MySQL版)

數據庫交付運維工程師-騰訊云TDSQL(MySQL版)認證 適合人群: 適合從事TDSQL(MySQL版)交付、初級運維、售前咨詢以及TDSQL相關項目的管理人員。 認證考試 單選*40道多選*20道 成績查詢 70分及以上通過認證,官網個人中心->認證考試 查詢 考試費用&am…

Spring Boot的Security安全控制——認識SpringSecurity!

Spring Boot的Security安全控制 在Web項目開發中,安全控制是非常重要的,不同的人配置不同的權限,這樣的系統才安全。最常見的權限框架有Shiro和Spring Security。Shiro偏向于權限控制,而Spring Security能實現權限控制和安全控制…

深入理解ArrayList:從Java原生實現到手寫一個ArrayList

Java原生ArrayList解析 基本結構 Java的ArrayList是基于數組實現的動態列表,主要特點包括: 動態擴容:當元素數量超過當前容量時,自動擴容(通常增加50%) 快速隨機訪問:通過索引訪問元素的時間…

【力扣 簡單 C】206. 反轉鏈表

目錄 題目 解法一:迭代 解法二:遞歸 題目 解法一:迭代 struct ListNode* reverse(struct ListNode* head) {struct ListNode* retHead NULL;while (head){struct ListNode* nextNode head->next;head->next retHead;retHead he…

明代大模型:智能重構下的文明再發現

引言:當紫禁城遇見生成式AI 一幅動態的《紫禁城圖卷》正通過全息投影技術演繹永樂年間的宮廷盛景。這個虛實交融的場景,恰似明代大模型技術的隱喻——以人工智能為紐帶,連接起永樂盛世的恢弘氣象與數字時代的文明重構。作為人工智能與歷史學…

推薦使用的Unity插件(行為樹Behavior )

在 Unity 6.0 中使用 Behavior Designer 行為樹插件開發 AI 系統,需結合其核心節點設計、變量管理和代碼控制。以下是詳細指南,整合了最新版本的最佳實踐: 🛠? 1. 安裝與基礎配置 安裝插件 通過 Unity Asset Store 安裝 “Behav…

107. Java 繼承 - 總結:方法重寫與隱藏

文章目錄 107. Java 繼承 - 總結:方法重寫與隱藏**詳細解釋:****方法重載** **總結** 107. Java 繼承 - 總結:方法重寫與隱藏 在 Java 中,定義與超類中的方法具有相同簽名的方法時,不同類型的方法之間會有不同的行為。…

Spring Cloud使用Eureka調用接口,超時設置(二)

在 Spring Cloud 微服務架構中,當同時配置了 Ribbon 和 Feign 的超時時間時,Feign 的配置優先級高于 Ribbon。具體規則和底層邏輯如下: ?? 1. 配置優先級規則 Feign 顯式配置 > Ribbon 配置 若在 Feign 中顯式設置了超時時間&#xff0…

iOS-SM3加密算法N種集成

近期的一個項目需要用到SM3加密算法,需要在iOS中使用Objective-C實現SM3國密加密算法。 SM3:是中國國家密碼管理局發布的密碼雜湊算法標準,適用于商用密碼應用中的數字簽名和驗證、消息認證碼的生成與驗證以及隨機數的生成等 由于iOS系統并未…

[逆向工程]什么是TEB 與 PEB(二十九)

[逆向工程]什么是TEB 與 PEB(二十九) 一、引言:為什么需要了解 TEB/PEB? 在 Windows 系統開發、調試或逆向工程中,TEB(Thread Environment Block) 和 PEB(Process Environment Block) 是理解程序執行機制的關鍵。它們如同進程與線程的“身份證”,存儲了從內存布局到…

逆向分析貝殼網人機驗證JS加密邏輯

引言 在數據爬取和自動化測試過程中,人機驗證(如滑塊、點選、短信驗證等)是常見的反爬手段。貝殼網(ke.com)作為國內領先的房產平臺,其人機驗證機制較為復雜,涉及前端JS加密、動態Token、行為檢…

Vue3 + Element Plus中el-table加載狀態分析

在 Vue 3 中,當 onMounted 鉤子被觸發時,父組件的 DOM 已經掛載完成,但子組件(如 el-table)可能尚未完成其內部渲染。具體分析如下: 1. onMounted 的執行時機 父組件掛載完成:onMounted 表示當前…

OpenCV圖像拼接技術詳解:從特征匹配到全景合成

本文將詳細介紹如何使用OpenCV實現兩幅圖像的自動拼接,涵蓋特征提取、單應性矩陣計算和圖像融合等關鍵技術。 一、圖像拼接概述 圖像拼接是將多張有重疊區域的圖像合并成一幅全景圖的技術,廣泛應用于全景攝影、衛星圖像處理、醫學影像等領域。其核心技術…

如何通過 5 種方式向 Android 手機添加音樂

想把音樂添加到你的安卓手機,然后隨時隨地無需網絡連接就能欣賞你喜愛的音樂嗎?這不再是麻煩。現在,你可以按照本指南中的有效方法,將音樂添加到你的安卓手機上。讓我們在安卓手機上聆聽我們美妙的歌曲吧。 第 1 部分:…

VS Code 項目中的 .vscode 目錄詳解

VS Code 項目中的 .vscode 目錄詳解 .vscode 目錄是 VS Code 項目的核心配置中心,它包含特定于當前項目的配置,這些配置覆蓋全局設置,確保團隊成員獲得一致的開發環境體驗。 .vscode 目錄中的核心文件 文件名作用是否應納入版本控制settin…

Ubuntu22.04安裝opengauss并配置遠程訪問、JDBC連接

內容概括 最近在研究怎么在ubuntu服務器環境下使用opengauss,看了下官方下載地址沒有適配ubuntu的安裝包。仔細翻了下官方文檔,發現安裝指南里有提供一個deb包安裝方案,有適配ubuntu,經過實踐可行,于是記錄下來給有需要…

國產智能體“雙子星”:實在Agent vs Manus(核心架構與技術實現路徑對比)

2025年,人工智能領域迎來重要轉折點——大模型的光環逐漸消散,落地應用成為行業焦點。 正如業內人士所言:“2023年,大家普遍覺得要買一個大模型,但訓練完了怎么用起來,大家一頭霧水。” 在這一背景下&…