我们首先创建 “SpringBootRequestDemo” 工程。
然后我们修改编码格式以及Maven仓库地址,我们省略这个过程了。 接着我们再添加spring-boot-starter-parent,spring-boot-starter-web,spring-boot-starter-thymeleaf依赖库
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>SpringBootRequestDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.13</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.18</version>
</plugin>
</plugins>
</build>
</project>
我们继续创建“Application”的入口类
package com.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
这个文件基本上也是固定不变的。
接下来,我们创建 “resources\static\index.html” 入口文件
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>index</title>
</head>
<body>
<p><a href="/test">test</a></p>
</body>
</html>
我们做了一个 “/test” 的请求,然后我们创建 TestController 来处理这个请求
package com.demo;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
@RequestMapping("/test")
public String hello(Map<String, Object> map) {
map.put("message", "hello test!");
return "test";
}
}
我们向“test.html” 输出一个 “message” 的数据,继续创建 “resources\templates\test.html” 文件。
<!doctype html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>test</title>
</head>
<body>
<h1 th:text="${message}"></h1>
</body>
</html>
我们使用上一章节的 “Thymeleaf” 模版输出列表数据。
我们运行整个项目。
Spring Boot获取前端页面参数的几种方式总结
第一,指定前端url请求参数名称与方法参数名一致, 适用get方式,而不适用post方式。
例如请求:http://localhost:8080/test01?name=zhang&age=30
@RequestMapping("/test01")
public String test01(String name, String age, Map<String, Object> map){
map.put("message", name + "-" + age);
return "test";
}
这种方式,就是将请求参数作为方法参数,SpringBoot会自动匹配完成数据的填入,我们只需要直接使用方法参数,就可以使用请求参数了。但是,这种方式仅适用于Get请求,运行效果如下
第二,通过HttpServletRequest来获取前端页面参数,适用get和post方式。
例如请求:http://localhost:8080/test02?name=zhang&age=30
@RequestMapping("/test02")
public String test02(HttpServletRequest request, Map<String, Object> map){
String name = request.getParameter("name");
String age = request.getParameter("age");
map.put("message", name + "-" + age);
return "test";
}
我们可以看出,SpringBoot集成了SpringMVC注解的优点,方法参数可以自定义,这个对我们帮助很大。使用 HttpServletRequest 对象可以获取到用户提交的任何数据,都在期API方法里面。
第三,通过建立一个请求数据对象来获取参数,适用get和 post方式。
例如请求:http://localhost:8080/test03?name=zhang&age=30
package com.demo;
public class TestRequest {
public String name;
public int age;
// 省略get/set方法
}
大家注意到了,请求数据对象里面的属性变量就是请求参数,两者保持一致。
@RequestMapping("/test03")
public String test03(TestRequest request, Map<String, Object> map){
String name = request.getName();
int age = request.getAge();
map.put("message", name + "-" + age);
return "test";
}
这种方式与第一种差不多,但是支持post请求,不过需要我们手动定义请求数据对象。
对于请求参数比较多的情况下,推荐这种方式(尤其是post请求方式)。
第四,用注解@RequestParam获取请求参数,仅适用get方式。
例如请求:http://localhost:8080/test04?name=zhang&age=30
@RequestMapping("/test04")
public String test04(@RequestParam("name") String paramName,
@RequestParam("age") String paramAge,
Map<String, Object> map){
map.put("message", paramName + "-" + paramAge);
return "test";
}
这种方式还不如第一种简单,但是它可以解决请求参数名和方法参数名不一致的问题。
第五,通过PathVariable注解来获取请求路径的参数,仅适用get方式。
例如请求:http://localhost:8080/test06/zhang/30
请注意,我们的请求URL不一样了,这个称之为PathInfo模式的URL。
@RequestMapping("/test05/{name}/{age}")
public String test06(@PathVariable("name") String paramName,
@PathVariable("age") String paramAge,
Map<String, Object> map){
map.put("message", paramName + "-" + paramAge);
return "test";
}
这种方式需要保持url的名称和注解里面的名称保持一致即可。
第六,用注解@RequestBody获取请求参数,仅适用post方式。
@RequestBody主要用来接收前端传递给后端的json字符串中的数据,并且一个请求只有一个RequestBody。后期我们会介绍这种方式。
标签:03,String,age,boot,name,test,请求,SpringBoot From: https://blog.csdn.net/richieandndsc/article/details/142912851