JavaRush /Java Blog /Random-TW /第 8 部分:在 spring-boot 中編寫一個小應用程式

第 8 部分:在 spring-boot 中編寫一個小應用程式

在 Random-TW 群組發布
本資料是「企業發展概論」系列的最後一部分。上一篇文章: 第 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