SpringBoot多种场景传参模式

目录
  • web技术
  • 多种传参方式
    • 传统参数传递
    • 复杂对象映射
    • 数组和集合类型参数
    • Restful风格传参

web技术

我们知道常见的web技术也就是网站开发,分为静态网站,和动态网站,动态网站技术常见的有三种,分别是 jsp java web,asp c# web,php web但是它们对应请求request,响应response 都是一样的我们用java web开发动态网站用的mvc框架就是,springmvc,当然我们现在用的是springboot 它只是对spirng全家桶的一个整合框架,他本质不是一个新的框架,内部还是spirng+springmvc

多种传参方式

传统参数传递

我们知道controller方法中会帮我注入HttpServletRequest对象,我们可以通过
request.getParameter("参数名")来直接获取参数,

@RequestMapping("/test01")
public ModelAndView test01(HttpServletRequest request){
      String username = request.getParameter("username");
      String password = request.getParameter("password");

      System.out.println(username);
      System.out.println(password);
      return null;
}

简单类型参数映射

  • 如果请求参数和Controller方法的形参同名,可以直接接收
  • 如果请求参数和Controller方法的形参不同名,可以使用@RequestParam注解贴在形参前,设置对应的参数名称

注意这里只能是基本数据类型比如string,int,long,boolean等类型

@RequestMapping("/test02_1")
public ModelAndView test02_1(String username,String password){
      System.out.println(username);
      System.out.println(password);
      return null;
}
@RequestMapping("/test02_2")
public ModelAndView test02_2(@RequestParam("username") String name,@RequestParam(value = "password",defaultValue = "1234987") String pwd){
      //使用了@RequestParam的参数不能传空值
      // required:表示是否必须要传值
      // defaultValue:当没有该请求参数时,SpringMVC给请求参数的默认值
      System.out.println(name);
      System.out.println(pwd);
      return null;
}

复杂对象映射

当然在实际项目中,我们会有很多个参数,一般超过两个参数我们就要封装成对象,通过对象传参数,不然这么一个一个写会麻烦,代码冗余,不美观,不能复用

此时能够自动把参数封装到形参的对象属性上:

  • 请求参数必须和对象的属性同名
  • 此时对象会直接放入request作用域中,名称为类型首字母小写
  • @ModelAttribute设置请求参数绑定到对象中并传到视图页面的key值
@RequestMapping("/test03")

public ModelAndView test03(@ModelAttribute("stu") Student student){
    /*可以使用对象作为方法的形参,同时接受接受前台的多个请求参数
      SpringMVC会基于同名匹配,将请求参数的值注入对应的对象中的属性中
      @ModelAttribute起名字key值*/
      System.out.println(student);
      ModelAndView mv = new ModelAndView();
      mv.setViewName("test2");
      return mv;
}

如果需要body里面json传参数需要在形参前面加上@RequestBody 会自动完成映射

 @PostMapping("/register")
    public Result bodyParams(@RequestBody Users users) {
        return ResultResponse.success(users);
    }

数组和集合类型参数

当前台页面传来的参数是参数名相同,参数值不同的多个参数时,可以直接封装到方法的数组类型的形参中
比如批量删除时传来的参数

    /*对于参数名相同的多个请求参数,可以直接使用数组作为方法的形参接收
      可以使用对象中的集合属性接收*/
    @DeleteMapping("/del")
    public Result listParams(String[] ids) {
        return ResultResponse.success(ids);
    }

Restful风格传参

Restful是一种软件架构风格,严格上说是一种编码风格,其充分利用 HTTP 协议本身语义从而提供了一组设计原则和约束条件。

主要用于客户端和服务器交互类的软件,该风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 在后台,RequestMapping标签后,可以用{参数名}方式传参,同时需要在形参前加注解@PathVarible

@RequestMapping("/delete/{id}")
public ModelAndView test4(@PathVariable("id")Long id){
    System.out.println("delete");
    System.out.println(id);
    return null;
}

