详解Spring Boot接收参数的19种方式

2025-01-03 03:50

本文主要是介绍详解Spring Boot接收参数的19种方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧...

SpringBoot接受参数相关

@PathVariable注解

使用场景:解析占位变量

url:/monster/{id}/{name} —> /monster/king/100

与@RequestParam的区别是没有参数名

    /**
     * /monster/{id}/{name} 解读
     * 1. /monster/{id}/{name} 构成完整请求路径
     * 2. {id} {name} 就是占位变量
     * 3. @PathVariable("name"): 这里name 和{name} 命名保持一致,与注解内的name一致
     * 4. String name_ 这里自定义,老师故意这样写下
     * 5. @PathVariable Map<String, String> map 把所有传递的值传入map
     *    map = {name=king, id=100}
     * 6. 可以看下@PathVariable源码
     */
    @GetMapping("/monster/{name}/{id}")
    public String pathVariable(@PathVariable("name")String name_,
                               @PathVariable("id")Integer id, @PathVariable Map<String,String> map){
        System.out.println("name = " + name);
        System.out.println("id = " + id);
        System.out.println("map = " + map);
        return "success";
    }

@RequestHeader注解

使用场景:解析请求头信息

    /**
     *
     * 解读:
     *  1.@RequestHeader获取请求头信息
     *  2,@RequestHeader("Host") String host:获取请求头host的信息
     *     2.1 @RequestHeader("Host"),@RequestHeader中的value值大小写无差别
     *     2.2 String host:名字程序员自定义
     *  3.@RequestHeader Map<String,String> header:获取到http请求头的所有信息
     * @param host
     * @param header
     * @return
     */
    @RequestMapping("/requestHeader")
    public String requestHeader(@RequestHeader("Host") String host,
                                @RequestHeader Map<String,String> header){
        System.out.pri编程ntln("host = " + host);
        System.out.println("header = " + header);
        return "success";
    }

@RequestParam注解

使用场景:获取请求参数信息

    /**
     *
     * 内容:@RequestParam:获取请求参数
     * 解读:
     *  1.@RequestParam(value = "name",required = true) String username
     *    1.1 @RequestParam(value = "name":获取参数名为name的值
     *    1.2 required = true,不允许不传入该属性的值,即可以不填写该属性会报错
     *        required = false,即使没有传入该属性,也不会报错,值为null
     *  2.@RequestParam("fruit")List<String>fruits:当一个属性有多个值的时候用List数组接收
     *  3.@RequestParam Map<String,String> paras:可以用Map集合接收所有数据
     *    注意:这样写有一个小问题,当一个值为数组类型(有多个数据的时候),只能接收第一个数据
     *    原因:因为Map的泛型为<String,String>,获取的值是唯一的,不能接收数组或集合类型
     * @param username
     * @param fruits
     * @return
     */
    @RequestMapping("/requestParam")
    public String requestParam(@RequestParam(value = "name",required = true) String username,
                               @RequestParam("fruit")List<String>fruits,
                               @RequestParam Map<String,String> paras){
        System.out.println("username = " + username);
        System.out.println("fruits = " + fruits);
        System.out.println("paras = " + paras);
        return "success";
    }

SpringMVC自动封装参数对象

    /**
     * 将获取到的数据封装成对象
     *  解读:
     *   1.方法的形参用对应http://www.chinasem.cn的类型来指定即可,SpringMVC会自动进行封装
     *   2.如果是自动完成封装,则需要提交的数据-参数名与对象的字段名保持一致
     *   3.如果属性是对象,我们通过字段名.字段名的方式提交数据
     *     例如Master[pet],提交的数据名应该是 pet.id,pet.name等等【级联操作】
     *   4.如果提交数据的参数名和对象的字段名不匹配,则对象的属性值为null
     */
    @RequestMapping("/vote03")
    public String getPojoObject(Master master){
        System.out.println("master = " + master);
        return "success";
    }

@RequestBody

使用场景:前端传来的是json数据

    /**
     * 1.@RequestBody User user在形参制定了@RequestBody注解
     * 2.springmvc就会将交提交的json字符串数据转换成指定的Javabean
     * 3.注意:前后端的属性值应该匹配,否则会返回空
     * 4.如果没有@RequestBody修饰,该属性的前后端的值都为空。
     * @param user
     * @return
     */
    @ResponseBody
    @RequestMapping("json/user")
    public User UserHandler(@RequestBody User user) {
        //接收前台传入的json数据,并以json的格式传回浏览器
        System.out.println("user = " + user);
        return user;
    }

