對于各種注解而言,排第一的當然是“@Controller”,表明某類是一個controller。?
“@RequestMapping”請求路徑映射,如果標注在某個controller的類級別上,則表明訪問此類路徑下的方法都要加上其配置的路徑;最常用是標注在方法上,表明哪個具體的方法來接受處理某次請求。?
@Controller
@RequestMapping(value="/book")
public class BookController { @RequestMapping(value="/title") public String getTitle(){ return "title"; } @RequestMapping(value="/content") public String getContent(){ return "content"; } }
由于BookController類加了value="/book"的“@RequestMapping”的注解,所有相關路徑都要加上"/book",即請求的url分別為:?
- http://localhost:8080/book/title
- http://localhost:8080/book/content
"@RequestMapping"的value值前后是否有“/”對請求的路徑沒有影響,即value="book" 、"/book"、"/book/"其效果是一樣的
?
"@RequestMapping" 的屬性
- value: 指定請求的實際url
1. 普通的具體值。如前面的value="/book"。
2. 含某變量的一類值@RequestMapping(value="/get/{bookId}")public String getBookById(@PathVariable String bookId,Model model){ model.addAttribute("bookId", bookId); return "book"; }
路徑中的bookId可以當變量,@PathVariable 注解即提取路徑中的變量值
3.ant風格
@RequestMapping(value="/get/id?"):可匹配“/get/id1”或“/get/ida”,但不匹配“/get/id”或“/get/idaa”;
@RequestMapping(value="/get/id*"):可匹配“/get/idabc”或“/get/id”,但不匹配“/get/idabc/abc”;
@RequestMapping(value="/get/id/*"):可匹配“/get/id/abc”,但不匹配“/get/idabc”;
@RequestMapping(value="/get/id/**/{id}"):可匹配“/get/id/abc/abc/123”或“/get/id/123”,也就是Ant風格和URI模板變量風格可混用;
4. 含正則表達式的一類值
@RequestMapping(value="/get/{idPre:\\d+}-{idNum:\\d+}"):可以匹配“/get/123-1”,但不能匹配“/get/abc-1”,這樣可以設計更加嚴格的規則。
可以通過@PathVariable 注解提取路徑中的變量(idPre,idNum)
5. 或關系
@RequestMapping(value={"/get","/fetch"} )即 /get或/fetch都會映射到該方法上 - method: ?指定請求的method類型, GET、POST、PUT、DELETE等;
@RequestMapping(value="/get/{bookid}",method={RequestMethod.GET,RequestMethod.POST}) - params
@RequestMapping(params="action=del"),請求參數包含“action=del”,如:http://localhost:8080/book?action=del - headers
@RequestMapping(value="/header/id", headers = "Accept=application/json"):表示請求的URL必須為“/header/id 且 請求頭中必須有“Accept =application/json”參數即可匹配。
- value: 指定請求的實際url