SpringBoot在Controller层接收参数的n种姿势(超详细)

目录
  • 前言
  • 接收get请求
  • 接收post请求

前言

在工作中,比如要实现一个功能,前端传什么参数,后端的controller层中怎么接收参数 ,封装成了什么实体对象,有些参数是在URL上使用,有些参数是在body上使用,service层中做了什么逻辑,调用dao层的sql怎么写的,前端传的参数,后端用controller中的一个方法来接收请求这些都是我们需要思考的逻辑!

下面重点讲下SpringBoot接收请求的n种姿势,建议收藏哦~

接收get请求

(1)get请求无参数

@RestController
@RequestMapping("book")
public class BookController {

    @Resource
    private BookService bookService;
    /**
     * 按照条件获取书籍信息
     * @param bookParams
     * @return
     */
    @GetMapping("/getBookLists")
    @ResponseBody
    public CommonResponse<List<Book>> getBookLists(BookParams bookParams) {
        // 按照查询条件分页查询书籍
        List<Book> books = bookService.getBookList(bookParams);
        CommonResponse response = CommonResponse.successInstance(books);
        return response;
    }
}

获取参数方式1:http://localhost:9527/book/getBookLists这种方式的请求,不带参数

(2)get请求问号拼的参数
使用@RequestParam来取问号后面拼接的参数,告诉springboot 这个user对应的就是参数中的user

  @RequestMapping("/get")
    public void get (@RequestParam(name = "user") String user){
        System.out.println("接收到参数:"+user);
        return "接收到参数:"+user;
    }

获取参数方式2:获取http://localhost:9527?user=XXX问号拼接的参数

(3)get请求路径URL参数
@PathVariable是取url中的变量 ,会自动进行赋值。

@GetMapping("/path/{user}")
    public String path(@PathVariable(name = "user") String user){
        System.out.println("接收到参数:"+user);
        return "接收到参数:"+user;
    }

获取参数方式3:获取路径参数,RestFull风格入参

接收post请求

(1) 请求的参数是json格式 ,各参数名与实体类定义的字段一致
@RequestBody将参数映射为一个java对象

   @PostMapping("/post/same")
    public String same(@RequestBody Users users){
        System.out.println("JSON 接到的:"+users.toString());
        return "JSON 接到的:"+users.toString();
    }

获取参数方式1:post请求JSON数据格式,各参数名与实体类定义的字段一样

