Spring Boot學習(四)Controller接收請求參數html
1、經過實體Bean接收請求參數java
經過實體Bean來接收請求參數,適用於get和post方式,Bean的屬性名稱必須與請求參數名稱相同。app
項目結構以下:post
1.Bean代碼以下:學習
package com.example.beans; public class Student { private int id; private String name; private String pwd; //省略get和set }
2.表單頁面以下 mytest.htmlcode
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Controller接收請求參數</title> </head> <body> <form action="/test/test1" method="post"> 姓名:<input type="text" name="name"> <br/><br/> 密碼:<input type="password" name="passwd"> <br/><br/> <input type="submit" value="肯定"/> </form> </body> </html>
3.控制器代碼以下:orm
@Controller public class MyTest { @RequestMapping(value = "/test/login") public String test1(){ return "/test/mytest"; } @RequestMapping(value = "/test/test1",method=RequestMethod.POST) public String login(Student stu, Model model){ model.addAttribute("stu",stu); return "/test/result"; } }
4.顯示結果頁面result.htmlxml
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>全部學生信息</title> </head> <body> <h4 th:text="${stu.getName()}"></h4> </body> </html>
2、經過方法的參數接收htm
經過處理方法的形參接收請求參數,也就是直接把表單參數寫在控制器類相應方法的形參中,即形參名稱與請求參數名稱徹底相同。該接收參數方式適用於get和post提交請求方式。對象
@RequestMapping(value="/test/test2",method = RequestMethod.POST) public String login(String name, String password, Model model){ model.addAttribute("name",name); return "/test/result"; }
3、經過HttpServletRequest接收請求參數
經過HttpServletRequest接收請求參數,適用於get和post提交請求方式
@RequestMapping(value="/test/test3",method=RequestMethod.POST) public String login(HttpServletRequest req,Model model){ String name=req.getParameter("name"); model.addAttribute("name",name); return "/test/result"; }
4、經過@PathVariable接收URL中的請求參數
經過 @PathVariable 能夠將 URL 中佔位符參數綁定到控制器處理方法的入參中:URL 中的 {xxx} 佔位符能夠經過@PathVariable("xxx") 綁定到操做方法的入參中。
http://localhost:8080/test/test4/張三丰
@RequestMapping(value = "/test/test4/{name}",method = RequestMethod.GET) @ResponseBody public String test4(@PathVariable String name){ return name; }
5、經過@RequestParam接收請求參數
@RequestMapping("/test/test5") @ResponseBody public String test5(@RequestParam String name,@RequestParam String passwd){ return name; }
經過@RequestParam接收請求參數與經過處理方法的形參接收請求參數的區別是:當請求參數名與接收參數名不一致時,經過處理方法的形參接收請求參數不會報404錯誤,而經過@RequestParam接收請求參數會報404錯誤。
6、經過@ModelAttribute接收請求參數
@RequestMapping("/test/test6") public String test6(@ModelAttribute("stu") Student stu){ return "/test/result"; }
@ModelAttribute註解放在處理方法的形參上時,用於將多個請求參數封裝到一個實體對象,從而簡化數據綁定流程,並且自動暴露爲模型數據,於視圖頁面展現時使用。而「經過Bean接收請求參數」只是將多個請求參數封裝到一個實體對象,並不能暴露爲模型數據(須要使用model.addAttribute語句才能暴露爲模型數據)。
視圖層代碼以下:
<h4 th:text="${stu.getName()}"></h4>