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

目录
  • springboot控制层传递参数为非必填值
  • Controller层接收参数的形式
    • 1.参数存在于请求路径中
    • 2.参数在请求体中

springboot控制层传递参数为非必填值

需求是查询全部评价时,后端控制层的level为非必选项,即为空。

这里@RequestParam(required=false)就可以处理level为非必须值的情况。

如果没有这一行,当level为空时,会返回空白页面。

这里要注意一下!是个坑

Controller层接收参数的形式

1.参数存在于请求路径中

1.请求的参数:http://localhost:8080/postman/123

123作为参数传递到后台,接收方法:使用@PathVariable注解

@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值

@RestController
@RequestMapping("postman")
public class controllerTest {
    /*
            localhost:8080/postman/***
     */
    @PostMapping("{id}")
    public void testPost(@PathVariable("id") Long id){
        System.out.println("接收到的参数"+id);
    }
}

2.请求的参数:http://localhost:8080/postman?id=123

接收方法:使用注解@RequestParam(“id”)

   /*
            localhost:8080/postman?id=1234
     */
    @GetMapping
    public void testPost2(@RequestParam("id") Long id){
        System.out.println("接收到的参数"+id);//接收到的参数1234
    }

2.参数在请求体中

1.参数以K-V键值对的形式发送

后台接收

@PostMapping
public void testPost3(Person person){
   System.out.println("接收到的参数"+person);//接收到的参数Person(name=笑烂脸, age=23, sex=男)
}

2.参数以json对象的形式发送

注:前后端分离的项目,参数一般都是以JSON对象的形式发送

后台接收

@PostMapping
public void testPost4(@RequestBody Person person){前后端分离的项目,前端传递的数据都是json对象,所以后台想要接受对应的数据,必须要加@RequestBody注解,否则接收不了
    System.out.println("接收到的参数"+person);//接收到的参数Person(name=笑烂脸, age=23, sex=男)
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们.

(0)

相关推荐

  • Spring Boot 控制层之参数传递方法详解

    当然,您自己创建一个项目也是可以的. bean包下的Student.java package com.example.demo.bean; public class Student { private Integer id; //学号 private String name; //姓名 public Student() { } public Student(Integer id, String name) { this.id = id; this.name = name; } public In

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

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

  • Spring Boot中@RequestParam参数的5种情况说明

    目录 Spring Boot中@RequestParam参数的5种情况 实例如下: Spring Boot注解:@RequestParam详解 1.value:参数名字,即入参的请求参数名字 ​2.required:该参数是否为必传项. ​3.defaultValue:参数的默认值 Spring Boot中@RequestParam参数的5种情况 实例如下: // 可带参数可不带参数,方法都能执行 @RequestMapping("/list") public String test1

  • SpringBoot 设置传入参数非必要的操作

    我就废话不多说了,大家还是直接看代码吧~ 设置参数是否为必要参数 @RequestParam(required = false) 补充:SpringBoot 开发案例之参数传递的正确姿势 前言 开发这么多年,肯定还有不少小伙伴搞不清各种类型的参数是如何传递的,很多同学都是拿来即用,复制粘贴一把撸,遇到问题还是一脸懵逼. 姿势 学习参数传递的正确姿势,先说怎么做,再说为什么,本质上还是复制粘贴一把撸,问题是你想问不想问为什么! 传递 用户登录 前端代码: var param = { "userna

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

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

  • AngularJS 表单验证手机号的实例(非必填)

    代码如下所示: <form ng-app="myApp" ng-controller="validateCtrl" name="myForm" novalidate> <p>电话:<br> <input type="text" name="phone" ng-model="phone" ng-pattern="/(^$)|^(((\+8

  • 详解element-ui设置下拉选择切换必填和非必填

    ➢ 需求 默认都是必选 下拉选择的时候 选择必填,活动名称为必填,需要校验和显示* 选择非必填,活动名称不做校验,隐藏* ➢ 初始校验规则 经测试,网上其他的方式都没有实现需求,动态切换rules中的required没有作用 因为按照以下的写法的话,element-ui在组件初始化后校验规则就定型了,切换也没用 rules: { name: [ { required: true, message: "请输入名称", trigger: "blur" } ], regi

  • springboot控制层图片验证码生成

    本次博客记录项目中一个图片验证码的实现,虽然不是很复杂,但好记性不如烂笔头,谨记! package com.zl.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.IOException; import java.io.Out

  • SpringBoot使用validation-api实现参数校验的示例

    我们在开发Java项目的时候,经常需要对参数进行一些必填项.格式.长度等进行校验,如果手写代码对参数校验,每个接口会需要很多低级的代码,这样会降低代码的可读性.那么我们能不能使用一种比较优雅的方式来实现,对请求中的参数进行校验呢? knife4j的安装与使用可参考我的博客:SpringBoot使用knife4j进行在线接口调试 正文 ValidationApi框架就是用来解决参数校验中代码冗余问题,ValidationApi框架提供一些注解用来帮助我们对请求参数进行校验: SpringBoot使

  • Unity3D启动外部程序并传递参数的实现

    之前开发项目,一直都使用的是外壳程序加子程序的模式,通过外壳程序去启动子程序,外壳程序和子程序之间的通信,是使用配置文件完成的. 我总觉得这样通信很麻烦,因为外壳程序需要对配置文件进行更改和写入,然后子程序又要读取信息.而且整合的时候,会导致有很多配置文件,而且需要对路径做很多处理和限制. 我发现Process.Start()函数中,是可以传递参数的. 也就是说,我们是可以在使用Process.Start()函数启动外部程序时,传递参数的进行通信的. 具体操作如下: public void St

  • Springboot 使用 JSR 303 对 Controller 控制层校验及 Service 服务层 AOP 校验 使用消息资源文件对消息国际化

    导包和配置 导入 JSR 303 的包.hibernate valid 的包 <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.5.Final</version> </dependency> <dependency> <

  • springboot websocket集群(stomp协议)连接时候传递参数

    最近在公司项目中接到个需求.就是后台跟前端浏览器要保持长连接,后台主动往前台推数据. 网上查了下,websocket stomp协议处理这个很简单.尤其是跟springboot 集成. 但是由于开始是单机玩的,很顺利. 但是后面部署到生产搞集群的话,就会出问题了. 假如集群两个节点,浏览器A与节点A建立连接,A节点发的消息浏览器A节点肯定能收到.但是B节点由于没有跟浏览器A建立连接.B节点发的消息浏览器就收不到了. 网上也查了好多,但是没有一个说的很清楚的,也很多都是理论层面的. 还有很多思路都

  • JS控制静态页面传递参数并获取参数应用

    在项目中遇到这也一个问题: 有a.html和b.html. 1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用. 2.a页面已经打开,b页面无论是否打开.在a页面需要获取到b页面的一些元素甚至变量,以便于应用到a页面. 注意:不涉及跨域问题. 想了很久,终于想到了解决方案. 第一个问题,我们可以利用html页面锚点的特性,将参数通过url传递给b页面 这是a页面代码: <button>跳转设置</button

  • JS控制静态页面之间传递参数获取参数并应用的简单实例

    在项目中遇到这也一个问题: 有a.html和b.html. 1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用. 2.a页面已经打开,b页面无论是否打开.在a页面需要获取到b页面的一些元素甚至变量,以便于应用到a页面. 注意:不涉及跨域问题. 想了很久,终于想到了解决方案. 第一个问题,我们可以利用html页面锚点的特性,将参数通过url传递给b页面 这是a页面代码: <button>跳转设置</button

随机推荐