@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;
}