乐趣区

关于spring:Spring认证指南了解如何使用-Spring-创建和提交-Web-表单

原题目:Spring 认证指南 | 理解如何应用 Spring 创立和提交 Web 表单。

Spring 认证指南:理解如何应用 Spring 创立和提交 Web 表单
本指南将疏导您实现应用 Spring 创立和提交 Web 表单的过程。

你将建造什么
在本指南中,您将构建一个 Web 表单,可通过以下 URL 拜访该表单:
http://localhost:8080/greeting

在浏览器中查看此页面将显示表单。id 您能够通过填充和 content 表单字段来提交问候语。提交表单时将显示后果页面。

你须要什么
约 15 分钟
最喜爱的文本编辑器或 IDE
JDK 11 或更高版本
Gradle 4+ 或 Maven 3.2+
您还能够将代码间接导入 IDE:
弹簧工具套件 (STS)
IntelliJ IDEA
如何实现本指南
像大多数 Spring 入门指南一样,您能够从头开始并实现每个步骤,也能够绕过您曾经相熟的根本设置步骤。无论哪种形式,您最终都会失去工作代码。

要从头开始,请持续从 Spring Initializr 开始。

要跳过基础知识,请执行以下操作:

下载并解压本指南的源代码库,或应用 Git 克隆它:git clone https://github.com/spring-gui…
光盘进入 gs-handling-form-submission/initial
跳转到创立 Web 控制器。
实现后,您能够对照中的代码查看后果
gs-handling-form-submission/complete。

从 Spring Initializr 开始
您能够应用这个事后初始化的我的项目并单击 Generate 下载 ZIP 文件。此我的项目配置为适宜本教程中的示例。

手动初始化我的项目:

导航到 https://start.spring.io。该服务提取应用程序所需的所有依赖项,并为您实现大部分设置。
抉择 Gradle 或 Maven 以及您要应用的语言。本指南假设您抉择了 Java。
单击 Dependencies 并抉择 Spring Web 和 Thymeleaf。
单击生成。
下载生成的 ZIP 文件,该文件是依据您的抉择配置的 Web 应用程序的存档。
如果您的 IDE 具备 Spring Initializr 集成,您能够从您的 IDE 实现此过程。

你也能够从 Github 上 fork 我的项目并在你的 IDE 或其余编辑器中关上它。

创立 Web 控制器
在 Spring 构建网站的办法中,HTTP 申请由控制器解决。这些组件很容易通过 @Controller 正文辨认。以下 GreetingController 清单中的 (from)通过返回 a 的名称(在本例中
src/main/java/com/example/handlingformsubmission/GreetingController.java 为)来解决 GET 申请。以下负责出现 HTML 内容:/greetingViewgreetingView

package com.example.handlingformsubmission;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class GreetingController {

@GetMapping(“/greeting”)
public String greetingForm(Model model) {

model.addAttribute("greeting", new Greeting());
return "greeting";

}

@PostMapping(“/greeting”)
public String greetingSubmit(@ModelAttribute Greeting greeting, Model model) {

model.addAttribute("greeting", greeting);
return "result";

}

}复制
这个控制器简洁明了,但有很多事件要做。本节的其余部分将逐渐对其进行剖析。

映射正文容许您将 HTTP 申请映射到特定的控制器办法。此控制器中的两个办法都映射到 /greeting. 您能够应用 @RequestMapping(默认状况下,它映射所有 HTTP 操作,例如 GET、POST 等)。然而,在这种状况下,该 greetingForm()办法具体映射到 GETusing @GetMapping,而 greetingSubmit()映射到 POSTwith @PostMapping。此映射使控制器可能辨别对 /greeting 端点的申请。

该 greetingForm()办法应用一个对象向视图模板 Model 公开一个新对象。以下代码中的对象 (from Greeting)蕴含与视图中的表单字段绝对应的字段,例如和,用于从表单中捕捉信息:
Greetingsrc/main/java/com/example/handlingformsubmission/Greeting.javaidcontentgreeting

package com.example.handlingformsubmission;

