您好,登錄后才能下訂單哦!
今天小編給大家分享的是SpringBoot接值如何實現,相信很多人都不太了解,為了讓大家更加了解,所以給大家總結了以下內容,一起往下看吧。一定會有所收獲的哦。
通過方法的參數來接收請求傳來值
請求時傳值的方式有三種方式 :
URL?name=value
form表單
Ajax異步傳值
接收傳來的值有三類 :
單一值
對象
數組
URL?標識1=值1&標識2=值2
URL后面使用 ?
連接參數, 每組參數使用 =
連接標識與值, 多組參數使用 &
連接
以 超鏈接為例 , 通過URL? 進行傳值
<a href="/test/test04?name=wang&age=12" rel="external nofollow" >test04</a> <br>
<input name="標識" value="值">
在表單中 可以 , , 等標簽傳遞值, name屬性
是傳值的標識 , value屬性
是要傳遞的值
以 表單為例, 進行傳值
<form action="/test/test04" method="post" > <input name="name" value="wang"> <input name="age" value="12"> <input type="submit" value="提交"> </form>
var data = { "標識1" : "值1", "標識2" : "值2" }
將 要傳遞的信息封裝成 JSON 結構, 通過 Ajax異步進行傳值
這里使用 JQuery 的 Ajax
寫法 , 修改 fn 函數
function fn() { var url = "/test/test04"; var data = {"name":"wang", "age":12}; $.ajax({ async: true, type: "POST", url: url, data: data }) }
通過 方法的參數接單一結構的值
在Controller類中增加 test04 方法
@RequestMapping("/test/test04") public String test04(String name , Integer age){ System.out.println("name = " + name); System.out.println("age = " + age); System.out.println(" controller 中的測試方法 test 04 "); return "ref"; }
在頁面上分別點擊 , 進行傳值測試 在idea的控制臺都可以看到接收到的值
注意 要測試 Ajax 頁面要導入 JQuery的依賴 js 包
在不使用 @RequestParam注解 的情況要 , 方法形式參數的名 要與傳值的標識對應
使用@RequestParam注解后, 可以通過注解與傳值的標識對應, 而方法的形式參數名就不受限制
修改 test04方法為 name參數增加 @RequestParam注解
, 并通過注解與傳值標識匹配
@RequestMapping("/test/test04") public String test04(@RequestParam("name") String n , Integer age){ System.out.println("name = " + n); System.out.println("age = " + age); System.out.println(" controller 中的測試方法 test 04 "); return "ref"; }
現在測試依然能得到 打印結果
但 使用了@RequestParam注解后就必須傳遞對應的參數
當然也可以通過設置@RequestParam注解的屬性進行調整
將頁面表單中的 注釋掉
<form action="/test/test04" method="post" > <!-- <input name="name" value="wang">--> <input name="age" value="12"> <input type="submit" value="提交"> </form>
再測試, 會報 400 異常
修改 @RequestParam注解的屬性
required
: 是否是必須的
defaultValue
: 沒有接到值時, 默認設置的值
@RequestMapping("/test/test04") public String test04(@RequestParam(value = "name", required = false, defaultValue = "hello") String n , Integer age){ System.out.println("name = " + n); System.out.println("age = " + age); System.out.println(" controller 中的測試方法 test 04 "); return "ref"; }
將傳遞信息封裝成實體類對象, 通過實體類對象接值
創建 entity 包(文件夾) , 在entity包(文件夾)下創建User實體類
User實體類
package com.yuan.entity; import lombok.Data; @Data public class User { private String name; private Integer age; }
添加test05方法, 參數為 User 類
@RequestMapping("/test/test05") public String test05(User user){ System.out.println("name = " + user.getName()); System.out.println("age = " + user.getAge()); System.out.println(" controller 中的測試方法 test 05 "); return "ref"; }
修改start.html頁面請求URL
<a href="/test/test05?name=wang&age=12" rel="external nofollow" >test05</a> <br> <form action="/test/test05" method="post" > <input name="name" value="wang"> <input name="age" value="12"> <input type="submit" value="提交"> </form>
在瀏覽器發語法 , 就可以在idea控制臺看到接收到信息
多個相同的傳值標識, 可以傳遞數組
修改start.html頁面
<a href="/test/test06?ids=1&ids=2&ids=3" rel="external nofollow" >test06</a> <br> <form action="/test/test06" method="post" > <input name="ids" value="1"> <input name="ids" value="2"> <input name="ids" value="3"> <input type="submit" value="提交"> </form>
增加接值方法test06并測試
@RequestMapping("/test/test06") public String test06(Integer[] ids){ System.out.println("Arrays.toString(ids) = " + Arrays.toString(ids)); System.out.println(" controller 中的測試方法 test 06 "); return "ref"; }
傳遞 JS數組結構
修改start.html頁面
function fn() { var url = "/test/test07"; // var data = { "ids" : [1, 2, 3] }; var idss = $("[name=ids]").map(function () { return this.value }).get() var data = {"ids": idss} $.ajax({ async: true, type: "POST", url: url, data: data }); }
添加新的接值方法test07并測試, 注意這里增加 @RequestParam("ids[]")
注解
@RequestMapping("/test/test07") public String test07(@RequestParam("ids[]") Integer[] ids){ System.out.println("Arrays.toString(ids) = " + Arrays.toString(ids)); System.out.println(" controller 中的測試方法 test 07 "); return "ref"; }
用 “,” 將信息連接成一個字符串進行傳遞
修改start.html頁面
<a href="/test/test06?ids=1,2,3" rel="external nofollow" >test06</a> <br> <form action="/test/test06" method="post" > <input name="ids" value="1,2,3"> <input type="submit" value="提交"> </form>
使用接值方法test06并測試
@RequestMapping("/test/test06") public String test06(Integer[] ids){ System.out.println("Arrays.toString(ids) = " + Arrays.toString(ids)); System.out.println(" controller 中的測試方法 test 06 "); return "ref"; }
從 表單中獲取數據, 組成數組, 再將數組使用 ","連接起來
修改start.html頁面
function fn() { var url = "/test/test06"; var idss = $("[name=ids]").map(function () { return this.value }).get() console.log(idss) var data = {"ids": idss.join(",")} $.ajax({ async: true, type: "POST", url: url, data: data }); }
使用接值方法test06并測試
@RequestMapping("/test/test06") public String test06(Integer[] ids){ System.out.println("Arrays.toString(ids) = " + Arrays.toString(ids)); System.out.println(" controller 中的測試方法 test 06 "); return "ref"; }
關于SpringBoot接值如何實現就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。