Spring MVC 的常用注解

@RequestMapping 和 @RestController注解


上面兩個注解,是Spring MCV最常用的注解。

@RequestMapping , 他是用來注冊接口的路由映射。

路由映射:當一個用戶訪問url時,將用戶的請求對應到某個方法或類的過程叫做路由映射。

@RequestMapping 注解的使用:它既可以又是類,也可以修飾方法,訪問的地址是類的路徑和方法路徑。


但是在這里我們只通過@RequestMapping 是不足以訪問網頁的,還要通過@RestController注解。

@RestController,他包括了@Controller注解和@ResponseController注解。

@Controller注解返回的是視圖 , @ResponseController返回的是各種格式的數據。


在這里我寫簡單的項目,來掩飾一下,怎么使用的。

如代碼:

package com.example.springbootdemo1;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RequestMapping("/hello")
@RestController
public class HelloController {@RequestMapping("/u1")public String sayHi(){return "hello,Spring 111";}@RequestMapping("/u2")public String hello(){return "Hello Spring MVC";}}

我們訪問我們哪個輸入就訪問就行了,根據url的不同,直接訪問。

如圖訪問結果:


@RequestParam注解


使用@RequestParam注解可以對后端的參數重命名,其實就是可以把前端的參數映射到后端來,進而可以對后端的參數,改成自己想要的。


這里寫了一個計算器功能的網頁,結合前端代碼來看一下

如前端后端代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="calc/sum" method="post"><h1>計算器</h1>數字1:<input name="sum1" type="text"><br>數字2:<input name="sum2" type="text"><br><input type="submit" value=" 點擊相加 ">
</form>
</body>
</html>
package com.example.springbootdemo1;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RequestMapping("/calc")
@RestController
public class CalcController {@RequestMapping("/sum")public String sum(@RequestParam(value = "sum1" , required = false) Integer array , Integer sum2){Integer sum = array + sum2;System.out.println(sum);return "計算結果:" + sum;}
}

我們可以發現,sum1這個參數,我們改成了array,注解里的false表示這里不是必傳的參數,默認為true。

如執行結果:

可以看到代碼執行沒有錯誤。


@RequestBodoy注解


在日常的開發中,@RequestBody注解主要就是用來傳遞JOSN格式的數據。

如代碼:

