- Summary:
handler method 參數綁定常用的註解,我們根據他們處理的Request的不同內容部分分爲四類:(主要講解常用類型)
A、處理requet uri 部分(這裏指uri template中variable,不含queryString部分)的註解: @PathVariable;
B、處理request header部分的註解: @RequestHeader, @CookieValue;
C、處理request body部分的註解:@RequestParam, @RequestBody;
D、處理attribute類型是註解: @SessionAttributes, @ModelAttribute;
1. 使用 @PathVariabl 註解獲取路徑中傳遞參數5. 使用 @CookieValue 獲取 cookie 的值到
2. 使用 @ModelAttribute 註解獲取POST請求的FORM表單數據
3. 直接用HttpServletRequest/HttpServletResponse獲取數據
4. 使用 @RequestParam 獲取 HttpServletRequest 請求參數
6. 使用 @RequestHeader 獲取 HttpServletRequest 頭信息
7. 使用 @SessionAttributes 獲取 HttpSession 信息
- Example:
1. 使用 @PathVariabl 註解獲取路徑中傳遞參數
JAVA
@RequestMapping(value = "/{id}/{str}")
public ModelAndView helloWorld(@PathVariable String id, @PathVariable String str) {
System.out.println(id);
System.out.println(str);
return new ModelAndView("/helloWorld");
}2. 使用 @ModelAttribute 註解獲取POST請求的FORM表單數據
JSP
<form method="post" action="hao.do">
a: <input id="a" type="text" name="a"/>
b: <input id="b" type="text" name="b"/>
<input type="submit" value="Submit" />
</form>
JAVA pojo
public class Pojo{
private String a;
private int b;
}
JAVA controller
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("pojo") Pojo pojo) {
return "helloWorld";
}
3. 直接用HttpServletRequest/HttpServletResponse獲取數據
JAVA
@RequestMapping(method = RequestMethod.GET)
public String get(HttpServletRequest request, HttpServletResponse response) {
System.out.println(request.getParameter("a"));
return "helloWorld";
}4. 使用 @RequestParam 獲取 HttpServletRequest 請求參數
JAVA
@RequestMapping(value = "/requestParam", method = RequestMethod.GET)
public String setupForm(@RequestParam("a") String a, ModelMap model) {
System.out.println(a);
return "helloWorld";}5. 使用 @CookieValue 獲取 cookie 的值到
JAVA
@RequestMapping ( "cookieValue" )
public String testCookieValue( @CookieValue ( "hello" ) String cookieValue, @CookieValue String hello) {
System. out .println(cookieValue + "-----------" + hello);
return "cookieValue" ;
}6. 使用 @RequestHeader 獲取 HttpServletRequest 頭信息
@RequestMapping ( "testRequestHeader" )
public String testRequestHeader( @RequestHeader ( "Host" ) String hostAddr, @RequestHeader String Host) {
System. out .println(hostAddr + "-----" + Host );
return "requestHeader" ;
}7. 使用 @SessionAttributes 獲取 HttpSession 信息