SpringMVC註解詳解——(持續更新)
@RequestMapping常見的可用引數如下:
1.value: 制定請求的地址,可以是URLTemplate模式;(value可以省略不寫)
2.method:指定請求的method型別,如GET,DELETE,UPDATE,PUT等;
3.consumes: 指定處理請求的提交內容型別(Content-Type),例如application/json, text/html;
4.produces :指定返回的內容型別,僅當request請求頭中的(Accept)型別中包含該指定型別才返回;
5.params:指定request中必須包含某些引數值時,才讓該方法處理;
6.headers:指定request中必須包含某些指定的header值,才能讓該方法處理請求;
例如@RequestMapping(value="/test/",params={"username","age!=10"},headers={"
判斷請求的引數也就是請求url?後面的鍵值對 必須包含username項切age!=10 請求頭必須是上面所述,
username包含username
!username不包含username
age!=10 age不能等於10
RequestMapping對映請求的時候支援Ant風格的資源地址匹配符:
-?:匹配檔名中的一個字元
-* :匹配檔名中的任意字元
-**:**匹配多層路徑
如: -/user/*/createUser 匹配/user/aaa/createUser、/user/bbb/createUser
如: -/user/**/createUser 匹配/user/createUser、/user/aaa/bbb/createUser
如: -/user/createUser??: 匹配/user/createUseraa、/user/createUserbb
@PathVariable:
@PathVariable從URL路徑中取值,如下:
@RequestMapping("/Test/{id}")
public void Test(@PathVariable("id") int num){}
注意:@PathVariable("Str")Str一定要和{str}佔位符的字串一樣,
可以結合HiddenHttpMethodFilter實現RESTful風格的服務介面開發
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
@RequestParam
屬性 value:用來對映請求的鍵
required:根據true 或者false制定這個引數是否在請求裡面一定要有,
defaultValue:當指定的引數在請求中不存在時,用來指定預設值。
用在方法裡面的引數中,用來對映請求的URL?後面的引數,
例如請求的Url是 http://localhost:8080/Learn/Test?id=222
@RequestMapping("/Test")
public void Test(@RequestParam(value="id", required=true,defaultValue="0") int num) {
System.out.println("get value from requestParam "+num);
}
@RequestHeader
value:用來對映請求的請求頭
required:根據true 或者false制定這個引數是否在請求頭裡面一定要有,
defaultValue:當指定的引數在請求頭中不存在時,用來指定預設值。
對映request請求頭
@RequestMapping("/TestHeader")
public void testHeader(@RequestParam(value="Accept-Language") String str) {
System.out.println("get value from requestHeader of Accept-Language "+str);
}
@CookieValue
value:用來對映Cookie中的鍵
required:根據true 或者false制定這個引數是否在Cookie裡面一定要有,
defaultValue:當指定的Cookie在請求中不存在時,用來指定預設值。
@RequestMapping("/TestCookie")
public void testCookie(@CookieValue(value="JSESSIONID",required=false,defaultValue="it is unexists") String cookieValue) {
System.out.println("Here is Cookie Value "+cookieValue);
}
@RequestBody
required :?????
常用來處理content-type不是預設的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等。一般情況下來說常用其來處理application/json型別
通過@requestBody可以將請求體中的JSON字串繫結到相應的bean上,當然,也可以將其分別繫結到對應的字串上
如:前端發給後端的時候 content_type:"application/json"(必須指定) 且data是json:
{ "mp_id": "1350603-028-3300-6" "znwCommonDataCond": { "acquisition_time_min": "2017-03-21", "acquisition_time_max": "2017-04-21" }
}
json字串會自動對映到relationCond上;
後端接收:
@ResponseBody
@RequestMapping(value = "/getEigenValueList",method =RequestMethod.POST)
public String getEigenValueList(Model model,@RequestBody() RelationCond relationCond, HttpServletRequest request, HttpServletResponse response)
RelationCond 這個javabean如下
class RelationCond {
private String mp_id;
private ZnwCommonDataCond znwCommonDataCond;
}
class ZnwCommonDataCond {
private String acquisition_time_min;
private String acquisition_time_max;
}