(2)请求JSON数据格式,各参数名与实体类定义的字段完全不一样(需要引入fastJson依赖

<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.57</version>
		</dependency>
@PostMapping("/fastJson")
    public String fastJson(@RequestBody JSONObject param){
        System.out.println("JSON :"+param.toJSONString());
        return "JSON :"+param.toJSONString();
    }

获取参数方式2:post请求JSON数据格式,各参数名与POJO定义的字段完全不一样(需要引入fastJson依赖)

(3)post请求的参数名都对应可以直接获取

@RequestMapping("/sameParamName")
    public String sameParamName(String users , String id){
        System.out.println("users:"+users+"id: "+id);
        return "users:"+users+"id: "+id;
    }

到此这篇关于SpringBoot在Controller层接收参数的常用方法(超详细)的文章就介绍到这了,更多相关SpringBoot Controller 接收参数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解SpringBoot中Controller接收对象列表实现

    如果Spring Boot中对应的Controller要接收一个对象,该对象中又存放了一个List列表,那么页面该如何传递相关应的参数信息呢. 本篇文章给大家一个简单的示例,提供一种实现方式. 实体类 首先看实体类的结构(注意使用了Lombok): @Data public class Rules { private List<Rule> rules; } 对应Rule实体类代码如下: @Data public class Rule { /** * 类名 */ private String c

  • SpringBoot开发详解之Controller接收参数及参数校验

    目录 Controller 中注解使用 传输参数的几种Method 获取参数的几种常用注解 使用对象直接获取参数 使用@Valid对参数进行校验 总结 Controller 中注解使用 接受参数的几种传输方式以及几种注解: 在上一篇中,我们使用了JDBC链接数据库,完成了简单的后端开发.但正如我在上文中抛出的问题,我们能不能更好的优化我们在Controller中接受参数的方式呢?这一篇中我们就来聊一聊怎么更有效的接收Json参数. 传输参数的几种Method 在定义一个Rest接口时,我们通常会

  • SpringBoot实现前后端、json数据交互以及Controller接收参数的几种常用方式

    目录 前言 获取参数的几种常用注解 一.请求路径参数get请求 二.Body参数POST请求 四.HttpServletRequest 五.参数校检 最终选择交互方式 参考文献 总结 前言 现在大多数互联网项目都是采用前后端分离的方式开发,前端人员负责页面展示和数据获取,后端负责业务逻辑处理和接口封装.当与前端交互的过程当中,常用json数据与前端进行交互,这样想取出前端传送过来的json数据的时候,就需要用到@RequestBody这个注解.@RequestBody注解用于读取http请求的内

  • java springboot poi 从controller 接收不同类型excel 文件处理

    根据poi接收controller层的excel文件导入 可使用后缀名xls或xlsx格式的excel. 1.pom引入 <!-- poi 操作Excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <d

  • 详解SpringBoot Controller接收参数的几种常用方式

    第一类:请求路径参数 1.@PathVariable 获取路径参数.即url/{id}这种形式. 2.@RequestParam 获取查询参数.即url?name=这种形式 例子 GET http://localhost:8080/demo/123?name=suki_rong 对应的java代码: @GetMapping("/demo/{id}") public void demo(@PathVariable(name = "id") String id, @Re

  • Java Spring Controller 获取请求参数的几种方法详解

    Java Spring Controller 获取请求参数的几种方法  1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"="application/x-www-form-urlencoded",可用post提交 url形式:http://localhost:8080/SSMDemo/demo/addUser1?username=lixiaoxi&password=1

  • springboot控制层传递参数为非必填值的操作

    目录 springboot控制层传递参数为非必填值 Controller层接收参数的形式 1.参数存在于请求路径中 2.参数在请求体中 springboot控制层传递参数为非必填值 需求是查询全部评价时,后端控制层的level为非必选项,即为空. 这里@RequestParam(required=false)就可以处理level为非必须值的情况. 如果没有这一行,当level为空时,会返回空白页面. 这里要注意一下!是个坑 Controller层接收参数的形式 1.参数存在于请求路径中 1.请求

  • springmvc如何使用map接收参数

    目录 springmvc 使用map接收参数 第一种情况:请求参数有多组 第二种情况:所有的参数不分组 用map接收参数的几个注意的问题 1.接受map的参数不能写value 2.对于多个同名字段 springmvc 使用map接收参数 开发过程中有时候我们并不知道前端都会传递哪些参数给到后端. 为方便扩展接口功能, 在请求参数不改变的情况下兼容前端新增的入参的需求, 我们会考虑使用map接受参数. 这样无论前端加减参数, controller的入参是不需要变动的. 第一种情况:请求参数有多组

  • 关于SpringMVC在Controller层方法的参数解析详解

    目录 自定义参数解析器 实现效果 实现和配置 Spring提供解析器 一些使用Tricky 总结 使用版本: spring-boot: 2.1.6.RELEASE sping: 5.1.8.RELEASE java: openjdk 11.0.13 自定义参数解析器 为了能够实现自定义参数解析器,只需要实现 HandlerMethodArgumentResolver 并将添加到 WebMvcConfigurer#addArgumentResolvers 即可. 实现效果 下面以添加一个获取请求头

  • 在controller中如何设置接收参数的默认值

    目录 controller设置接收参数的默认值 @RequestParam代表的是请求参数注解 controller的传参问题 controller的映射 直接写类型,跟参数名 Request.getParameter方法 @RequestParam注解 @PathVariable注解 controller设置接收参数的默认值 public @ResponseBody Object queryActivityForPageByCondition( @RequestParam(value="kkk

  • SpringBoot 中使用 Validation 校验参数的方法详解

    目录 1. Validation 介绍 1.1 Validation 注解 1.2 @valid 和 @validated的区别 2. SpringBoot 中使用 Validator 校验参数 2.1 依赖引入 2.2 标注校验实体类 2.3 开启参数校验 2.3.1 简单参数校验 2.3.2 JavaBean 校验 2.4 捕捉参数校验异常 项目中写逻辑时,为保证程序的健壮性,需要对各种参数进行判断,这就导致业务代码不只健壮,还十分臃肿.其实 SpringBoot 中已经提供了 Valida

  • SpringBoot整合Hibernate Validator实现参数验证功能

    在前后端分离的开发模式中,后端对前端传入的参数的校验成了必不可少的一个环节.但是在多参数的情况下,在controller层加上参数验证,会显得特别臃肿,并且会有许多的重复代码.这里可以引用Hibernate Validator来解决这个问题,直接在实体类进行参数校验,验证失败直接返回错误信息给前端,减少controller层的代码量. 一.xml引入Hibernate Validator <!-- 验证器 --> <dependency> <groupId>org.hi

  • SpringBoot中自定义注解实现参数非空校验的示例

    前言 由于刚写项目不久,在写 web 后台接口时,经常会对前端传入的参数进行一些规则校验,如果入参较少还好,一旦需要校验的参数比较多,那么使用 if 校验会带来大量的重复性工作,并且代码看起来会非常冗余,所以我首先想到能否通过一些手段改进这点,让 Controller 层减少参数校验的冗余代码,提升代码的可阅读性. 经过阅读他人的代码,发现使用 annotation 注解是一个比较方便的手段,SpringBoot 自带的 @RequestParam 注解只会校验请求中该参数是否存在,但是该参数是

随机推荐