SpringBoot接收请求参数的方式

这篇具有很好参考价值的文章主要介绍了SpringBoot接收请求参数的方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【方式一】原始方式

因为SpringBoot封装了Servlet,所以也允许使用HttpServletRequest类中的方法来获取

    /**
     * 【方式一】原始方式
     */
    @RequestMapping("/demo01")
    public String demo01(HttpServletRequest request) {
        // 参数名要与页面提交的参数名一致
        String name = request.getParameter("name");
        String age_str = request.getParameter("age");

        // 接收到的数据都是String类型,想要int类型需要类型转换
        Integer age_int = Integer.parseInt(age_str);

        return "我叫" + name + ",今年" + age_int;
    }

使用postman发送:http://localhost:8080/demo01?name=张三&age=30,查看结果
springboot获取请求参数,spring boot,java,servlet

【方式二】键值对

1、直接使用参数名(或别名)

springboot允许直接使用参数获取,简单优雅;另外,还也可使用“@RequestParam”注解给参数设置别名,这样页面提交的参数名使用别名也能获取到;

	/**
	 * 【方式二】1.直接使用参数名
	 */
	@RequestMapping("/demo02")
	public String demo02(String name, Integer age) {
	    return "我叫" + name + ",今年" + age;
	}
    /**
     * 【方式二】1.直接使用别名
     */
    @RequestMapping("/demo02")
    // 可用@RequestParam给参数设置别名
    public String demo02(@RequestParam(name="Name")String name, Integer age) {
        return "我叫" + name + ",今年" + age;
    }

springboot获取请求参数,spring boot,java,servlet

2、对象数据

可以创建一个对象,将页面提交的数据封装成一个对象来接收;注意对象的属性名要和页面提交的参数名一致

/**
 * 人类
 */
public class Person {
    /**
     * 姓名
     */
    private String name;
    /**
     * 年龄
     */
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
    /**
     * 【方式二】2.对象数据
     */
    @RequestMapping("/demo03")
    public String demo03(Person person) {
        return "我叫" + person.getName() + ",今年" + person.getAge();
    }

springboot获取请求参数,spring boot,java,servlet

3、数组/集合数据

(1)数组

	/**
	 * 【方式二】3.数组数据
	 * @param hobby 数组名
	 */
	@RequestMapping("/param04")
	public String param04(String[] hobby) {
	    return Arrays.toString(hobby);
	}

springboot获取请求参数,spring boot,java,servlet
(2)单独接收集合数据需要加“@RequestParam”注解

    /**
     * 【方式二】3.集合数据
     * @param hobby 集合名
     */
    @RequestMapping("/demo04")
    // 单独接收集合数据需要加@RequestParam
    public String param04(@RequestParam List hobby) {
        return hobby.toString();
    }

springboot获取请求参数,spring boot,java,servlet

4、日期数据

    /**
     * 【方式二】4.日期数据
     * @param time 参数名
     */
    @RequestMapping("/demo05")
    // 接收日期数据需要加@DateTimeFormat,并设置时间模板
    public String demo05(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time) {
        System.out.println(time.getClass());
        return time.toString();
    }

springboot获取请求参数,spring boot,java,servletspringboot获取请求参数,spring boot,java,servlet

【方式三】json格式

创建两个javaBean,Address类是User类的一个属性

import com.fasterxml.jackson.annotation.JsonFormat;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 用户类
 */
public class User {
    private String username;
    private String password;
    private Integer age;
    private Double score;
    private Address address;
    // 时间格式属性要加@JsonFormat注解,并可设置时间模板
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime time;
    // 集合作为一个javaBean的属性时,不需要加@RequestParam注解
    private List hobby;

	/* set()、get()、toString()方法 */
	
}
/**
 * 联系地址
 */
public class Address {
    private String phone;

	/* set()、get()、toString()方法 */

}
    /**
     * 【方式三】json数据
     * @param user 用户类
     */
    @RequestMapping("/demo06")
    public String demo06(@RequestBody User user){
        // 打印user对象的内容
        System.out.println(user);
        return "success";
    }

springboot获取请求参数,spring boot,java,servlet
控制台打印user对象内容
springboot获取请求参数,spring boot,java,servlet

小结

需要注意以下几点:

(1)接收时间格式的数据,属性要加@JsonFormat注解;

(2)封装json对象数据,形参前面要加@RequestBody,表示将请求的json数据转换成对象接收;

(3)使用postman发送json数据,需要使用post提交方式;因为json数据要放在请求体中,get提交没有请求体;

(4)这种接收方式,需要跟前面的【键值对】接收对象数据的方式区分开。

  • 这种方式提交的json数据,接收时需要加@RequestBody;
  • 前面【键值对】接收对象数据的方式,提交的是键值对数据,接收时不需要加注解。

所以,如果发现页面提交的数据,程序接收不到,需要考虑是不是错误的把页面提交的json数据当成是一个对象来接收了;反之,如果传入的参数是键值对方式,用对象加@RequestBody注解来接收,也接收不到。

【方式四】路径参数

路径参数,是指把数据附加在访问的路径后面,数据以“/”间隔。在程序中接收的时候,需要在映射的路径后面给参数设置参数名,并在形参列表中使用@PathVariable()注解,将参数值传给形参。

springboot获取请求参数,spring boot,java,servlet

