SpringBoot的一個好處就是通過注解可以輕松獲取前端頁面的參數,之后尅將參數經過一系列處理傳送到后台數據庫,前端時間正好用到。大致分為一下幾種:
1.指定前端URL請求參數名稱與方法名稱一致,這種方式簡單來說就是URL請求格式中參數需要與方法的參數名稱對應上,舉個例子,這么一個URL請求:http://localhost:8080/0919/test1?name = xxx & pwd = yyy 在指定的控制器類上加上Controller 注解,同時指定RequestMapping注解即可,當請求路徑參數與方法參數匹配上時會自動注入。
@RequestMapping("/test1") @ResponseBody public String test1( String name, String pwd ) { String s1 = name; String s2 = pwd; String s1 + s2; }
啟動主程序,訪問瀏覽器出現下圖,表明注入參數成功:
xxxyyy
2.第二種方式是通過HttpServletRequest來獲取前端頁面參數,代碼如下。簡單來說就是通過調動Request的getParameter方法來獲取參數,比如訪問路徑類似這樣:http://localhost:8080/0919/test2?firstName = zhang & lastName = san
@RequstMapping("/test2") @ResponseBody public String test2( HttpServletRequest request ) { String firstName = request.getParamenter("firstName"); String lastName = request.getParameter("lastName"); return firstName = lastName; }
啟動主程序,訪問瀏覽器出現如下結果,表明注入成功,這種方式也可以表單參數,一般get和post請求都可以
zhangsan
3.第三種方式是通過創建一個JavaBean對象來封裝表單參數或者是請求URL路徑中參數,具體代碼如下
@RequestMapping("/test3") @ResponseBody public String test3( Student student ) { String firstName = student.getFirstName(); String lastName = student.getLastName(); return firstName = lastName; }
對應的JavaBean對象如下:
public class Student { private String firstName; private String lastName; public Student() { super(); } public String getFirstName() { return firstName; } public void setFirstName( String firstName ) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName( String lastName ) { this.lastName = lastName; } }
簡單來說就是將表單參數作為一個JavaBean類的屬性,通過設置方法參數為一個JavaBean對象,之后在方法中通過調用對象的get方法來獲取表單傳過來的參數,比如訪問路徑是:http://localhost:8080/0919/test3?firstName = zhang & lastName = san 啟動主程序,出現如下結果,表明參數注入成功,這種方式如果請求的表單參數很多,可以考慮使用這種方式。
zhangsan
4.第四種方式是通過PathVariable注解來綁定請求路徑的參數,參考代碼如下
@RequestMapping( value = "/test4/{a}/{bbb}") @ResponseBody public String test4( @PathVariable("a") String aaa, @PathVariable String bbb ) { return aaa+bbb; }
這種情況簡單來說就是URL中采用動態綁定的形式表示。之后在方法中指定的參數通過PathVariable來將請求的URL中的參數綁定到方法參數,在這里不指定PathVariable注解的具體值時按照請求路徑動態變量的順序與注解順序一致即可注入。如果想指定注入,那么指定PathVariable注解的值與動態變量名一致即可特定注入,比如請求路徑是:http://localhost:8080/0919/test4/111/222
啟動主程序,出現如下結果,表明注入成功:
111222
5.第五種方式是通過RequestParam注解來獲取,具體代碼如下:
@RequestMapping( value = "/test5") @ResponseBody public String test5( @RequestParam("aaa") String aac,@RequstParam("bbb") String bbb) { return aac+bbb; }
這種方式是通過URL路徑的形式將請求路徑上的參數綁定都方法參數上,簡單來說就是實參值賦給響應的形參,與上面這種方式的區別是前者是動態URL模板注入,這里是普通的URL請求注入,比如訪問這個路徑:
http://localhost:8080/0919/test5?aaa = 111 & bbb = 4444
啟動主程序,出現如下結果,表明注入成功
1114444
6.第六中方式是通過ModelAttribute方式來注入參數的,具體代碼如下:
@RequestMapping( value = "/kkk") public String kkk() { return "test2"; } @RequestMapping( value = "/test6") public String test6( @ModelAttributer("kkk") Student s ) { return "test3"; }
這種方式一般是通過在頁面展示,所以這里創建兩個頁面做測試test2.jsp和test3.jsp進行測試
<body> <form action = "<%= request.getContextPath()%>/0919/test6" method = "post"> firstName: <input type = "text" name = "firstName"/><br/> lastName<input type = "text" name = "lastName"><br/> <input type = "submit" value = "提交"/> <input type = "reset" value = "重置"> </form> </body>
<body> ${kkk.firstName} + ${kkk.lastName} </body>
簡單來說就是通過ModelAttribute注解將請求參數封裝到指定的Javabean對象,同時通過value值將這接受了表單參數對象賦給value,這里將S賦給了一個變量名為kkk的存在,之后就可以在JSP頁面通過這個變量名使用el表達式來獲取傳過來的參數,測試路徑為:http://localhost:8080/0919/kkk
輸出結果為:
bbb+aaa