SpringBoot多种场景传参模式

 更新时间:2021年07月29日 14:12:14   作者:kenx  
传参是非常常见的,本文主要介绍了SpringBoot多种场景传参模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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 传参模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring通过配置文件和注解实现属性赋值

    Spring通过配置文件和注解实现属性赋值

    这篇文章主要介绍了Spring通过配置文件和注解实现属性赋值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 解决新版 Idea 中 SpringBoot 热部署不生效的问题

    解决新版 Idea 中 SpringBoot 热部署不生效的问题

    这篇文章主要介绍了解决新版 Idea 中 SpringBoot 热部署不生效的问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • Java基础之如何学好Java

    Java基础之如何学好Java

    这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典。如何学习java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领域其他技能的学习。
    2014-10-10
  • Spring Data JPA调用存储过程实例代码

    Spring Data JPA调用存储过程实例代码

    本篇文章主要介绍了Spring Data JPA调用存储过程实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • Java类和成员变量声明类详解

    Java类和成员变量声明类详解

    这篇文章主要介绍了Java类和成员变量声明类详解,类中的成员变量——这些被称为字段,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • Elasticsearch mapping 概念及自动创建示例

    Elasticsearch mapping 概念及自动创建示例

    这篇文章主要为大家介绍了Elasticsearch mapping 概念及自动创建示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 关于springboot2整合lettuce启动卡住问题的解决方法

    关于springboot2整合lettuce启动卡住问题的解决方法

    Lettuce和Jedis的都是连接Redis Server的客户端程序,下面这篇文章主要给大家介绍了关于springboot2整合lettuce启动卡住问题的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • Spring高级接口Aware浅析

    Spring高级接口Aware浅析

    通过aware接口可以获取Spring容器相关信息,但这样会与Spring容器耦合,这篇文章主要介绍了Spring aware接口理解,需要的朋友可以参考下
    2023-01-01
  • Spring Cloud 如何保证微服务内安全

    Spring Cloud 如何保证微服务内安全

    这篇文章主要介绍了Spring Cloud 如何保证微服务内安全的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java+mysql用户注册登录功能

    Java+mysql用户注册登录功能

    这篇文章主要为大家详细介绍了Java结合mysql实现用户注册登录功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论