到此这篇关于SpringBoot多种场景传参模式的文章就介绍到这了,更多相关SpringBoot 传参模式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • spring boot前后端传参的实现

    获取传参 @PathVariable注解主要用来获取URL参数.即这种风格的 URL:http://localhost:8080/user/{id} @GetMapping("/user/{id}") public String testPathVariable(@PathVariable Integer id) { System.out.println("获取到的id为:" + id); return "success"; } 对于多个参数的获

  • Docker如何给Springboot项目动态传参的实现方法

    背景 最近有些初学Docker的朋友问到,想通过docker-compose.yml来动态给微服务传参,而不是每次都要在项目配置文件硬编码,然后构建服务镜像,最后打包发布经过一些列流程才能更新配置,那能不能直接通过docker-compose.yml里把一些配置项放到环境变量,然后springboot项目自动从环境变量获取参数呢? 场景 假设现在有一个Springboot项目,它里面有一个数据库的配置项,但是不同的数据库测试环境(DEV\SIT\UAT),数据库ip有多个,想使用同一个Sprin

  • SpringBoot多种场景传参模式

    目录 web技术 多种传参方式 传统参数传递 复杂对象映射 数组和集合类型参数 Restful风格传参 web技术 我们知道常见的web技术也就是网站开发,分为静态网站,和动态网站,动态网站技术常见的有三种,分别是 jsp java web,asp c# web,php web但是它们对应请求request,响应response 都是一样的我们用java web开发动态网站用的mvc框架就是,springmvc,当然我们现在用的是springboot 它只是对spirng全家桶的一个整合框架,他

  • ASP.NET Core中如何利用多种方式给Action传参

    前言 ASP.NET Core 是一个跨平台,开源的,轻量级,高性能 并且 高度模块化的web框架.在 ASP.NET Core MVC 中有很多种方式可以给 Action 方法传递参数,比如说:url方式,querystring方式,request header,request body,form 等等.本篇就和大家一起讨论下如何使用这些方式,并且用代码去一一验证. 创建 AuthorRepository 类 在这个例子中我会使用一个 Repository 类,然后在 Controller 下

  • springboot通过spel结合aop实现动态传参的案例

    目录 前言 SpEl表达式简介 实例: SpEl结合AOP动态传参 小结 项目地址 前言 基于SpingBoot框架中, 我们随处可以见的便是各种各样的功能注解, 注解的实现原理AOP之前有说过(翻看本系列的前面几章即可), 这里不过多赘述. 那么, 你有没有碰到这样一种场景: 需要动态的传参数进注解, 注意是动态的而不是写死在代码里的. 针对这种需求, 今天, 我们就来实现一个简单的案例. SpEl表达式简介 正式撸代码之前, 先了解下SpEl (Spring Expression Langu

  • springboot 传参校验@Valid及对其的异常捕获方式

    目录 传参校验@Valid及对其的异常捕获 @Valid校验异常捕捉 传参校验@Valid及对其的异常捕获 springboot参数经常需要进行校验,比如创建文件,文件名就需要进行一定的校验. 本文以创建文件夹为例进行参数校验:controller: 首先就是在需要校验的参数类前面添加注释@Valid @ApiOperation(value = "创建目录", notes = "在某目录下创建新文件夹") @ApiResponses({ @ApiResponse(c

  • 浅谈spring使用策略模式实现多种场景登录方式

     @Autowired注解可以帮我们自动注入我们想要的 Bean. 如果只是简单使用@Autowired会遇到spring IOC容器中一个接口有多个实现的情况,spring无法识别具体的实现类,如果不是策略模式,我们可以进行具体的指定@Qualifier和@primary来避免bean冲突的情况.但在策略模式中是不行的. 而除了这个基本功能之外, @Autowired 还有更加强大的功能,还可以注入指定类型的数组,List/Set 集合,甚至还可以是 Map 对象. 为每个具体的实现类添加了一

  • SpringBoot通过@MatrixVariable进行传参详解

    目录 1.相关概念 2.开启矩阵变量 3.代码测试 1.相关概念 语法: 请求路径:/person/info;name=lisi;hobbies=basketball,football,tennis不同变量用分号相隔, 一个变量有多个值则使用逗号隔开 SpringBoot默认是禁用了矩阵变量的功能 手动开启原理: 对于路径的处理, UrlPathHelper的removeSemicolonContent设置为false,让其支持矩阵变量的. 矩阵变量必须有url路径变量才能被解析, 也就是/pe

  • springboot前端传参date类型后台处理的方式

    目录 springboot前端传参date类型后台处理 先说结论 解决方法 前端如何发送date类型的参数给后端 首先阐述一下常见的几种时间类型的区别 GET传参时 Post传参时 后端接收请求代码 模拟浏览器请求 springboot前端传参date类型后台处理 先说结论 建议大家直接使用@JsonFormat,原因如下: 1.针对json格式:在配置文件中加以下配置 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.t

  • 使用Redis获取数据转json,解决动态泛型传参的问题

    场景: 项目有两种角色需要不同的登录权限,将redis做为用户登录信息缓存数据库.码一个方法,希望能够根据传入不用用户实体类型来获取相应的数据.用户实体为:SessionEntity<User1>.SessionEntity<User2>.json使用FastJson. 先阐述遇到的几个问题: 1.redis获取到的数据序列化后,转json,经常提示转换异常(并不是每次,只是时常). 2.不想每种用户都书写一个redis操作方法(显得tai low). 解决: 1.redis获取到

  • 详解Vue 路由组件传参的 8 种方式

    我们在开发单页面应用时,有时需要进入某个路由后基于参数从服务器获取数据,那么我们首先要获取路由传递过来的参数,从而完成服务器请求,所以,我们需要了解路由传参的几种方式,以下方式同 vue-router@4 . 编程式路由传参 除了使用 <router-link> 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现. 1. 通过 params 传递 路由配置 路径参数 用冒号 : 表示. const routes = [ // 动态段以冒号开始 { pat

随机推荐