public class Greeting {

private long id;
private String content;

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

}复制
greeting 办法体的实现依赖于视图技术,通过将视图名称(在这种状况下,咱们应用 Thymeleaf 解析 greeting.html 模板并评估各种模板表达式以出现表单。以下清单(来自
src/main/resources/templates/greeting.html)显示了 greeting 模板:

<!DOCTYPE HTML>
<html xmlns:th=”https://www.thymeleaf.org”>
<head>

<title>Getting Started: Handling Form Submission</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>
<body>

<h1>Form</h1>
<form action="#" th:action="@{/greeting}" th:object="${greeting}" method="post">
    <p>Id: <input type="text" th:field="*{id}" /></p>
    <p>Message: <input type="text" th:field="*{content}" /></p>
    <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>

</body>
</html> 复制
表达式将 th:action=”@{/greeting}” 表单定向到 POST 到 /greeting 端点,而 th:object=”${greeting}” 表达式申明模型对象用于收集表单数据。用和示意的两个表单字段对应于对象中的字段。th:field=”{id}”th:field=”{content}”Greeting

这涵盖了用于出现表单的控制器、模型和视图。当初咱们能够查看提交表单的过程。如前所述,表单 /greeting 通过 POST 调用提交到端点。该 greetingSubmit()办法接管 Greeting 由表单填充的对象。Greeting 是 a,因而 @ModelAttribute 它绑定到传入的表单内容。result 另外,提交的数据能够通过名称援用(默认为办法参数的名称,greeting 在本例中为)来出现在视图中。在表达式 id 中出现。<p th:text=”‘id: ‘ + ${greeting.id}” /> 同样,在表达式 content 中出现。<p th:text=”‘content: ‘ + ${greeting.content}” /> 以下清单(来自
src/main/resources/templates/result.html)显示了后果模板:

<!DOCTYPE HTML>
<html xmlns:th=”https://www.thymeleaf.org”>
<head>

<title>Getting Started: Handling Form Submission</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>
<body>

<h1>Result</h1>
<p th:text="'id:' + ${greeting.id}" />
<p th:text="'content:' + ${greeting.content}" />
<a href="/greeting">Submit another message</a>

</body>
</html> 复制
为分明起见,此示例应用两个独自的视图模板来出现表单并显示提交的数据。然而,您能够将单个视图用于这两个目标。

使应用程序可执行
只管您能够将此服务打包为传统的 WAR 文件以部署到内部应用程序服务器,但更简略的办法是创立一个独立的应用程序。您将所有内容打包在一个可执行的 JAR 文件中,由一个很好的旧 Javamain()办法驱动。在此过程中,您应用 Spring 对嵌入 Tomcat servlet 容器作为 HTTP 运行时的反对,而不是部署到内部实例。以下清单(来自
src/main/java/com/example/handlingformsubmission/HandlingFormSubmissionApplication.java)显示了应用程序类:

package com.example.handlingformsubmission;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HandlingFormSubmissionApplication {

public static void main(String[] args) {

SpringApplication.run(HandlingFormSubmissionApplication.class, args);

}

}复制
@SpringBootApplication 是一个不便的正文,它增加了以下所有内容:

@Configuration: 将类标记为应用程序上下文的 bean 定义源。
@EnableAutoConfiguration:通知 Spring Boot 依据类门路设置、其余 bean 和各种属性设置开始增加 bean。例如,如果 spring-webmvc 位于类门路上,则此正文将应用程序标记为 Web 应用程序并激活要害行为,例如设置 DispatcherServlet.
@ComponentScan: 通知 Spring 在包中查找其余组件、配置和服务 com/example,让它找到控制器。
该 main()办法应用 Spring Boot 的 SpringApplication.run()办法来启动应用程序。您是否留神到没有一行 XML?也没有 web.xml 文件。这个 Web 应用程序是 100% 纯 Java,您不用解决任何管道或基础设施的配置。

构建一个可执行的 JAR
您能够应用 Gradle 或 Maven 从命令行运行应用程序。您还能够构建一个蕴含所有必要依赖项、类和资源的单个可执行 JAR 文件并运行它。构建可执行 jar 能够在整个开发生命周期、跨不同环境等中轻松地作为应用程序交付、版本化和部署服务。

如果您应用 Gradle,则能够应用./gradlew bootRun. 或者,您能够应用构建 JAR 文件./gradlew build,而后运行 ​JAR 文件,如下所示:

java -jar build/libs/gs-handling-form-submission-0.1.0.jar
如果您应用 Maven,则能够应用./mvnw spring-boot:run. 或者,您能够应用构建 JAR 文件,./mvnw clean package 而后运行该 JAR 文件,如下所示:

java -jar 指标 /gs-handling-form-submission-0.1.0.jar
此处形容的步骤创立了一个可运行的 JAR。您还能够构建经典的 WAR 文件。

显示记录输入。该服务应在几秒钟内启动并运行。

测试服务
当初网站正在运行,拜访
http://localhost:8080/greeting,您会看到以下表单:

Spring 认证指南:理解如何应用 Spring 创立和提交 Web 表单
提交 ID 和音讯以查看后果:

Spring 认证指南:理解如何应用 Spring 创立和提交 Web 表单
概括
祝贺!您刚刚应用 Spring 创立并提交了一个表单。

退出移动版