帶你了解SpringBoot支持的復雜參數--自定義對象參數-自動封裝

😀前言
本篇博文是關于SpringBoot 在響應客戶端請求時支持的復雜參數和自定義對象參數,希望您能夠喜歡😊

🏠個人主頁:晨犀主頁
🧑個人簡介:大家好,我是晨犀,希望我的文章可以幫助到大家,您的滿意是我的動力😉😉

💕歡迎大家:這里是CSDN,我總結知識的地方,歡迎來到我的博客,感謝大家的觀看🥰
如果文章有什么需要改進的地方還請大佬不吝賜教 先在此感謝啦😊

文章目錄

  • SpringBoot接收參數相關注解應用
    • 復雜參數
      • 基本介紹
      • 復雜參數應用實例
        • 代碼實現
        • 測試:
    • 自定義對象參數-自動封裝
      • 基本介紹
      • 自定義對象參數-應用實例
        • 代碼實現
        • 測試

SpringBoot接收參數相關注解應用

復雜參數

基本介紹

  1. 在開發中,SpringBoot 在響應客戶端請求時,也支持復雜參數。
  2. Map、Model、Errors/BindingResult、RedirectAttributes、ServletResponse、SessionStatus、UriComponentsBuilder、ServletUriComponentsBuilder、HttpSession。
  3. Map、Model 數據會被放在request 域, 底層request.setAttribute()。
  4. RedirectAttributes 重定向攜帶數據。

復雜參數應用實例

說明: 演示復雜參數的使用,重點: Map、Model、ServletResponse

代碼實現

修改com/nlc/web/controller/RequestController.java

@Controller
public class RequestController {@GetMapping("/login")public String login(HttpServletRequest request) {request.setAttribute("user", "順順~");//向request域中添加的數據request.getSession().setAttribute("website", "http://www.baidu.com"); //向session中添加數據return "forward:/ok";  //請求轉發到  /ok}@GetMapping("/ok")@ResponseBodypublic String ok(HttpServletRequest request,@SessionAttribute(value = "website", required = false) String website,@RequestAttribute(value = "user", required = false) String username) {//獲取到request域中的數據System.out.println("username-" + username);System.out.println("通過servlet api 獲取 username-" + request.getAttribute("user"));System.out.println("website-" + website);System.out.println("通過servlet api 獲取 website-" + request.getSession().getAttribute("website"));return "success";}//響應一個注冊請求@GetMapping("/register")public String register(Map<String,Object> map,Model model,HttpServletResponse response) {//如果一個注冊請求,會將注冊數據封裝到map或者model//map中的數據和model的數據,會被放入到request域中map.put("user","nlc");map.put("job","java架構師");model.addAttribute("sal", 80000);//一會我們再測試response使用//我們演示創建cookie,并通過response 添加到瀏覽器/客戶端Cookie cookie = new Cookie("email", "www@my.com");response.addCookie(cookie);//請求轉發return "forward:/registerOk";}@ResponseBody@GetMapping("/registerOk")public String registerOk(HttpServletRequest request) {System.out.println("user-" + request.getAttribute("user"));System.out.println("job-" + request.getAttribute("job"));System.out.println("sal-" + request.getAttribute("sal"));return "success";}
}

測試:

瀏覽器http://localhost:8080/register

image-20230813113318016

image-20230813113523989

自定義對象參數-自動封裝

基本介紹

  1. 在開發中,SpringBoot 在響應客戶端請求時,也支持自定義對象參數
  2. 完成自動類型轉換與格式化
  3. 支持級聯封裝

自定義對象參數-應用實例

需求說明: 演示自定義對象參數使用,完成自動封裝,類型轉換

代碼實現

