从零开始的Spring Boot 第一部分

要简洁的陈述这样一个观点:目标。

计划分为多次实施。

    1. 本次将大致了解什么是SpringBoot。

搭建环境并展示Hello World!。

进行参数和对象的传递,尝试其他功能。

文献引用

SystemLinkIT塾 SpringBoot入門講座
自分自身が初めてSpringBootを学習した際参考になりました。

Thymeleaf公式ドキュメント
公式ドキュメントだけあって非常に充実した内容です。

「SpringBoot是什么?」

这是一种使编写Java框架Spring变得更简单的方式。通过使用注解(类似于@ Override,以@开头的编写方式),不再需要复杂的XML配置文件编写,使它非常易于使用。

undefined

构建环境

我们将使用名为STS(Spring Tool Suite 4)的开发环境。它基于广为人知的Java开发环境Eclipse,并添加了一些功能来更方便地进行Spring开发。

1.在以下网站上下载STS并执行。(如果是zip文件,请解压缩)

SpringBoot_2.png
undefined

创建项目

undefined

关于依赖关系

我刚刚在Spring Boot DevTools、Thymeleaf和Spring Web中勾选了选择框,这将导致以下代码自动写入pom.xml文件。

<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-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>
名称説明ThymeleafJavaのWebページ用テンプレートエンジン。SpringではjspではなくThymeleafを推奨しています。jstlやEL式のように記述します。Spring WebSpringBootのWebアプリケーションに必要なライブラリ。Spring Boot DevToolsjavaファイルを更新すると自動でアプリケーションを再起動してくれる等の便利な機能が使えるようになります。

因此,在使用Spring Boot功能时,可以选择在项目创建时勾选依赖关系,也可以手动在pom.xml中进行记录。

简单说,我还需要补充一下pom.xml文件。

名称説明MavenJavaのプロジェクト管理ツール。pom.xmlを参照してアプリケーションのビルド・デプロイを簡単に行えるようにする。pom.xmlpomはProject Object Modelの略。プロジェクトに必要なライブラリ群やバージョン情報を記述する。

你好,世界!(控制器编写)

undefined

创建RestController类

undefined
package com.example.demo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoRestController {

    @RequestMapping(value="/rest",method=RequestMethod.GET)
    public String hello() {
        return "Hello World!";
    }
}

@RestController

本类别用于在不转变到视图(HTML文件等)的情况下,将方法返回的值直接输出到页面的控制器类。

undefined

@RequestMapping是一个注解。

在中国人的方式中,我们会这样转述:

这段话表示在方法中进行描述。它是用来将来自客户端的请求与方法进行映射的功能。我们可以指定参数,但是代表性的有以下两个。

value=”/URL”:接收来自指定URL的请求。
method=RequestMethod.GET(或POST):接收来自指定的发送方式的请求。

通过这个步骤,访问 http://localhost:8080/rest

URL 是 /rest,请求方法是 GET(如果在输入 URL 并显示页面时则自动使用 GET 方法。关于为什么,请参考 teratail 上的这个问题,解释得很清楚。)

调用与这个信息匹配的 hello 方法

将返回值 “Hello World!” 输出到页面上。
产生了这样的流程。


另外,@RequestMapping中还提供了带有请求方法的注释选项。由于可以简洁地编写,我们将在下次使用它。

使用 @GetMapping(“/URL”)

@RequestMapping(value=”/URL”,method=RequestMethod.GET) 与原文是一样的。

@提交映射(“/URL”)

@RequestMapping(value=”/URL”,method=RequestMethod.POST)的作用相同。


undefined

你好,世界!(控制器版本)

由于在 RestController 类中,通过方法的返回值来显示”Hello World”,所以这次让我们尝试在 HTML 文件中显示它。

创建HTML文件。

undefined
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello World!
</body>
</html>

创建一个Controller类。

接下来,在src/main/java/com/example/demo目录下创建DemoController类,并添加以下代码。(创建方法与创建RestController类相同)

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class DemoController {

    @RequestMapping(value="/",method=RequestMethod.GET)
    public ModelAndView hello() {
        ModelAndView mav=new ModelAndView();
        mav.setViewName("/index");
        return mav;
    }
}

@Controller
控制器

在类中进行描述。与@RestController不同,它是一个可以跳转到页面的控制器类。如果您希望在指定的类中定义一个不需要跳转到视图,而是在页面上显示返回值的方法,只需在方法上加上@ResponseBody即可。

@RequestMapping(value="/body",method=RequestMethod.GET)
@ResponseBody
public String body() {
    return "Hello World?";
}

模型视图

这个类具备Model(对象管理)和View(Web页面信息)的功能。虽然也有单独的这两个类,但通常使用的是ModelAndView。
主要方法如下:

メソッド使い方setViewName(“/ファイルパス”)表示させるHTMLファイルのパスを指定します。templatesフォルダまでのパスは記述不要です。addObject(“パラメータ名”,パラメータ)Webページに渡すパラメータを[名前,値]のセットで格納します。(次回使います

undefined

复习

SpringBootはSpringをより使いやすくしたもの

Spring Tool Suiteで簡単開発

@RequestMappingでURLとメソッドの紐づけ

@RestControllerでメソッドの戻り値をページに表示

@ControllerでHTMLファイルをページに表示

本次就到这里了。辛苦了。从下次开始将进入参数传递的阶段!

广告
将在 10 秒后关闭
bannerAds