1. @RequestMapping:java
在請求的路徑中傳遞參數:參數做爲路徑的一部分,能夠在路徑中直接使用web
{paramName}來表示,另外一種就是更加傳統的表示方式?paramName=paramValue正則表達式
@RequestMapping(value ="/test/path/{id}",method=RequestMethod.GET) public String testPath(@PathVariable String id){ System.out.println("路徑中的參數:"+id); return "index"; } @RequestMapping(value="/test/param?name=jobs",method= RequestMethod.GET) public String testParam(@RequestParam(name="name") String name){ System.out.println("參數值是:"+name); return "index"; }
在對應的接受參數分別使用@PathVariable和@RequestParamspring
@pathVariable能夠屢次使用,它能夠很好的支持int,long,Date數據類型,spring會幫咱們自動去轉換,轉換失敗時會拋出TypeMismatchException異常。固然若是這些基本的類型轉換不能知足你的需求,spring還有其餘可供類型轉換的方法,這裏不在這篇中講。app
路徑中使用正則表達式的表示方法學習
因爲本人對正則不熟悉,在這裏就把官方文檔中的說明直接拿過來,作個標記,知道有這麼一種方式方法:ui
另外一種方式,不解釋:spa
它與HTTP請求中的request body對應code
@RequestMapping(path = "/something", method = RequestMethod.PUT) public void handle(@RequestBody String body, Writer writer) throws IOException { writer.write(body); }
包請求中的參數封裝成一個對象
@RequestMapping(method = RequestMethod.POST) public String processSubmit(@ModelAttribute("pet") Pet pet) { do something }
4. Controller中能夠做爲放回值的類型
咱們這裏只學習想經常使用的就可:
ModelAndView:這個彷佛是之前最經常使用的,既有視圖又有數據模型
Model:這個只返回數據模型,視圖模型和你請求的對應
View:放回視圖
Map:數據
List:數據
String:解析成放回視圖
void:
把請求參數綁定到方法參數中。
@RequestMapping("/test/param") public String testRequestParam(@RequestParam("name") String name){ return "index"; }
表示在請求中有一個參數名爲name的參數,經過註解把該參數的值和方法中的參數綁定,這樣在方法參數中就能夠獲取用戶的數據。
固然這樣寫的要注意一點,就是若是沒有這個參數name的話系統會報錯,解決的辦法是:@RequestParam(value="name",required=false),可使用是不是必傳來作。
若是對於傳入的參數個數不肯定,可使用Map<Stirng,String>或者MultiValueMap<String,String>來做爲方法參數:
//不肯定參數個數 @RequestMapping("/test/params") public String testRequestParam2(@RequestParam Map<String, String> params){ //params中放着全部的參數,一鍵值對的形式存在 return "index"; }
該註解經過註解一個方法,使得這個方法的返回值直接寫到HTTP響應體中,而不一樣於放在模型(Model)中。
該註解和@RequestBody相識,相反。
//註解是方法返回值直接放到Http響應的報文體中 @RequestMapping("/test/retunBoyd") @ResponseBody public String testResponseBody(){ return "returnBody"; }
若是在你的@Controller註解的類中,方法都使用了@ResponseBody註解,那麼你就能夠修改該類使用RestController註解,全部方法去除@ResponseBody註解。
簡單講:@RestController = @Controller + @ResponseBody
不解釋看圖:
9.升級到3.0
設置web.xml配置文件使容器升級到3.0
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> ... </web-app>