@RestController  
@RequestMapping("/users")  
public class UserController {  @PostMapping("/create")  public ResponseEntity<User> createUser(@RequestBody User user) {  // 在這里可以使用user對象的屬性進行相應的業務邏輯處理  // 例如保存用戶信息到數據庫  return ResponseEntity.ok(userService.save(user));  }  
}

上面是最常用的注解,下面簡單介紹幾個,用的還行的。

@PathVariable,這個注解和字面的意思一樣,綁定請求url的地址。

如代碼:

@RequestMapping("/m8/{id}/{name}")
public String method8(@PathVariable Integer id, @PathVariable("name") String 
userName){return "解析參數id:"+id+",name:"+userName;
}

@GetMapping和PostMapping:這兩個注解,和我們看到的一樣,直接確定了請求的類型,是get還是post。這里就不展示代碼了,例在方法上直接寫就行。

@RequestPart:用于上傳文件。

如代碼:

public String getfile(@RequestPart("file") MultipartFile file) throwsIOException {//獲取?件名稱String fileName = file.getOriginalFilename();//?件上傳到指定路徑file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));
return "接收到?件名稱為: "+fileName;
}

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

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

相關文章

定制QCustomPlot 帶有ListView的QCustomPlot 全網唯一份

定制QCustomPlot 帶有ListView的QCustomPlot 文章目錄 定制QCustomPlot 帶有ListView的QCustomPlot摘要需求描述實現關鍵字: Qt、 QCustomPlot、 魔改、 定制、 控件 摘要 先上效果,是你想要的,再看下面的分解,順便點贊搜藏一下;不是直接右上角。 QCustomPlot是一款…

基于springboot+vue+uniapp的駕校預約平臺小程序

開發語言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服務器&#xff1a;tomcat7數據庫&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;數據庫工具&#xff1a;Navicat11開發軟件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

認識AOP--小白可看

AOP&#xff08;Aspect-Oriented Programming&#xff0c;面向切面編程&#xff09;是一種軟件開發范式&#xff0c;旨在通過橫切關注點&#xff08;cross-cutting concerns&#xff09;的方式來解耦系統中的各個模塊。橫切關注點指的是那些不屬于業務邏輯本身&#xff0c;但是…

Apache Sqoop

Apache Sqoop是一個開源工具&#xff0c;用于在Apache Hadoop和關系型數據庫&#xff08;如MySQL、Oracle、PostgreSQL等&#xff09;之間進行數據的批量傳輸。其主要功能包括&#xff1a; 1. 數據導入&#xff1a;從關系型數據庫&#xff08;如MySQL、Oracle等&#xff09;中將…

WPF設置歡迎屏幕,程序啟動過度動畫

當主窗體加載時間過長&#xff0c;這時候基本都會想添加一個等待操作來響應用戶點擊&#xff0c;提高用戶體驗。下面我記錄兩個方法&#xff0c;一點拙見&#xff0c;僅供參考。 方法1:在App類中使用SplashScreen類。 protected override void OnStartup(StartupEventArgs e)…

35.UART(通用異步收發傳輸器)-RS232(2)

&#xff08;1&#xff09;RS232接收模塊visio框圖&#xff1a; &#xff08;2&#xff09;接收模塊Verilog代碼編寫: /* 常見波特率&#xff1a; 4800、9600、14400、115200 在系統時鐘為50MHz時&#xff0c;對應計數為&#xff1a; (1/4800) * 10^9 /20 -1 10416 …

【作業】 貪心算法1

Tips:三題尚未完成。 #include <iostream> #include <algorithm> using namespace std; int a[110]; int main(){int n,r,sum0;cin>>n>>r;for(int i0;i<n;i){cin>>a[i];}sort(a0,an);for(int i0;i<n;i){if(i>r){a[i]a[i-r]a[i];}suma[…

[USACO18JAN] Cow at Large P

題解都說了&#xff0c;當統計 u u u為根節點的時候&#xff0c;答案就是滿足以下條件的 i i i的數量&#xff1a; d i ≥ g i d_i≥g_i di?≥gi?且 d f a i < g f a i d_{fa_i}<g_{fa_i} dfai??<gfai??&#xff0c;設這個數量為 a n s ans ans。以下嚴格證明 …

Solana開發資源都有哪些

Solana是一個高性能的區塊鏈平臺&#xff0c;吸引了大量開發者構建去中心化應用&#xff08;dApps&#xff09;。以下是一些有用的Solana開發教程和資源&#xff1a; 官方資源 Solana 官方文檔&#xff1a; Solana Documentation: 這是最全面的資源&#xff0c;包括快速入門、…

[實踐篇]13.29 QNX下的系統性能監控工具 - sysMonAppQNX(二)

2.7 getinfo: 獲取 DSP 的詳細信息 getinfo 可用選項 (如果沒有參數,則使用默認值) --q6 (默認選擇處理器: ADSP): adsp - 選擇的處理器為 ADSPsdsp - 選擇的處理器為傳感器 DSPcdsp - 選擇的處理器為計算 DSP示例: ./sysMonApp getinfo --q6 cdsp - 獲取計算 DSP 的詳細信…

大氣熱力學(8)——熱力學圖的應用之一(氣象要素求解)

本篇文章源自我在 2021 年暑假自學大氣物理相關知識時手寫的筆記&#xff0c;現轉化為電子版本以作存檔。相較于手寫筆記&#xff0c;電子版的部分內容有補充和修改。筆記內容大部分為公式的推導過程。 文章目錄 8.1 復習斜 T-lnP 圖上的幾種線8.1.1 等溫線和等壓線8.1.2 干絕熱…

連鎖零售門店分析思路-人貨場 數據分析

連鎖零售門店分析思路 以下是一個連鎖零售門店的分析思路&#xff1a; 一、市場與競爭分析 二、門店運營分析&#xff08;銷售分析&#xff09; 三、銷售與財務分析 四、客戶分析 五、數字化與營銷分析 最近幫一個大學生培訓&#xff0c;就門店銷售分析 &#xff0c;說到門店…

使用windows批量解壓和布局ImageNet ISLVRC2012數據集

使用的系統是windows&#xff0c;找到的解壓命令很多都linux系統中的&#xff0c;為了能在windows系統下使用&#xff0c;因此下載Git這個軟件&#xff0c;在其中的Git Bash中使用以下命令&#xff0c;因為Git Bash集成了很多linux的命令&#xff0c;方便我們的使用。 ImageNe…

[iOS]類和對象的底層原探索

[iOS]類和對象的底層探索 文章目錄 [iOS]類和對象的底層探索繼承鏈&#xff08;類&#xff0c;父類&#xff0c;元類&#xff09;instance 實例對象class 類對象meta-class 元類對象 對對象、類、元類和分類的探索instance 實例對象class 類對象meta-class 元類對象分類(catego…

react項目使用EventBus實現登錄攔截

關于EventBus EventBus是一個事件發布/訂閱模式的實現&#xff0c;它允許不同的組件或模塊之間進行通信&#xff0c;而不需要直接引用對方。這種模式特別適用于那些需要跨組件傳遞信息&#xff0c;但又不想引入復雜依賴關系的場景。 實現思路 利用axios中間件&#xff0c;在…

防火墻之帶寬管理篇

核心思想 1.帶寬限制&#xff1a;限制非關鍵業務流量占用帶寬的比例 2.帶寬保證&#xff1a;保證關鍵的業務流量傳輸不受影響。業務繁忙時&#xff0c;確保業務不受影響。 3.限制連接數&#xff1a;可以針對某些業務進行連接數的限制&#xff0c;首先可以降低該業務占用帶寬…

基于UltraFace的人臉檢測在地平線旭日X3派上的部署和測試(Python版本和C++版本)

電腦端的測試環境搭建 如果不想再搭建環境和測試代碼bug上浪費更多的時間可以直接獲取本人的測試虛擬機&#xff0c;所有的測試代碼、虛擬環境和板端測試工程以全部打包到了虛擬機&#xff0c;需要的可以通過網盤獲取&#xff1a; 代碼和虛擬機百度網盤鏈接&#xff1a; 鏈接…

【AI繪畫教程】Stable Diffusion 1.5 vs 2

在本文中,我們將總結穩定擴散 1 與穩定擴散 2 辯論中的所有要點。我們將在第一部分中查看這些差異存在的實際原因,但如果您想直接了解實際差異,您可以跳下否定提示部分。讓我們開始吧! Stable Diffusion 2.1 發布與1.5相比,2.1旨在解決2.0的許多相對缺點。本文的內容與理解…

網絡和安全操作

一、編輯文件 文本編輯器有很多&#xff0c;比如圖形模式的gedit、OpenOffice 等&#xff0c;文本模式下的編輯器有vi、vim&#xff08;vi的增強版本&#xff09;等。vi和vim是我們在Linux中最常用的編輯器。 gedit&#xff1a;類似于windows下的記事本&#xff0c;很方便的去…

IO多路復用技術、select、poll、epoll聯系與區別

目錄 IO多路復用技術select&#xff1a;poll&#xff1a;epoll&#xff08;Linux特有&#xff09;&#xff1a; epoll select poll的區別epoll是同步還是異步epoll詳解 IO多路復用技術 通信雙方都有一個socket&#xff0c;以一個文件描述符的形式存在&#xff0c;那這個fd也對…