Request URI部分的注解:@PathVariable處理Request Header部分的注解:@RequestHeader,@CookieValue處理Request Body部分的注解:@RequestParam,@RequestBody處理Attribute類型的注解:@sessionAttribute,@ModelAttribute@RequestMapping URI template樣式映射時,即url/{param},這時param可以通過@PathVariable注解綁定它傳過來的值到方法的參數上 @Controller public class RelativePathUriTemplateController { @RequestMapping("/url/{param}") public void getParams(@PathVariable String param) { //.... } } Request請求的Header部分的值綁定到方法的參數上 Host localhost:8080 Accept text/html,application/xhtml+xml,application/xml;q=0.9 Accept-Language fr,en-gb;q=0.7,en;q=0.3 Accept-Encoding gzip,deflate Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive 300 @RequestMapping("/url") public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding, @RequestHeader("Keep-Alive") long keepAlive) { //... } 把request header部分的 Accept-Encoding的值,綁定到參數encoding上了, Keep-Alive header的值綁定到參數keepAlive上。
RequestHeader中關于cookie的值綁定到方法的參數上@RequestMapping("/url") public void displayHeaderInfo(@CookieValue("JSESSIONID") String cookie) { //... } Content-Type不是application/x-www-form-urlencoded編碼的內容,例如application/json,application/xml等通過使用HandlerAdapter配置的HttpMessageConverter來解析data body,然后綁定到相應的Bean上因為配置有FormHttpMessageConverter,所以也可以用來處理application/x-www-form-urlencoded的內容,處理完的結果放在一個MultiValueMap<String,Stirng>里 @RequestMapping(value = "/url", method = RequestMethod.POST) public void handle(@RequestBody String body) throws IOException { //... } Controller的方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式的數據寫入到Response對象的body數據區 @ResponseBody @RequestMapping("/") public RedirectView root() { return new RedirectView("/index/index.html"); }HttpSession中的Attribute對象的值 @Controller @RequestMapping("/editPet.do") @SessionAttributes("pet") public class EditPetForm { // ... } @RequestMapping之前,為請求綁定需要從后臺查詢的Model @ModelAttribute public Account addAccount(@RequestParam String number) { return accountManager.findAccount(number); } 這種方式實際的效果就是在調用@RequestMapping的方法之前,為request對象的model里put("account",Account)
Bean上,要綁定的值來源于 @SessionAttributes啟用的Attribute對象@ModelAttribute用于方法上時指定的Model對象以上兩種情況都沒有時,new一個需要綁定的Bean對象,然后把Request中按名稱對應的方式把值綁定到Bean中 @RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST) public String PRocessSubmit(@ModelAttribute Pet pet) { } 首先查詢 @SessionAttributes有無綁定的Pet對象,若沒有則查詢@ModelAttribute方法層面上是否綁定了Pet對象,若沒有則將URI template中的值按對應的名稱綁定到Pet對象的各屬性上
轉自http://blog.csdn.net/walkerjong/article/details/7946109
新聞熱點
疑難解答