参数上的注解,功能是从请求信息中获取参数的值。请求信息包含以下几类
- 请求的URL地址
- 请求的消息头,消息体
- Servlet API相关的对象,request也是对象之一。
1、URL地址
- @PathVariable:获取URL上占位符参数的值,例如/test/{param},可以使用@PathVariable(“param”)获取param的值。
- @MatrixVariable:获取URL上的matrix变量,例如/test/some;key=value。其中key值为matrix变量,若存在多个,使用封号分隔。它有以下几个属性
-
- name:matrix变量的名称。当只设置name属性时,可以直接写name的值,例如@MatrixVariable(“key”)等价于name=key
- pathVar:matrix变量归属于哪个path 片段,上述示例中归属于some
- required:URL路径上是否必须存在matrix,当required值为true,而URL上没有对应的matrix变量时,会抛错。
- defaultValue:当required值为false时,为matrix设置默认值
使用matrix变量,需要配置enablematrix-variables属性为true
<mvc:annotation-driven enablematrix-variables="true"/>
2、request对象
- @RequestParam:获取request对象的param。等价于调用request.getParameter(key)方法
- @RequestHeader:获取request对象中的header。等价于调用request.getHeader(key)方法
- @RequestAttribute:获取request对象的属性。等价于调用request.getAttribute(key)方法
- @RequestPart:当请求的数据类型时multipart/form-data时,@RequestPart可以获取请求中的信息。它等价于普通请求的@RequestParam,@RequestBody。即multipart请求中的消息头,消息体都可以通过@RequestPart获取。
- @RequestBody:获取请求中消息体中的内容。必须满足请求有消息体,GET请求没有消息体,不适用。@RequestBody通常用于获取POST请求的消息体
3、cookie对象
@CookieValue:获取Cookie中的值。等价于调用request.getCookies方法,获取Cookie对象之后,遍历Cookie数组,获取Cookie的键值对,过期时间等。
4、session对象
@SessionAttribute:获取Session属性的值,等价于session.getAttribute方法。