Controller接收参数的常用方式总体可以分为三类。第一类是Get请求通过拼接url进行传递,第二类是Post请求通过请求体进行传递,第三类是通过请求头部进行参数传递。1 @PathVariable接收参数请求方式:localhost:7001/param/123请求示例:代码示例:@GetMapping("{id}")
public String getPathVariable(@PathVariable String id){
return "id="+id;
}
2 @RequestParam接收参数使用这个注解需要注意两个点,一是加了这个参数后则请求中必须传递这个参数,二是@RequestParam这个注解可以指定名字,请求参数必须和指定的这个名字相同,如果不指定,则默认为具体参数名。请求方式:localhost:7001/param/getParam?myId=18请求示例:代码示例:@GetMapping("getParam")
public String getRequestParam(@RequestParam("myId") String id){
return "id="+id;
}
3 无注解传参这种方式和2对比,最大的区别就是这个参数不是必传的,请求路径上可以不传递。请求方式:localhost:7001/param/getString?id=18请求示例:代码示例:@GetMapping("getString")
public String getString(String id){
return "id="+id;
}
4 HttpServletRequest接收参数请求方式:localhost:7001/param/getRequest?id=18请求示例:代码示例:@GetMapping("getRequest")
public String getRequest(HttpServletRequest request){
String id = request.getParameter("id");
return "id="+id;
}
5 @RequestBody接收请求体参数这种方式一般用来传递实体对象,加了这个注解后,参数也是必传的。请求方式:{"id":18}请求示例:代码示例:@PostMapping("getBody")
public String getBody(@RequestBody String id){
return "id="+id;
}
6 @RequestHeader接收请求头参数请求示例:代码示例:@PostMapping("getHeader")
public String getHeader(@RequestHeader String id){
return "id="+id;
}
1 @PathVariable接收参数
请求方式:localhost:7001/param/123
请求示例:
![3177eed5bf893f5d9901f5b8ea248e62.png](https://i-blog.csdnimg.cn/blog_migrate/5de93105e6d66db74d799f3151fe2858.png)
代码示例:
@GetMapping("{id}")
public String getPathVariable(@PathVariable String id){
return "id="+id;
}
2 @RequestParam接收参数
使用这个注解需要注意两个点,一是加了这个参数后则请求中必须传递这个参数,二是@RequestParam这个注解可以指定名字,请求参数必须和指定的这个名字相同,如果不指定,则默认为具体参数名。
请求方式:localhost:7001/param/getParam?myId=18
请求示例:
![7e8c296affd62f0f7e67c3fb4177903a.png](https://i-blog.csdnimg.cn/blog_migrate/cad64da80efbccd473a2e88fcbc3a3f3.png)
代码示例:
@GetMapping("getParam")
public String getRequestParam(@RequestParam("myId") String id){
return "id="+id;
}
3 无注解传参
这种方式和2对比,最大的区别就是这个参数不是必传的,请求路径上可以不传递。
请求方式:localhost:7001/param/getString?id=18
请求示例:
![517707861efdc855a4e9f582afa7e6c3.png](https://i-blog.csdnimg.cn/blog_migrate/769332ce408ed92001474c8403ea3556.png)
代码示例:
@GetMapping("getString")
public String getString(String id){
return "id="+id;
}
4 HttpServletRequest接收参数
请求方式:localhost:7001/param/getRequest?id=18
请求示例:
![3c9931ce87145514ffea71985c719ef0.png](https://i-blog.csdnimg.cn/blog_migrate/1ac31efb8deed7d0aafe9b14d5ccbc18.png)
代码示例:
@GetMapping("getRequest")
public String getRequest(HttpServletRequest request){
String id = request.getParameter("id");
return "id="+id;
}
5 @RequestBody接收请求体参数
这种方式一般用来传递实体对象,加了这个注解后,参数也是必传的。
请求方式:{"id":18}
请求示例:
![4370fa1d3cef0f8d357f009377d940cf.png](https://i-blog.csdnimg.cn/blog_migrate/7dcfa585aac7b01262de47489f680281.png)
代码示例:
@PostMapping("getBody")
public String getBody(@RequestBody String id){
return "id="+id;
}
6 @RequestHeader接收请求头参数
请求示例:
![4cde99c7d4eb5c78a275a706f3827c87.png](https://i-blog.csdnimg.cn/blog_migrate/18f671e4e887ea0e0103474d3b49ec8e.jpeg)
代码示例:
@PostMapping("getHeader")
public String getHeader(@RequestHeader String id){
return "id="+id;
}
此是spring-boot-route系列的第一篇文章,这个系列的文章都比较简单,主要目的就是为了帮助初次接触Spring Boot 的同学有一个系统的认识。本文已收录至我的github,欢迎各位小伙伴star
!
github:https://github.com/binzh303/spring-boot-route
本文示例代码已上传至github,点个star
支持一下!
Spring Boot系列教程目录
spring-boot-route(一)Controller接收参数的几种方式
spring-boot-route(二)读取配置文件的几种方式
spring-boot-route(三)实现多文件上传
spring-boot-route(四)全局异常处理
spring-boot-route(五)整合Swagger生成接口文档
spring-boot-route(六)整合JApiDocs生成接口文档
spring-boot-route(七)整合jdbcTemplate操作数据库
spring-boot-route(八)整合mybatis操作数据库
spring-boot-route(九)整合JPA操作数据库
spring-boot-route(十)多数据源切换
spring-boot-route(十一)数据库配置信息加密
spring-boot-route(十二)整合redis做为缓存
spring-boot-route(十三)整合RabbitMQ
spring-boot-route(十四)整合Kafka
spring-boot-route(十五)整合RocketMQ
spring-boot-route(十六)使用logback生产日志文件
spring-boot-route(十七)使用aop记录操作日志
spring-boot-route(十八)spring-boot-adtuator监控应用
spring-boot-route(十九)spring-boot-admin监控服务
spring-boot-route(二十)Spring Task实现简单定时任务
spring-boot-route(二十一)quartz实现动态定时任务
spring-boot-route(二十二)实现邮件发送功能
spring-boot-route(二十三)开发微信公众号
这个系列的文章都是工作中频繁用到的知识,学完这个系列,应付日常开发绰绰有余。如果还想了解其他内容,请在github
上提交issue
,我会进一步完善这个系列的文章!