当前位置:

首页 > 编程开发 > SpringBoot接收参数使用的注解是什么

SpringBoot接收参数使用的注解是什么

1.基本介绍SpringBoot接收客户端提交数据/参数会使用到相关注解详解@PathVariable、@RequestHeader、@ModelAttribute、@RequestParam、@MatrixVariable、@CookieValue、@RequestBody2.接收参数相关注解应用实例1.需求:演示各种方式提交数据/参数给服务器,服务器如何使用注解接收2.应用实例演示需求:演示各种方式提交数据/参数给服务器,服务器如何使用注解接收创建src\main\resources\static\i

本文目录

    1.基本介绍

    SpringBoot 接收客户端提交数据/参数会使用到相关注解

    详 解 @PathVariable 、 @RequestHeader 、 @ModelAttribute 、 @RequestParam 、 @MatrixVariable、@CookieValue、@RequestBody

    2.接收参数相关注解应用实例

    1.需求: 演示各种方式提交数据/参数给服务器,服务器如何使用注解接收

    2.应用实例演示

    需求: 演示各种方式提交数据/参数给服务器,服务器如何使用注解接收

    SpringBoot接收参数使用的注解是什么

    创建src\main\resources\static\index.html

    
    
    
        
        index
    
    
    

    hello, llp

    基本注解:
    @PathVariable-路径变量 monster/200/jack

    @PathVariable 使用

    演示@PathVariable 使用,创建src\main\java\com\llp\springboot\controller\ParameterController.java, 完成测试

    @RestController
    public class ParameterController {
        /**
         * /monster/{id}/{name} 解读
         * 1. /monster/{id}/{name} 构成完整请求路径
         * 2. {id} {name} 就是占位变量
         * 3. @PathVariable("name"): 这里name 和{name} 命名保持一致
         * 4. String name_ 这里自定义,和{name}命名无关
         * 5. @PathVariable Map map 把所有传递的值传入map
         * 6. 可以看下@PathVariable源码
         */
        @GetMapping("/monster/{id}/{name}")
        public String pathVariable(@PathVariable("id") Integer id,
                                   @PathVariable("name") String name,
                                   @PathVariable Map map) {
            System.out.println("id-" + id);
            System.out.println("name-" + name);
            System.out.println("map-" + map);
            return "success";
        }
    }

    SpringBoot接收参数使用的注解是什么

    @RequestHeader 使用

    演示@RequestHeader 使用,修改 ParameterController.java , 完成测试

    √ 修改 index.html

    @RequestHeader-获取Http请求头 

    √ 修改 ParameterController.java

    /**
     * @RequestHeader("Host") 获取http请求头的 host信息
     * @RequestHeader Map header: 获取到http请求的所有信息
     */
    @GetMapping("/requestHeader")
    public String requestHeader(@RequestHeader("host") String host,
                                @RequestHeader Map header,
                                @RequestHeader("accept") String accept) {
        System.out.println("host-" + host);
        System.out.println("header-" + header);
        System.out.println("accept-" + accept);
        return "success";
    }

    SpringBoot接收参数使用的注解是什么

    @RequestParam 使用

    演示@RequestParam 使用,修改 ParameterController.java , 完成测试

    √ 修改 index.html

    @RequestParam-获取请求参数

    √ 修改 ParameterController.java

    /**
     * @param username wukong
     * @param fruits  List fruits 接收集合 [apple, pear]
     * @param paras Map paras 如果我们希望将所有的请求参数的值都获取到,
     *              可以通过@RequestParam Map paras这种方式
     *             一次性的接收所有的请求参数 {name=wukong, fruit=apple, id=300, address=北京}
     *             如果接收的某个参数中有多个之值比如这里fruits是一个集合,从map中只能拿到一个
     *              可以理解map底层会将相同的key的value值进行覆盖
     * @return
     * @RequestParam
     */
    @GetMapping("/hi")
    public String hi(@RequestParam(value = "name") String username,
                     @RequestParam("fruit") List fruits,
                     @RequestParam Map paras) {
        //username-wukong
        System.out.println("username-" + username);
        //fruit-[apple, pear]
        System.out.println("fruit-" + fruits);
        //paras-{name=wukong, fruit=apple, id=300, address=北京}
        System.out.println("paras-" + paras);
        return "success";
    }

    @CookieValue 使用

    演示@CookieValue 使用,修改 ParameterController.java , 完成测试

    √ 修改 index.html

    @CookieValue-获取cookie值

    √ 修改 ParameterController.java

    /**
     * 因为我的浏览器目前没有cookie,我们可以自己设置cookie[技巧还是非常有用]
     * 如果要测试,可以先写一个方法,在浏览器创建对应的cookie
     * 说明 1. value = "cookie_key" 表示接收名字为 cookie_key的cookie
     * 2. 如果浏览器携带来对应的cookie , 那么 后面的参数是String ,则接收到的是对应对value
     * 3. 后面的参数是Cookie ,则接收到的是封装好的对应的cookie
     */
    @GetMapping("/cookie")
    public String cookie(@CookieValue(value = "cookie_key", required = false) String cookie_value,
                         HttpServletRequest request,
                         @CookieValue(value = "username", required = false) Cookie cookie) {
        System.out.println("cookie_value-" + cookie_value);
        if (cookie != null) {
            System.out.println("username-" + cookie.getName() + "-" + cookie.getValue());
        }
        System.out.println("-------------------------");
        Cookie[] cookies = request.getCookies();
        for (Cookie cookie1 : cookies) {
            System.out.println(cookie1.getName() + "=>" + cookie1.getValue());
        }
        return "success";
    }

    SpringBoot接收参数使用的注解是什么

    @RequestBody 使用

    演示@RequestBody 使用,修改 ParameterController.java , 完成测试

    √ 修改 index.html


    测试@RequestBody获取数据: 获取POST请求体

        姓名:  
        年龄:  
        

    √ 修改 ParameterController.java

    /**
     * @RequestBody 是整体取出Post请求内容
     */
    @PostMapping("/save")
    public String postMethod(@RequestBody String content) {
        System.out.println("content-" + content);
        return "success";
    }

    @RequestAttribute 和 @SessionAttribute使用

    演示@RequestAttribute @SessionAttribute使用,创建 com/hspedu/web/controller/RequestController.java , 完成测试

    √ 修改 index.html

    @RequestAttribute、@SessionAttribute-获取request域、session属性-

    √ 创建 RequestController.java

        @GetMapping("/login")
        public String login(HttpServletRequest request) {
            request.setAttribute("user", "llp");
            //向session中添加数据
            request.getSession().setAttribute("website", "http://www.baidu.com");
            //这里需要使用forward关键字,如果不适用则会走视图解析器,这
            //里视图解析器前缀配置的是/  后缀配置的.html  ---> /ok.html
            //而请求转发在服务器端执行,/被解析成 ip:port/工程路径
            //进而最终得到的完整路径是 ip:port/工程路径/ok.html
            //但是我们这里希望访问的是 ip:port/工程路径/ok这个请求路径
            //因此这里手动的设置forward:/ok ,底层会根据我们设置的路径进行请求转发
            return "forward:/ok";
        }
        @GetMapping("ok")
        //返回字符串,不走视图解析器
        @ResponseBody
        public String ok(@RequestAttribute(value = "user", required = false) String username,
                         @SessionAttribute(value = "website",required = false) String website, HttpServletRequest request) {
            System.out.println("username= " + username);
            System.out.println("通过servlet api 获取 username-" +  request.getAttribute("user"));
            System.out.println("website = " + website);
            System.out.println("通过servlet api 获取 website-"+request.getSession().getAttribute("website"));
            return "success";
        }
    }

    SpringBoot接收参数使用的注解是什么

    3.复杂参数

    1.基本介绍

    • 在开发中,SpringBoot 在响应客户端请求时,也支持复杂参数

    • Map、Model、Errors/BindingResult、RedirectAttributes、ServletResponse、SessionStatus、 UriComponentsBuilder、ServletUriComponentsBuilder、HttpSession

    • Map、Model 数据会被放在 request 域, 底层 request.setAttribute()

    • RedirectAttributes 重定向携带数据

    2.复杂参数应用实例

    ####1.说明 : 演示复杂参数的使用,重点: Map、Model、ServletResponse

    2.代码实现

    //响应一个注册请求
    @GetMapping("/register")
    public String register(Map map,
                           Model model,
                           HttpServletResponse response) {
        //如果一个注册请求,会将注册数据封装到map或者model
        //map中的数据和model的数据,会被放入到request域中
        map.put("user","llp");
        map.put("job","码农");
        model.addAttribute("sal", 2500);
        //一会我们再测试response使用
        //我们演示创建cookie,并通过response 添加到浏览器/客户端
        Cookie cookie = new Cookie("email", "123@sohu.com");
        response.addCookie(cookie);
        //请求转发
        return "forward:/registerOk";
    }
    @ResponseBody
    @GetMapping("/registerOk")
    public String registerOk(HttpServletRequest request) {
        System.out.println("user-" + request.getAttribute("user"));
        System.out.println("job-" + request.getAttribute("job"));
        System.out.println("sal-" + request.getAttribute("sal"));
        return "success";
    }

    SpringBoot接收参数使用的注解是什么

    4.自定义对象参数-自动封装

    1.基本介绍

    • 在开发中,SpringBoot 在响应客户端请求时,也支持自定义对象参数

    • 完成自动类型转换与格式化

    • 支持级联封装

    2.自定义对象参数-应用实例

    1.需求说明 : 演示自定义对象参数使用,完成自动封装,类型转换

    SpringBoot接收参数使用的注解是什么

    2.代码实现

    1.创建src\main\resources\static\save.html

    
    
    
        
        添加妖怪
    

    添加妖怪-坐骑[测试封装 POJO;]

        编号: 
        姓名: 
        年龄:  
        婚否:  
        生日:  
             坐骑:
        价格:     

    2.修改src\main\java\com\llp\springboot\controller\ParameterController.java

    @PostMapping("/savemonster")
    public String saveMonster(Monster monster) {
        System.out.println("monster= " + monster);
        return "success";
    }

    SpringBoot接收参数使用的注解是什么

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    springBoot项目常用目录有哪些
    springBoot项目常用目录有哪些

    springBoot项目常用目录springBoot项目的目录结构及名规范介绍基于SpringBoot开发时的目录结构及命名规范,通过介绍能够为你解决,在实际项目中如何规划目录结构?如何命名目录更规范?各个目录分别代表什么含义?等三个问题。目录说明servicex//项目名|-admin-ui//管理服务前端代码(一般将UI和SERVICE放到一个工程中,便于管理)|-servicex-auth//模块1|-servicex-common//模块2|-servicex-gateway//模块3|-serv

    解析SpringBoot和SpringMVC之间的异同
    解析SpringBoot和SpringMVC之间的异同

    解析SpringBoot和SpringMVC之间的异同SpringBoot和SpringMVC是Java领域中非常重要的开发框架。虽然它们都属于Spring框架的一部分,但是在使用和功能上有一些明显的区别。本文将对SpringBoot和SpringMVC进行比较,解析它们之间的异同。首先,让我们来了解一下SpringBoot。SpringBo

    探索SpringCloud和SpringBoot在微服务领域的不同应用方式
    探索SpringCloud和SpringBoot在微服务领域的不同应用方式

    近年来,随着云计算和分布式架构的兴起,微服务架构的应用越来越广泛。而SpringCloud和SpringBoot作为Java开发中的两个重要框架,对于微服务的实现起到了重要的作用。然而,很多人对于它们在微服务领域的不同应用方式还存在一定的疑惑。本文将从不同的角度探索SpringCloud和SpringBoot在微服务中的应用方式。首先,我们来了解一下Spri

    SpringBoot和SpringMVC有何区别?
    SpringBoot和SpringMVC有何区别?

    SpringBoot与SpringMVC的不同之处在哪里?SpringBoot和SpringMVC是两个非常流行的Java开发框架,用于构建Web应用程序。尽管它们经常分别被使用,但它们之间的不同之处也是很明显的。首先,SpringBoot可以被看作是一个Spring框架的扩展或者增强版。它旨在简化Spring应用程序的初始化和配置过程,以帮助开发人

    比较SpringBoot和SpringMVC的异同
    比较SpringBoot和SpringMVC的异同

    SpringBoot和SpringMVC都是Java开发中常用的框架,但它们之间有一些明显的差异。本文将探究这两个框架的特点和用途,并对它们的差异进行比较。首先,我们来了解一下SpringBoot。SpringBoot是由Pivotal团队开发的,它旨在简化基于Spring框架的应用程序的创建和部署。它提供了一种快速、轻量级的方式来构建独立的、可执行

    SpringBoot与SpringMVC的不同点是什么?
    SpringBoot与SpringMVC的不同点是什么?

    SpringBoot和SpringMVC是Java开发中常用的两个框架,它们都是由Spring框架所提供的,但在功能和使用方式上有着一些区别。本文将分别介绍SpringBoot和SpringMVC的特点和区别。一、SpringBoot的特点:简化配置:SpringBoot通过约定优于配置的原则,大大简化了项目的配置过程。它可以自动配置项目所需要的参数,开发人

    比较和选择指南:SpringCloud与SpringBoot的功能比较
    比较和选择指南:SpringCloud与SpringBoot的功能比较

    SpringCloud和SpringBoot是目前Java领域中最热门的开源框架,它们分别提供了一套完善的微服务架构和快速构建应用程序的解决方案。本文将对它们的功能进行比较,并给出选择指南,以帮助读者了解它们的优势和适用场景。SpringBoot是一个用于开发Java应用程序的框架,它提供了一个简化的开发流程,集成了大量常用的功能和组件,减少了开发者的工作量

    SpringCloud与SpringBoot:分析它们之间的相似与不同
    SpringCloud与SpringBoot:分析它们之间的相似与不同

    深入剖析SpringCloud和SpringBoot的异同引言:在构建企业级应用程序时,Spring框架已经成为开发者们的首选。它提供了一种简单而强大的方式来构建独立于平台的应用程序。Spring框架由两个核心模块组成:SpringBoot和SpringCloud。虽然它们都可以帮助开发者快速搭建应用程序,但它们的目标和用途存在一些差异。本文将深入剖析Spr

    从架构角度看SpringCloud与SpringBoot的差异
    从架构角度看SpringCloud与SpringBoot的差异

    从架构角度看SpringCloud与SpringBoot的差异引言:在当今的互联网时代,构建分布式系统已经成为了一种必要的需求。而SpringBoot和SpringCloud正是为了满足这个需求而诞生的。尽管它们都是由Spring框架所提供的解决方案,但从架构角度来看,它们存在着一些重要的差异。本文将从架构的角度出发,对SpringBoot和SpringCl

    Java API 开发中使用 SpringBoot 的利弊分析
    Java API 开发中使用 SpringBoot 的利弊分析

    JavaAPI开发中使用SpringBoot的利弊分析随着互联网的快速发展和技术的不断更新迭代,Java技术在开发中的广泛应用引起了人们的重视。而SpringBoot作为一种微服务架构的解决方案,已经逐渐成为Java开发中的热门选择。那么,在JavaAPI开发中使用SpringBoot,到底有哪些利弊呢?下面来分析一下。利:简化开发

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。