<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
SpringBoot 接收使用者端提交資料/引數會使用到相關注解
詳 解 @PathVariable 、 @RequestHeader 、 @ModelAttribute 、 @RequestParam 、 @MatrixVariable、@CookieValue、@RequestBody
1.需求: 演示各種方式提交資料/引數給伺服器,伺服器如何使用註解接收
2.應用範例演示
需求: 演示各種方式提交資料/引數給伺服器,伺服器如何使用註解接收
建立srcmainresourcesstaticindex.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <h1>hello, llp</h1> 基本註解: <hr/> <a href="/monster/200/jack" rel="external nofollow" >@PathVariable-路徑變數 monster/200/jack</a><br/><br/> </body> </html>
演示@PathVariable 使用,建立srcmainjavacomllpspringbootcontrollerParameterController.java, 完成測試
@RestController public class ParameterController { /** * /monster/{id}/{name} 解讀 * 1. /monster/{id}/{name} 構成完整請求路徑 * 2. {id} {name} 就是佔位變數 * 3. @PathVariable("name"): 這裡name 和{name} 命名保持一致 * 4. String name_ 這裡自定義,和{name}命名無關 * 5. @PathVariable Map<String, String> map 把所有傳遞的值傳入map * 6. 可以看下@PathVariable原始碼 */ @GetMapping("/monster/{id}/{name}") public String pathVariable(@PathVariable("id") Integer id, @PathVariable("name") String name, @PathVariable Map<String, String> map) { System.out.println("id-" + id); System.out.println("name-" + name); System.out.println("map-" + map); return "success"; } }
演示@RequestHeader 使用,修改 ParameterController.java , 完成測試
√ 修改 index.html
<a href="/requestHeader" rel="external nofollow" >@RequestHeader-獲取Http請求頭 </a><br/><br/>
√ 修改 ParameterController.java
/** * @RequestHeader("Host") 獲取http請求頭的 host資訊 * @RequestHeader Map<String, String> header: 獲取到http請求的所有資訊 */ @GetMapping("/requestHeader") public String requestHeader(@RequestHeader("host") String host, @RequestHeader Map<String, String> header, @RequestHeader("accept") String accept) { System.out.println("host-" + host); System.out.println("header-" + header); System.out.println("accept-" + accept); return "success"; }
演示@RequestParam 使用,修改 ParameterController.java , 完成測試
√ 修改 index.html
<a href="/hi?name=wukong&fruit=apple&fruit=pear&id=300&address=北京" rel="external nofollow" >@RequestParam-獲取請求引數</a><br/><br/>
√ 修改 ParameterController.java
/** * @param username wukong * @param fruits List<String> fruits 接收集合 [apple, pear] * @param paras Map<String, String> paras 如果我們希望將所有的請求引數的值都獲取到, * 可以通過@RequestParam Map<String, String> paras這種方式 * 一次性的接收所有的請求引數 {name=wukong, fruit=apple, id=300, address=北京} * 如果接收的某個引數中有多個之值比如這裡fruits是一個集合,從map中只能拿到一個 * 可以理解map底層會將相同的key的value值進行覆蓋 * @return * @RequestParam */ @GetMapping("/hi") public String hi(@RequestParam(value = "name") String username, @RequestParam("fruit") List<String> fruits, @RequestParam Map<String, String> paras) { //username-wukong System.out.println("username-" + username); //fruit-[apple, pear] System.out.println("fruit-" + fruits); //paras-{name=wukong, fruit=apple, id=300, address=北京} System.out.println("paras-" + paras); return "success"; }
演示@CookieValue 使用,修改 ParameterController.java , 完成測試
√ 修改 index.html
<a href="/cookie" rel="external nofollow" >@CookieValue-獲取cookie值</a><br/><br/>
√ 修改 ParameterController.java
/** * 因為我的瀏覽器目前沒有cookie,我們可以自己設定cookie[技巧還是非常有用] * 如果要測試,可以先寫一個方法,在瀏覽器建立對應的cookie * 說明 1. value = "cookie_key" 表示接收名字為 cookie_key的cookie * 2. 如果瀏覽器攜帶來對應的cookie , 那麼 後面的引數是String ,則接收到的是對應對value * 3. 後面的引數是Cookie ,則接收到的是封裝好的對應的cookie */ @GetMapping("/cookie") public String cookie(@CookieValue(value = "cookie_key", required = false) String cookie_value, HttpServletRequest request, @CookieValue(value = "username", required = false) Cookie cookie) { System.out.println("cookie_value-" + cookie_value); if (cookie != null) { System.out.println("username-" + cookie.getName() + "-" + cookie.getValue()); } System.out.println("-------------------------"); Cookie[] cookies = request.getCookies(); for (Cookie cookie1 : cookies) { System.out.println(cookie1.getName() + "=>" + cookie1.getValue()); } return "success"; }
演示@RequestBody 使用,修改 ParameterController.java , 完成測試
√ 修改 index.html
<hr/> <h1>測試@RequestBody獲取資料: 獲取POST請求體</h1> <form action="/save" method="post"> 姓名: <input name="name"/> <br> 年齡: <input name="age"/> <br/> <input type="submit" value="提交"/> </form>
√ 修改 ParameterController.java
/** * @RequestBody 是整體取出Post請求內容 */ @PostMapping("/save") public String postMethod(@RequestBody String content) { System.out.println("content-" + content); return "success"; }
@RequestAttribute 和 @SessionAttribute使用
演示@RequestAttribute @SessionAttribute使用,建立 com/hspedu/web/controller/RequestController.java , 完成測試
√ 修改 index.html
<a href="/login" rel="external nofollow" >@RequestAttribute、@SessionAttribute-獲取request域、session屬性-</a>
√ 建立 RequestController.java
@GetMapping("/login") public String login(HttpServletRequest request) { request.setAttribute("user", "llp"); //向session中新增資料 request.getSession().setAttribute("website", "http://www.baidu.com"); //這裡需要使用forward關鍵字,如果不適用則會走檢視解析器,這 //裡檢視解析器字首設定的是/ 字尾設定的.html ---> /ok.html //而請求轉發在伺服器端執行,/被解析成 ip:port/工程路徑 //進而最終得到的完整路徑是 ip:port/工程路徑/ok.html //但是我們這裡希望存取的是 ip:port/工程路徑/ok這個請求路徑 //因此這裡手動的設定forward:/ok ,底層會根據我們設定的路徑進行請求轉發 return "forward:/ok"; } @GetMapping("ok") //返回字串,不走檢視解析器 @ResponseBody public String ok(@RequestAttribute(value = "user", required = false) String username, @SessionAttribute(value = "website",required = false) String website, HttpServletRequest 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"; } }
####1.說明 : 演示覆雜引數的使用,重點: Map、Model、ServletResponse
2.程式碼實現
//響應一個註冊請求 @GetMapping("/register") public String register(Map<String,Object> map, Model model, HttpServletResponse response) { //如果一個註冊請求,會將註冊資料封裝到map或者model //map中的資料和model的資料,會被放入到request域中 map.put("user","llp"); map.put("job","碼農"); model.addAttribute("sal", 2500); //一會我們再測試response使用 //我們演示建立cookie,並通過response 新增到瀏覽器/使用者端 Cookie cookie = new Cookie("email", "123@sohu.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"; }
1.需求說明 : 演示自定義物件引數使用,完成自動封裝,型別轉換
2.程式碼實現
1.建立srcmainresourcesstaticsave.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="120"/> <br/> 婚否: <input name="isMarried" value="true"/> <br/> 生日: <input name="birth" value="2000/11/11"/> <br/> <!--注意這裡car物件是monster的屬性,給物件屬性賦值時需要以物件名.欄位名的方式--> 坐騎:<input name="car.name" value="法拉利"/><br/> 價格:<input name="car.price" value="99999.9"/> <input type="submit" value="儲存"/> </form> </body> </html>
2.修改srcmainjavacomllpspringbootcontrollerParameterController.java
@PostMapping("/savemonster") public String saveMonster(Monster monster) { System.out.println("monster= " + monster); return "success"; }
到此這篇關於SpringBoot接收引數使用的註解範例講解的文章就介紹到這了,更多相關SpringBoot接收引數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45