  1. 創建public/save.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>添加妖怪</title>
</head>
<body>
<h1>添加妖怪-坐騎[測試封裝POJO;]</h1>
<form action="/savemonster" method="post">編號: <input name="id" value="100"><br/>姓名: <input name="name" value="牛魔王"/> <br/>年齡: <input name="age" value="500"/> <br/>婚否: <input name="isMarried" value="true"/> <br/>生日: <input name="birth" value="2000/11/11"/> <br/>坐騎:<input name="car.name" value="奔馳"/><br/>價格:<input name="car.price" value="99999.9"/><input type="submit" value="保存"/>
</form>
</body>
</html>
  1. 創建com\nlc\web\bean\Car.java
@ToString
@Data
public class Car {private String name;private Double price;
}
  1. 創建com\nlc\web\bean\Monster.java
@Data
public class Monster {private Integer id;private String name;private Integer age;private Boolean isMarried;private Date birth;private Car car;
}
  1. 修改com/nlc/web/controller/ParameterController.java 增加處理添加請求
 @PostMapping("/savemonster")public String saveMonster(Monster monster) {System.out.println("monster-" + monster);return "success";}

測試

完成測試, 瀏覽器http://localhost:8080/save.html

image-20230813114810874
image-20230813114842322
在開發過程中日期格式不用太在意,我們只要保證用戶界面和DB是需要的格式就夠了。

文章到這里就結束了,如果有什么疑問的地方請指出,諸大佬們一起來評論區一起討論😁
希望能和諸大佬們一起努力,今后我們一起觀看感謝您的閱讀🍻
如果幫助到您不妨3連支持一下,創造不易您們的支持是我的動力🤞

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

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

相關文章

go struct 的常見問題

go struct 的常見問題 1. 什么是struct&#xff1f;2. 如何聲明、定義和創建一個struct&#xff1f;3. struct和其他數據類型&#xff08;如數組、切片、map等&#xff09;有什么區別&#xff1f;4. 如何訪問struct字段&#xff1f;5. struct是否支持繼承&#xff0c;是否支持重…

JavaWeb_xml

文章目錄 1.xml是什么&#xff1f;2.xml的用途 1.xml是什么&#xff1f; xml 是可擴展的標記性語言 2.xml的用途 1、用來保存數據&#xff0c;而且這些數據具有自我描述性 2、它還可以做為項目或者模塊的配置文件 3、還可以做為網絡傳輸數據的格式&#xff08;現在 JSON 為主…

【Github】SourceTree技巧匯總

sourceTree登錄github賬戶 會跳轉到瀏覽器端 按照Git Flow 初始化倉庫分支 克隆遠程倉庫到本地 推送變更到遠程倉庫 合并分支 可以看到目前的本地分支&#xff08;main、iOS_JS&#xff09;和遠程分支&#xff08;origin/main、origin/HEAD、origin/iOS_JS&#xff09;目前所處…

5134. 簡單判斷

文章目錄 Question輸入樣例1&#xff1a; 3 7 0 輸出樣例1&#xff1a; IdeasCode Question 給定三個非負整數 x,y,z &#xff0c;請你按如下要求進行判斷并輸出相應結果&#xff1a; 如果 x>yz &#xff0c;則輸出 。 如果 y>xz &#xff0c;則輸出 -。 如果 xy 且 z0…

pip install總是報錯:ValueError: Trusted host URL must include a host part: ‘#‘

一、問題現象 報錯信息如下&#xff1a; Traceback (most recent call last):File "/user_name/anaconda3/bin/pip", line 11, in <module>sys.exit(main())^^^^^^File "/user_name/anaconda3/lib/python3.11/site-packages/pip/_internal/cli/main.py&…

14_基于Flink將pulsar數據寫入到HBase

3.7.基于Flink將數據寫入到HBase 3.7.1.編寫Flink完成數據寫入到Hbase操作, 完成數據備份, 便于后續進行即席查詢和離線分析 3.7.1.1.HBase基本介紹 hbase是基于Google發布bigTable論文產生一款軟件, 是一款noSQL型數據, 不支持SQL. 不支持join的操作, 沒有表關系, 不支持事…

Codeforces 757F. Team Rocket Rises Again 最短路 + 支配樹

題意&#xff1a; 給你 n 個點&#xff0c; m 條雙向邊&#xff0c;求爆了某個點后&#xff0c;從s出發的最短路距離&#xff0c;會改變最多的數量。 分析&#xff1a; 建出最短路樹&#xff08;DAG&#xff09;之后&#xff0c;在最短路樹上跑一下支配樹&#xff0c;找出支…

鏈表OJ詳解

&#x1f495;人生不滿百&#xff0c;常懷千歲憂&#x1f495; 作者&#xff1a;Mylvzi 文章主要內容&#xff1a;鏈表oj詳解 題目一&#xff1a;移除元素 題目要求&#xff1a; 畫圖分析&#xff1a; 代碼實現&#xff1a; struct ListNode* removeElements(struct List…

flutter項目 環境搭建

開發flutter項目 搭建工具環境 flutter項目本身 所需開發工具環境 flutter 谷歌公司開發 系統支持庫 鏡像庫 搭建流程&#xff1a; flutter 官網&#xff1a; https://flutter.dev/community/china //步驟1 .bash_profile touch .bash_profile pwd /Users/haijunyan open ~ e…

商品首頁(sass+git本地初始化)

目錄 安裝sass/sass-loader 首頁(vue-setup) 使用git本地提交 同步遠程git庫 安裝sass/sass-loader #安裝sass npm i sass -D#安裝sass-loader npm i sass-loader10.1.1 -D 首頁(vue-setup) <template><view class"u-wrap"><!-- 輪播圖 --><…

C++lambda表達式

先來說背景&#xff1a;當我們需要對一些的元素進行排序的時候&#xff0c;可以使用std::sort來進行排序&#xff0c;而當需要對一些自定義類型的元素來排序的時候&#xff0c;要去寫一個類&#xff0c;或者說是需要寫一個仿函數&#xff0c;而如果功能要求上需要根據不同的比較…

基于chatgpt動手實現一個ai_translator

動手實現一個ai翻譯 前言 最近在極客時間學習《AI 大模型應用開發實戰營》&#xff0c;自己一邊跟著學一邊開發了一個進階版本的 OpenAI-Translator&#xff0c;在這里簡單記錄下開發過程和心得體會&#xff0c;供有興趣的同學參考&#xff1b; ai翻譯程序 版本迭代 在學習…

VLC播放主要流程

前言 VLC 播放流程大概是先加載解封裝器,然后通過es_out控制所有的stream。然后會加載decoder。最終通過resource文件的方法交給輸出 模塊。下面簡要介紹。 正文 播放器主要分為三層。主要通過兩個接口實現了功能隔離。分別是es_out.c和decoder.c的實現了&#xff1a; //控…

算法練習-搜索 相關

文章目錄 迷宮問題 迷宮問題 定義一個二維數組 m行 * n列 &#xff0c;如 4 5 數組下所示&#xff1a; int arr[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, }; 它表示一個迷宮&#xff0c;1表示墻壁&#xff0c;0表示可以走的路&#xff0c;只…

Synchronized八鎖

/** * Description: 8 鎖 * 1 標準訪問&#xff0c;先打印短信還是郵件 ------sendSMS ------sendEmail 2 停 4 秒在短信方法內&#xff0c;先打印短信還是郵件 ------sendSMS ------sendEmail 3 新增普通的 hello 方法&#xff0c;是先打短信還是 hello ------getHello ------…

Idea中使用statement接口對象,顯示mysql版本號,所有庫和表名

使用statement 接口對象&#xff0c;進行以下操作&#xff1a; 顯示數據庫版本號顯示所有庫顯示所有庫中的table表 顯示數據庫版本號&#xff1a; public class StatementDemo {Testvoid showall(){try{Statement st conn.createStatement();ResultSet rs st.executeQuery(…

pytest fixture 常用參數

fixture 常用的參數 參數一&#xff1a;autouse&#xff0c;作用&#xff1a;自動運行&#xff0c;無需調用 舉例一&#xff1a;我們在類中定義一個function 范圍的fixture; 設置它自動執行autouseTrue&#xff0c;那么我們看下它執行結果 輸出&#xff1a; 說明&#xff1a;…

Leetcode-每日一題【劍指 Offer 12. 矩陣中的路徑】

題目 單詞必須按照字母順序&#xff0c;通過相鄰的單元格內的字母構成&#xff0c;其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內的字母不允許被重復使用。 例如&#xff0c;在下面的 34 的矩陣中包含單詞 "ABCCED"&#xff08;單詞中的字母…

CUDA執行模型

一、CUDA執行模型概述 二、線程束執行 1. 線程束與線程塊 線程束是SM中基本的執行單元。 當一個線程塊的網格被啟動后&#xff0c;網格中的線程塊分布在SM中。 一旦線程塊被調度到一個SM中&#xff0c;線程塊中的線程會被進一步劃分成線程束。 一個線程束由32個連續的線程…

【Express.js】數據庫初始化

數據庫初始化 在軟件開發階段和測試階段&#xff0c;為了方便調試&#xff0c;我們通常會進行一系列的數據庫初始化操作&#xff0c;比如重置數據表&#xff0c;插入記錄等等&#xff0c;或者在部署階段進行數據初始化的操作 根據前面章節介紹過的 knex.js 和 sequelize.js&…