当前位置:首页 » 《关于电脑》 » 正文

【SpringBoot系列】接收前端参数的几种方式

6 人参与  2024年04月23日 14:03  分类 : 《关于电脑》  评论

点击全文阅读


579a429daf314744b995f37351b46548

前言

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

本文将介绍Spring Boot接收前端数据的几种常用方式。


接收方式

image-20231012113430451

@RequestParam

这是最基本的一种,通过请求参数名映射到方法的参数上,如:

import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class MyController {    @GetMapping("/greeting")    public String greeting(@RequestParam(value = "name", defaultValue = "World") String name) {        return String.format("Hello %s!", name);    }}

在这个例子中,有一个名为"greeting"的HTTP GET请求映射到"/greeting"。这个映射方法接受一个名为"name"的请求参数。如果请求中没有提供"name"参数,那么将使用默认值"World"。

例如,如果访问"http://localhost:8080/greeting?name=John",将得到"Hello John!“。如果只访问"http://localhost:8080/greeting”(没有提供"name"参数),将得到"Hello World!"。

@RequestHeader

在Spring Boot中,我们可以通过@RequestHeader注解来传递HTTP请求头中的参数。这个注解可以应用在控制器的方法参数上,Spring会自动将请求头中的对应参数值绑定到方法参数上。

import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestHeader;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class MyController {    @GetMapping("/test")    public String test(@RequestHeader("User-Agent") String userAgent) {        return "User-Agent: " + userAgent;    }}

在这个示例中,我们定义了一个名为test的GET请求处理方法,该方法接收一个名为userAgent的参数。通过在方法参数前添加@RequestHeader("User-Agent")注解,我们告诉Spring Boot从HTTP请求头中获取名为"User-Agent"的参数值,并将其绑定到userAgent参数上。

当我们发送一个包含"User-Agent"请求头的GET请求到"/test"路径时,Spring Boot会将请求头中的"User-Agent"值传递给test方法,然后返回"User-Agent: "加上该值的字符串。

@CookieValue

在Spring Boot中,我们可以使用@CookieValue注解来获取cookie的值。这个注解可以用于方法参数上,表示从cookie中获取值。

以下是一个简单的示例:

import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.CookieValue;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class CookieController {    @GetMapping("/getCookie")    public String getCookie(@CookieValue("cookieName") String cookieValue) {        return "The value of the cookie is: " + cookieValue;    }}    

在这个示例中,我们创建了一个名为CookieController的控制器。在这个控制器中,我们有一个名为getCookie的方法,该方法接收一个名为cookieValue的参数。这个参数的值是从名为"cookieName"的cookie中获取的。

当你在浏览器中设置一个名为"cookieName"的cookie,并访问/getCookie路径时,你将看到返回的消息是"The value of the cookie is: [cookie的值]"。

注意:为了使@CookieValue注解能够工作,你需要在你的Spring Boot应用中启用了Spring的Web支持。你可以在你的主配置类上添加@EnableWebMvc或@EnableWebFlux注解来启用它。

@PathVariable

在Spring Boot中,我们可以使用@PathVariable注解来从URL路径中获取参数。这个注解通常用于RESTful API的控制器方法中。

以下是一个简单的示例:

import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class MyController {    @GetMapping("/greeting/{name}")    public String greeting(@PathVariable("name") String name) {        return "Hello, " + name;    }}    

在这个例子中,我们定义了一个名为"greeting"的GET请求映射到"/greeting/{name}"的URL。@PathVariable(“name”)注解告诉Spring Boot从URL路径中获取名为"name"的参数,并将其值传递给方法greeting。

例如,如果访问"http://localhost:8080/greeting/John",那么这个方法将会返回"Hello, John"。

@RequestBody

在Spring Boot中,通过@RequestBody传参是一种常见的方式,它主要用于处理POST请求中的JSON数据。这种方式可以将请求体中的JSON数据绑定到方法参数上。

以下是一个简单的示例:

首先,我们需要创建一个POJO(Plain Old Java Object)来表示我们的数据模型。例如,我们可以创建一个User类:

public class User {    private String name;    private int age;    // getters and setters}    

然后,我们可以在Controller中使用@RequestBody注解来接收请求体中的JSON数据:

import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class UserController {    @PostMapping("/user")    public User createUser(@RequestBody User user) {        // 在这里,user对象就是请求体中的JSON数据        // 我们可以根据需要处理这个对象        return user;    }}    

在这个例子中,当我们发送一个POST请求到/user路径,并在请求体中包含一个JSON对象时,Spring Boot会自动将这个JSON对象转换为一个User对象,并传递给createUser方法。

HttpServletRequest

在Spring Boot中,可以通过HttpServletRequest对象来获取请求参数。HttpServletRequest对象提供了一些方法,如getParameter(),getHeader()等,可以用来获取请求参数。

以下是一个简单的示例:

import javax.servlet.http.HttpServletRequest;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class MyController {    @GetMapping("/hello")    public String hello(HttpServletRequest request) {        String name = request.getParameter("name");        return "Hello, " + name;    }}    

在这个示例中,我们创建了一个名为MyController的控制器类,并定义了一个名为hello的方法。这个方法接收一个HttpServletRequest对象作为参数。

当我们访问/hello路径时,Spring Boot会自动将当前的HttpServletRequest对象传递给hello方法。然后我们可以使用getParameter(“name”)方法来获取请求参数"name"的值。

例如,如果访问/hello?name=John,那么返回的结果将是"Hello, John"。

以上就是Spring Boot中常用的几种接收前端参数的方式,可以根据需要选择使用。


写在最后

感谢您的支持和鼓励! ??

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/99094.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1