@CookieValue

使用场景:获取cookie数据

    /**
     * 内容:获取cookie数据
     * 解读:
     *  1.配置环境:我们在浏览器自己添加cookie,右键检查,在存储中添加(也可能在application)
     *  2.@CookieValue(value = "cookie_key",required = false) String cookie_value
     *    2.1 获取名字为cookie_key的Cookie的value值
     *    2.2 String cookie_value,如果注解修饰的类型为String,则获取的是Cookie对应的value值
     *  3.@CookieValue(value = "username",required = false)Cookie userCookie)
     *   3.1 获取名字为username的Cookie对象
     *   3.2 Cookie userCookie,如果注解修饰的类型为Cookie,则获取的是Cookie对象
     *  4.required = false:参数是否必须传入,同@RequestParam
     *  5.也可以通过HttpServletRequest获取cookie
     * @param cookie_value
     * @param userCookie
     * @return
     */
    @RequestMapping("/cookieValue")
    public String cookieValue(@CookieValue(value = "cookie_key",required = false) String cookie_value,
                              www.chinasem.cnhttp://www.chinasem.cn@CookieValue(value = "username",required = false)Cookie userCookie,
                              HttpServletRequest request){
        System.out.println("cookie_value = " + cookie_value);
        System.out.println("userCoohttp://www.chinasem.cnkie = " + userCookie);
        System.out.println("userCookie.getName() = " + userCookie.getName());
        System.out.println("userCookie.getValue() = " + userCookie.getValue());
        Cookie[] cookies = request.getCookies();
        for (Cookie cookie : cookies) {
            System.out.println("cookie = " + cookie);
        }
        return "success";
    }

级联操作

应用场景:对象的属性是另一个对象的实例

    /**
     * 将获取到的数据封装成对象
     *  解读:
     *   1.方法的形参用对应的类型来指定即可,SpringMVC会自动进行封装
     *   2.如果是自动完成封装,则需要提交的数据-参数名与对象的字段名保持一致
     *   3.如果属性是对象,我们通过字段名.字段名的方式提交数据
     *     例如Master[pet],提交的数据名应该是 pet.id,pet.name等等【级联操作】
     *   4.如果提交数据的参数名和对象的字段名不匹配,则对象的属性值为null
     */
    @RequestMapping("/vote03")
    public String getPojoObject(Master master){
        System.out.println("master = " + master);
        return "success";
    }

到此这篇关于Spring Boot接收参数的19种方式的文章就介绍到这了,更多相关Spring Boot接收参数内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于详解Spring Boot接收参数的19种方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:http://www.cppcns.com/ruanjian/java/695812.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1152912

相关文章

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

Java如何用乘号来重复字符串的功能

《Java如何用乘号来重复字符串的功能》:本文主要介绍Java使用乘号来重复字符串的功能,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java乘号来重复字符串的功能1、利用循环2、使用StringBuilder3、采用 Java 11 引入的String.rep

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

SQL Server中的PIVOT与UNPIVOT用法具体示例详解

《SQLServer中的PIVOT与UNPIVOT用法具体示例详解》这篇文章主要给大家介绍了关于SQLServer中的PIVOT与UNPIVOT用法的具体示例,SQLServer中PIVOT和U... 目录引言一、PIVOT:将行转换为列核心作用语法结构实战示例二、UNPIVOT:将列编程转换为行核心作用语

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas

SpringBoot中HTTP连接池的配置与优化

《SpringBoot中HTTP连接池的配置与优化》这篇文章主要为大家详细介绍了SpringBoot中HTTP连接池的配置与优化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、HTTP连接池的核心价值二、Spring Boot集成方案方案1:Apache HttpCl

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

CSS引入方式和选择符的讲解和运用小结

《CSS引入方式和选择符的讲解和运用小结》CSS即层叠样式表,是一种用于描述网页文档(如HTML或XML)外观和格式的样式表语言,它主要用于将网页内容的呈现(外观)和结构(内容)分离,从而实现... 目录一、前言二、css 是什么三、CSS 引入方式1、行内样式2、内部样式表3、链入外部样式表四、CSS 选

Java进行日期解析与格式化的实现代码

《Java进行日期解析与格式化的实现代码》使用Java搭配ApacheCommonsLang3和Natty库,可以实现灵活高效的日期解析与格式化,本文将通过相关示例为大家讲讲具体的实践操作,需要的可以... 目录一、背景二、依赖介绍1. Apache Commons Lang32. Natty三、核心实现代