一、@RequestMapping
作用:
用来设置处理器中方法的访问地址
出现位置:
用在方法和类上面
- 类:相当于一个模块的访问地址(基准路径)
-
方法:指定这个方法的访问地址
请求方式:
在没有设置具体属性时,GET或POST都可
属性:
- path / value :指定访问地址 , 如 path = "/save"
- method: 限制请求的方法,如 method = RequestMethod.GET。如果被限制会出现405错误
- param: 限制提交的参数, 如 params = {"id","name"} 必须有这两个参数的名字,否则会出现400错误;params = {"id=1","name=newboy"} 不但要有这些参数,而且值还有限制; params = {"id!=1"} id不等于1的值都可以
- consumers:属性用于指定处理请求的提交内容类型(Content-Type)如 @RequestMapping(value = "toUser",consumes = "application/json")。
- produces 属性用于指定返回的内容类型,返回的内容类型必须是 request 请求头(Accept)中所包含的类型。如 @RequestMapping(value = "toUser",produces = "application/json") 除此之外,produces 属性还可以指定返回值的编码。如 @RequestMapping(value = "toUser",produces = "application/json,charset=utf-8"),表示返回 utf-8 编码。
注:多个属性之间使用逗号隔开;在整个 Web 项目中,@RequestMapping 映射的请求信息必须保证全局唯一。
二、@RequestParam
作用:
放在方法的参数前面,用于提交的参数名与方法的形参名不同的情况;
如果加上了此注解,但是请求的时候没有提供参数:
-
int基本数据类型: 如果没有赋值会出现500
-
Integer包装数据类型: 如果没有赋值会为NULL
属性:
name/value : 指定提交的参数名
required : 默认是true,表示这个参数必须要有,如果没有提供报400 , 避免报错可设置为: required = false
defaultValue: 如果没有指定值,默认是NULL,可以给它指定一个默认值 ,如 defaultValue = "daniel"
注: 控制器方法中参数可以直接封装简单类型(8种基本类型+字符串),
前提:
-
方法的参数名与请求的参数名要相同 (不同就要加@RequestParam 注解), get/post请求都可
-
尽量使用包装类可以减少错误的发生
-
简单类型的集合(List/Map)不能直接绑定,必须要在方法形参的前面加上@RequestParam注解
三、@RequestBody
作用:
放在方法的参数前面, 用于获取请求体的数据 , 只能用于POST请求,因为GET请求没有请求体, 使用GET请求会出现400错误;
可以把前端发送的json字符串 转换为 java对象
接收方式:
方式一 : 使用自定义对象接收;
方式二 : 使用Map集合对象接收
属性:
required : 默认是true,请求体中的数据是必须要有
如 : @RequestBody(required = false) 这样如果没有请求体,它的值为NULL,不会出现400错误
即 :
如果参数是放在请求体中,application/json传入后台的话,那么后台要用@RequestBody才能接收到;
如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或
则形参前 什么也不写也能接收。
注: 前端不能使用 get 方法从浏览器里发送 body. 但后端应用通常可以发送. 比如 node.js 或 postman 。
四、@ResponseBody
作用:
放在方法上或方法返回值前, 用于是把控制器方法的返回值转换为json字符串
属性:
produces : 用于指定返回的数据格式
注:方法的返回值可以是任何封装数据的对象:实体类,List集合, Map集合等
在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
五、@RequestHeader
作用:用于获取请求头的值
如: @RequestHeader("Accept-Encoding") 把Request请求header部分的值绑定到方法的参数上
// Cookie : JSESSIONID=E8605223EFB14A7CE9D647DBB08030FB
注: @CookieValue("JSESSIONID") 可以直接把JSESSIONID的值绑定到方法参数上。
六、@PathVariable
作用:从路径上获取参数值,即使用RESTful操作资源
代码如下:
//地址栏变量名字与形参的名字不同的情况,需要指定name的名字
@RequestMapping("/hello/{uid}") public String getDetails(@PathVariable(value="uid") String id){}