文章目录
一、@GetMapping、@PostMapping和@RequestMapping的区别
在Spring MVC 中使用 @RequestMapping
来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置的映射作用一致。
@GetMapping
是一个作为快捷方式的组合注释,相当于
@RequestMapping(method = RequestMethod.GET)
。
@PostMapping
是一个作为快捷方式的组合注释,相当于@RequestMapping(method = RequestMethod.POST)
。
参考博客:https://blog.csdn.net/renanrenan/article/details/84654362/
二、@RequestBody与@RequestHeader的区别
import org.springframework.web.bind.annotation.*;
@GetMapping("/getSign")
public String genUserSig(@RequestHeader("sign") String sign){
String sign = "2021314";
return sign;
}
@PostMapping("/selectUser")
public String selectUserPhotoAndName(@Valid @RequestBody SelectUserFrom form){
String userSelected = "";
return userSelected;
}
参考博客:https://blog.csdn.net/kobejayandy/article/details/12690161
三、@ResponseBody的作用
这里讨论下: @ResponseBody在什么情况下使用?
先来看一段代码:
@Controller
@RequestMapping("/")
public class HelloController {
@RequestMapping(value = "/something", method = RequestMethod.GET)
@ResponseBody
public String helloWorld() {
return"Hello World";
}
}
运行以上代码,在浏览器地址栏输入: http://localhost:8080/something
运行结果,页面上输出 Hello World
如果去掉 @ResponseBody
,会出现Whitelabel Error Page 404的错误。
结果分析:如果在一个方法上使用了@RequestMapping
注解,方法的返回值通常解析为跳转的路径, 也就是说要跳转到指定的jsp页面。在这个代码示例中,表示要跳转到的是 Hello World.jsp
页面。 因为工程中尚未添加这个jsp文件,所以报出了 404 错误 (The requested resource is not available)。
如果添加了 @ResponseBody
这个注解, 则表明该方法的返回值直接写入到 HTTP Response Body
中。 这就是说,如果返回的是JSON, 就得必须添加 @ResponseBody
这个注解
一般在异步获取数据时使用。在使用@RequestMapping
后,返回值通常解析为跳转路径,加上@ResponseBody后
返回结果不会被解析为跳转路径,而是直接写入HTTP response body
中。比如异步获取json数据,加上@ResponseBody
后,会直接返回json数据。
四、@Valid的用法
参考博客:https://blog.csdn.net/weixin_38118016/article/details/80977207