	/**
	 * 【方式四】路径参数
	 */
	// 需要在路径后面加{},{}内写别名,表明该位置的参数值传给形参中的哪个变量
	@RequestMapping("/demo07/{name}/{age}")
	public String demo07(@PathVariable("name") String name,
	                     @PathVariable("age") String age){
	    return "我叫" + name + ",今年" + age;
	}

springboot获取请求参数,spring boot,java,servlet

总结

涉及到的Spring注解说明:

@RequestMapping:设置页面访问程序的路径;

@RequestParam:用于给参数设置别名、单独使用集合时;

@DateTimeFormat:用于单独接收时间格式的数据,格式化数据;

@JsonFormat:接收json数据时,用于对象中需要格式化的数据;

@RequestBody:接收json数据时,用于将请求的json数据转换成对象接受;

@PathVariable:接收路径参数时,用于将参数值传分配给形参;文章来源地址https://www.toymoban.com/news/detail-602444.html

到了这里,关于SpringBoot接收请求参数的方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot接收参数的几种方式

    传参格式:?号传参,在地址栏上加参数 传参格式:请求体传参 form-data的请求是在body中,为key=value格式,同时可以传文件,Content-Type为multipart/form-data,后端可以用@RequestParam接收。 json传参也是在body当中,只不过json是一种数据格式,后端可以用@RequestBody接收。 地址栏传参,

    2024年02月10日
    浏览(59)
  • springboot接收前端参数的几种方式

    目录 第一种:直接在方法中指定参数 第二种:使用@requesrParam注解 第三种方法:基于@pathVariable  第四种方法:基于@ResquestBody 在开始之前,我们需要一下准备工作,创建数据库,springboot工程,添加依赖,配置文件,使用的技术有mybatisplus,springboot,maven,mysql。 首先,数据库

    2024年02月07日
    浏览(45)
  • Spring/SpringBoot 过滤器修改、获取http 请求request中的参数 和 response返回值,比如修改请求体和响应体的字符编码

    通过自定义filter,RequestWrapper,ResponseWrapper 处理请求和响应数据,比如修改请求体和响应体的字符编码 1.request 和 response 中的数据都是 存在流中的(缓存中)获取一次就没有了,需要重新写回去。所以需要两个包装类分别继承HttpServletRequestWrapper 和 HttpServletResponseWrapper 对 r

    2024年02月15日
    浏览(39)
  • 【SpringBoot系列】接收前端参数的几种方式

    前言 在现代Web开发中,前后端分离的架构已经成为主流。前端负责展示页面和用户交互,而后端则负责处理业务逻辑和数据存储。在这种架构下,前端需要将用户输入的数据发送给后端进行处理。而Spring Boot作为一种快速开发框架,提供了多种方式来接收前端数据。 本文将介

    2024年02月05日
    浏览(45)
  • SpringBoot中接收POST参数的几种方式

    今天在做一个vue前后端分离项目的过程中,踩了一个坑,记录一下 前端如下: 用户名字段: username 密码字段: password 提交后,发现后端怎么也收不到参数,总结如下: 常见的接收post参数,有三种 额外参数: 使用 required = false 标注参数是非必须的。 使用 defaultValue 给参数

    2024年02月15日
    浏览(59)
  • SpringBoot获取Request请求的三种方式

    Request对象包含了请求的各种信息,比如请求方法、请求URL、请求参数、请求内容等等,这些信息可以供服务器进行处理和响应。那么在SpringBoot中,怎么才能获取到Request对象? 本文将介绍三种方法,并提示例参考。 一、直接在Controller方法参数上注入HttpServletRequest 这是最常用

    2024年02月04日
    浏览(56)
  • Springboot通过请求头获取当前用户信息的一种方式

    一、实现原理 1、token的存储 当用户登录时,将token, userInfo存入redis缓存中,以便鉴权与获取用户信息。 2、发送请求 每次发送请求时将token放入请求头中,令key为“Authorization”或其他值。 3、获取请求头部 4、用户请求头部携带的token在redis中获得userInfo 二、导入依赖 1、redi

    2024年02月05日
    浏览(38)
  • Springboot 获取http数据、打印HTTP参数的4种方式 (便于生产排查问题)

    Java的话本地打断点可以调试获取rest入参(http header),但是在生产环境可能我们获取入参(Http header/parameter)可能就没有那么的轻松了。我们可能在header中放置了很多自定的参数用来鉴权或者其他用途。如果排查问题的时候需要这些参数,我们有很多种选择去获取这些参数。

    2023年04月23日
    浏览(46)
  • HTTP四大参数类型及请求参数的方式和如何接收

    请求头参数顾名思义,是存放在请求头中发送给服务器的参数,服务器通过解析请求头获取参数内容。通常会存放本次请求的基本设置,以帮助服务器理解并解析本次请求的body体。 参数形式如: 在我们的SpringBoot中,通过 @RequestHeader 注解可以获取到。 Spring Boot 读取http head

    2024年02月03日
    浏览(41)
  • springboot 日志记录接口的请求参数和响应结果的两种方式-拦截器和切面(具体代码)

    springboot 日志记录接口的请求参数和响应结果的两种方式-拦截器和切面(具体代码) 前言:在生产中如果出现问题,我们想要查看日志,某个时间段用户调用接口的请求参数和响应的返回结果,通过日志来推测下用户当时做了什么操作。日志记录接口的请求参数和响应结果有利

    2024年02月02日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包