你需要知道的Spring注解

@GetMapping、@PostMapping和@RequestMapping

以上注解用于简化http请求,用于controller层
@ G e t M a p p i n g \color{#FF3030}{@GetMapping} @GetMapping
指定为get请求方式,是@RequestMapping(method = RequestMethod.GET)的缩写

 @GetMapping("/empl/list")
 public Resp selectPage(PageDto page, EmployeeMgrVo vo) {
     ...
 }

@ P o s t M a p p i n g \color{#FF3030}{@PostMapping} @PostMapping
指定为post请求方式,是@RequestMapping(method = RequestMethod.POST)的缩写

@PostMapping("/empl/edit")
public Resp editAccount(@RequestBody EmplVo vo) {
    ...
}

@ R e q u e s t M a p p i n g \color{#FF3030}{@RequestMapping} @RequestMapping
接收包括get,post,put,delete等所有请求方式,为以上两种注解的父类。可以在不确定用何种方式怕出错时选择,但是不建议这样使用,最好是确定好需求确定具体的映射方式,有利于代码可读性。
一般查看数据接口使用get,提交数据使用post,更具体使用可以参考https://blog.csdn.net/tolode/article/details/103058290

@PathVariable、@RequestParam和@RequestBody

@ P a t h V a r i a b l e \color{#FF3030}{@PathVariable} @PathVariable
可以识别url路径中的模板参数,作为占位符绑定在路径的入参中,例如如下http请求:

http://localhost:8080/visit/getInfo/18

那么可以使用注解获取url里面的参数,此时,18就作为参数(id)传入

@GetMapping("/visit/getInfo/{id}")
public Resp getVisitorInfo(@PathVariable("id") Long id) {
    ...
}

再例如请求合相应的代码如下:

http://localhost:8080/visit/小明/20

@GetMapping("/visit/{name}/{age}")
public Resp getVisitorInfo(Person p, @PathVariable("name") String username, @PathVariable Long age) {
    ...
}

此时,小明对应的就是name,20对应的age,其中Person并不使用占位符。前端传参的URL必须与@GetMapping中的URL保持一致,且参数位置也需要保持一致,否则路径将无法匹配,导致找不到位置。
同时可以注意到,占位符中的name和实际的username是不一样的,此时要注意,如果参数的名称和路径的名称不一致时,需要在@PathVariable后面标注,使其名字和路径的入参名称保持一致。
@ R e q u e s t P a r a m \color{#FF3030}{@RequestParam} @RequestParam
参数从request中获取值,通过Request.getParameter() 的方式获取的值,支持多个同时使用,提交方式同时支持get和post。注解有以下参数:

  • name/value 绑定本次参数的名称,需要和URL中保持一致,两者意义没有太大差别
  • required 是否必须,默认为必传。
  • defaultValue 如果参数中没有同名参数时的默认值

示例:

http://localhost:8080/springmvc/hello?name=zhang3&age=20

@GetMapping("/hello")
public Resp getVisitorInfo(@RequestParam("name") String name, @RequestParam("age") Long age) {
    ...
}

如上所示:URL请求路径一般为http://…/xxx?A=a&B=b&… @RequestParam中的值用于接收模板中的参数值
@ R e q u e s t B o d y \color{#FF3030}{@RequestBody} @RequestBody
主要用于接收前端给后端传送的json数据(请求体内的数据),使用post方式进行提交
示例:

http://localhost:8080/submit

@PostMapping(value = "/submit")
public Resp submit(@RequestBody sVo Vo) {
	...
}

由于参数vo是请求体中的,因此URL路径中并不包含请求参数vo,而是被@RequestBody用方法参数接收
值得一提的是,同一个接收方法,可以同时存在@PathVariable、@RequestParam和@RequestBody,且可以同时存在多个@PathVariable和@RequestParam,但是@RequestBody只能有一个

@ResponseBody

这个和@RequestBody长得很像的是什么东东呢?顾名思义,这个东西的意思是响应体,其实就是收到请求后,将方法返回的对象转换为json格式响应返回,写入HTTP response body中,可以加在类上面,也可以加在方法上。来一段示例:

@Controller
@RequestMapping("/emp")
public class Emp {
	@ResposeBody
	@GetMapping("getInfoById/{id}")
	public Employee getInfoById(@PathVariable("id") Integer id) {
		...
		return empl;
	}
}

加上该注解后,return的empl会是Employee类型的,并且会被转换为json格式响应给前端,如果不加的话,那么就会返回配置好的empl.jsp页面,如果empl.jsp页面不存在,就会报404错误。

参考文档:
https://blog.csdn.net/justry_deng/article/details/80972817/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值