JavaRush /Java 博客 /Random-ZH /第 8 部分:在 spring-boot 中编写一个小应用程序

第 8 部分:在 spring-boot 中编写一个小应用程序

已在 Random-ZH 群组中发布
本材料是“企业发展概论”系列的最后一部分。上一篇文章: 第 8 部分. 在 spring-boot 中编写一个小应用程序 - 1我们以 Spring-MVC 为例看一下最简单的 MVC 实现示例。为此,我们在 spring-boot 中编写一个小型 Hello World 应用程序。为了让您可以自己重复所有内容,我将为您提供分步说明。首先我们将编写一个小应用程序,然后我们将对其进行分析。

步骤1:在IntelliJ IDEA中创建一个spring-boot应用程序

使用文件 -> 新建 -> 项目... 创建一个新项目。在打开的窗口的左侧菜单中,选择 Spring Initializr,选择 Project SDK,并将 Initializr Service URL 选项保留为默认值。 第 8 部分. 在 spring-boot 中编写一个小应用程序 - 2单击下一步按钮。在下一个窗口中,我们需要选择项目参数。我们将有一个 Maven 项目。选择Type - Maven Project,填写Group和Artifact 第 8 部分. 在 spring-boot 中编写一个小应用程序 - 3,点击Next。在下一个窗口中,我们需要选择将使用的 Spring 框架组件。我们只需要两个:
  • Spring Web 是一个允许我们创建 Web 应用程序的组件。该组件包括 Spring MVC。
  • Thymeleaf - 所谓的模板引擎。允许我们将数据从 Java 传输到 HTML 页面的东西
第 8 部分. 在 spring-boot 中编写一个小应用程序 - 4第 8 部分. 在 spring-boot 中编写一个小应用程序 - 5在下一个窗口中,选择项目在文件系统中的名称和位置: 第 8 部分. 在 spring-boot 中编写一个小应用程序 - 6单击“完成”按钮。该项目已创建。我们有以下项目结构: 第 8 部分. 在 spring-boot 中编写一个小应用程序 - 7这里我们对 2 个文件感兴趣: pom.xml - 部署描述符。它允许您快速轻松地将库从不同框架导入到我们的项目中,以及我们在其中配置应用程序的程序集的东西。我们的应用程序是使用Maven构建的,pom.xml是这个构建系统的配置文件。Java 类 - MvcDemoApplication。这是我们应用程序的主类,我们将从中启动我们的 spring-boot 项目。首先,只需运行此类中的 main 方法。以下是此类的代码以及 pom.xml 文件:MvcDemoApplication:
@SpringBootApplication
public class MvcDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MvcDemoApplication.class, args);
    }

}
pom.xml:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.javarush</groupId>
    <artifactId>mvc_demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mvc_demo</name>
    <description>Spring MVC Demo</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

步骤 2. 创建网页

我们的应用程序将非常简单。我们将有一个主页 - index.html,其中有一个到欢迎页面的链接 - Greeting.html。在问候语页面上,我们将显示问候语。让我们实现通过 url 参数向greeting.html 页面发送问候语名称的功能。让我们创建应用程序的主页 - index.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Main page</title>
</head>
<body>
    <p>Get your greeting <a href="/greeting">here</a></p>
</body>
</html>
现在让我们创建greeting.html页面:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Getting Started: Serving Web Content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
这里,从一个非典型的html页面中,你可以看到一个标签: tag<p th:text="'Hello, ' + ${name} + '!'" /> 属性是Thymeleaf模板引擎的一个工具。多亏了它,标签的值将是文本“Hello,”+变量的值,我们将从 Java 代码中设置该值。 thppname

第三步:创建控制器

在 mvc_demo 包中,我们将创建一个控制器包,在其中我们将创建控制器 HelloWorldController:
@Controller
public class HelloWorldController {

   @RequestMapping(value = "/greeting")
   public String helloWorldController(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
       model.addAttribute("name", name);
       return "greeting";
   }

}
一方面,代码很少,但另一方面,却发生了很多事情。我们开始分析吧。@Controller注解表明该类是一个控制器。Spring 中的控制器处理对特定地址的 HTTP 请求。我们的类有一个 helloWorldController 方法,该方法用注释标记 - @RequestMapping(value = "/greeting")。该注释告诉我们该方法处理对 /greeting 地址的 HTTP GET 请求。换句话说,如果有人去/greeting,这个方法就会起作用。该方法返回字符串。根据Spring-MVC,控制器方法必须返回视图的名称。接下来,Spring 将查找同名的 html 文件,该文件将作为对 HTTP 请求的响应返回。正如您所看到的,我们的方法返回我们之前创建的网页的名称 -greeting。我们的方法有 2 个参数。我们来看一下: 参数 1:@RequestParam(name = "name", required = false, defaultValue = "World") 字符串名称。@RequestParam 注释指出 String name 参数是 url 参数。注解括号表示url中的该参数是可选的(required = false),如果不存在,则String name参数的值为World(defaultValue = "World"),如果存在,则该参数url中会被称为name(name = "name") 这里可能有很多不清楚的地方。让我们举个例子。下表显示了访问 /greeting 地址的不同选项的字符串名称参数的值(URL 中带参数和不带参数)
示例网址 字符串名称参数值
/问候语 世界
/问候?名字=阿米戈 朋友
/问候?名字=佐尔 佐尔
参数2:第二个参数为Model型号。该参数是一个模型。该模型内部由各种属性组成。每个属性都有一个名称和一个值。像键值对之类的东西。使用这个参数,我们可以将数据从Java代码传输到html页面。或者,用 MVC 术语来说,将数据从模型传输到视图。剩下的就是解析最后一行。我们将数据从 Java 传递到 html 或从模型传递到视图的方式。该方法的主体包含以下行: model.addAttribute("name", name); 这里我们创建一个名为 name 的新属性,并为其分配 name 参数的值。请记住,最近我们讨论了该标签: <p th:text="'Hello, ' + ${name} + '!'" /> 我们说过 p 标签的值将是文本“Hello,”+ name 变量的值,我们将从 Java 代码中设置该值。我们使用该行设置该值 model.addAttribute("name", name);

步骤 5. 启动

要启动,我们需要运行 MvcDemoApplication 类中的 main 方法: 第 8 部分. 在 spring-boot 中编写一个小应用程序 - 9在启动日志中,我们将看到我们的 Web 应用程序在端口 8080 上启动: 第 8 部分. 在 spring-boot 中编写一个小应用程序 - 10这意味着我们可以在浏览器中转到该页面:http:// localhost:8080第 8 部分:在 spring-boot 中编写一个小应用程序 - 11这里向我们显示了页面index.html。让我们点击greetin 的链接: 第 8 部分:在 spring-boot 中编写一个小应用程序 - 12在此转换期间,我们的控制器工作了。我们没有通过 URL 传递任何参数,因此,如注释中所述,name 属性的值采用默认值 World。现在让我们尝试通过 url 传递参数: 第 8 部分:在 spring-boot 中编写一个小应用程序 - 13一切都按预期进行。现在尝试跟踪 name 变量的路径:
  1. 用户传递参数name=Amigo的值->via url
  2. 控制器处理我们的操作,接受名称变量并设置模型属性,其中包含名称 name 和接受的值 ->
  3. 从模型中,该数据进入视图、greeting.html 页面并显示给用户
就这样!

今天我们向您介绍了一个相当大且有趣的MVC(模型-视图-控制器)主题。这是本系列的结尾,其目的是向您介绍在开始企业开发之前需要了解的内容。

在评论中留下您感兴趣的主题 - 我们会做的!

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION