目录
参考:https://blog.csdn.net/qq_42894896/article/details/84202435
一、Controller注解
1、在controller类上加上@Controller或者@RestController注解,表示该类为controller
@Controller:用于返回值为modelAndView的情况,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面
@RestController:用于返回值为json或者xml等的情况,相当于@Controller+@ResponseBody两个注解的结合
@ResponseBody:将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
二、映射注解
@RequestMapping("/*"):在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求
@PostMapping("/*"):相当于@RequestMapping(method = RequestMethod.POST),处理post请求
@GetMapping("/*"):相当于@RequestMapping(method = RequestMethod.GET),处理get请求
三、接收请求参数
接收到的请求主要有get请求和post请求
1、get请求
get请求没有请求体,参数在url后面以?username=123&password=123这种形式存在,有两种接收方式
(1)第一种是@RequestParam注解,传递过来的参数与方法变量一一对应,如果名字一样的话可以不用写value
(2)第二种是直接用对象接收
2、post请求
传递过来的参数放在请求体重,有两种格式,x-www-form-urlencoded和json格式
(1)x-www-form-urlencoded格式的数据的接收方式与get一样
第一种是@RequestParam注解,传递过来的参数与方法变量一一对应,如果名字一样的话可以不用写value
第二种是直接用对象接收
(2)json格式的数据也是用对象接收,但要加@RequestBody注解
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。
3、参数在路径中
@GetMapping("/products/{productId}")
public ResponseVO<ProductDetailVO> detail(@PathVariable Integer productId){
return productService.detail(productId);
}