SpringMVC-3 對映請求引數和請求頭
阿新 • • 發佈:2018-12-26
Spring MVC通過分析控制器處理方法的簽名,將 HTTP請求資訊繫結到處理方法的相應人蔘中。除@PathVariable註解外,SpringMVC還可使用@RequestParam、@RequestHeader和@CookieValue註解分別對映請求引數、請求頭和Cookie值資訊到相應處理方法的入參中,並根據方法的返回值型別做出相應的後續處理。
另外,SpringMVC也支援使用POJO物件繫結請求引數,且也可以使用Servlet原生API作為目標方法的形參。
對映請求引數和請求頭資訊的具體實現程式碼下載地址:http://download.csdn.net/download/bingbeichen/9792045
1. 使用@RequestParam註解對映請求引數資訊
// 注:請求可以為springmvc/testRequestParam?username=qiaobc&age=23
/**
* 使用@RequestParam註解對映請求引數
* 1). value : 請求引數的引數名
* 2). required : 該請求引數是否為必須的,預設為true
* 3). defaultValue : 請求引數的預設值
*/
@RequestMapping("testRequestParam")
public String testRequestParam(@RequestParam ("username") String userName,
@RequestParam(value="age", required=false, defaultValue="0") int age) {
System.out.println("testRequestParam: username = " + userName + ", age = " + age);
return SUCCESS;
}
2. 使用@RequestHeader註解對映請求頭資訊
// 注:請求可以為springmvc/testRequestHeader
/**
* 使用@RequestHeader註解對映請求頭資訊,用法同@RequestParam註解,瞭解即可
*/
@RequestMapping("testRequestHeader")
public String testRequestHeader(@RequestHeader(value="Accept-Language") String al) {
System.out.println("testRequestHeader : Accept-Language = " + al);
return SUCCESS;
}
3. 使用@CookieValue註解對映Cookie值資訊
// 注:請求可以為springmvc/testCookieValue
/**
* 使用@CookieValue註解對映一個Cookie值,用法同@RequestParam註解,瞭解即可
*/
@RequestMapping("testCookieValue")
public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {
System.out.println("testCookieValue : JSESSIONID = " + sessionId);
return SUCCESS;
}
4. 使用POJO物件繫結請求引數資訊
<!-- 請求URL:springmvc/testPojo -->
<form action="springmvc/testPojo" method="post">
username: <input type="text" name="username" />
<br><br>
password: <input type="password" name="password" />
<br><br>
email: <input type="text" name="email" />
<br><br>
age: <input type="text" name="age" />
<br><br>
province: <input type="text" name="address.province" />
<br><br>
city: <input type="text" name="address.city" />
<br><br>
<input type="submit" value="submit" />
</form>
/**
* Spring MVC會按請求引數名和POJO屬性名進行自動匹配,自動為該物件填充屬性值,且支援級聯屬性
* User類中包含username、password、email、age和address屬性,而Address類中包含province和city屬性
*/
@RequestMapping("testPojo")
public String testPojo(User user) {
System.out.println(user);
return SUCCESS;
}
5. 使用Servlet原生API作為目標方法的引數
/**
* 可以使用Servlet原生的API作為目標方法的引數,具體支援以下型別:
* HttpServletRequest、HttpServletResponse、HttpSession
* java.security.Principal、Locale
* InputStream、OutputStream、Reader、Writer
* 具體可在ServletHandlerMethodInvoker的resolveStandardArgument()方法中檢視
*/
@RequestMapping("testServletAPI")
public String testServletAPI(HttpServletRequest request, HttpServletResponse response) {
System.out.println("testServletAPI: " + request + ", " + response);
return SUCCESS;
}