1. 程式人生 > >使用Spring boot 建立web工程

使用Spring boot 建立web工程

原文

利用Springboot新建一個web工程

方法有很多種,一種比較方便的方法就是直接訪問Spring INITIALIZR,填好資訊,然後Alt + Enter鍵直接生成即可。然後使用IDE(對不起我比較low)import剛才生成的專案,我是使用maven方式匯入的。匯入完之後進到pom.xml裡面儲存一下,maven就會自動地下載一些需要的包(寫在dependency裡面)…

之前的都是廢話,是個人應該都會。建立專案還有一個重要的步驟就是定義專案結構,我參考照抄了Serving Web Content with Spring MVC ,然後採用MVC模式建立的工程.

Controller層

/src/main/java/com/ecnu/argiculture/userprofile/UserprofileApplication.java

package com.ecnu.argiculture.userprofile.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * Created by kuangjun on 9/6/17.
 */
@Controller public class TryController { @RequestMapping("/index") public String index(@RequestParam(value="name",required=false,defaultValue="ECNUer") String name, Model model){ model.addAttribute("name",name); return "I don't know what to return"; } }

controller層可以理解為連線前後端的一層,它利用addAttribute的方式將後端的一些資料傳送給前端. 其中,註解@Controller定義了該類是作為Controller. @RequestMapping確保當你在瀏覽器訪問/index的地址時,對應的是index()這個方法

這裡並沒有指定HTTP方法(GET PUT POST etc.),這樣預設就能使用所有的方法。當然,也可以使用@RequestMapping(method=GET)之類的來限定方法

@RequestParam將前段頁面請求的String型別引數nameindex()方法中的name引數繫結,這個name引數的值並不是必須填寫的(required = false),如果未填寫的話,那麼name的值就等於defaultValueECNUer 最後,通過model.addAttribute()name引數加入到Model物件中,以使得其能被頁面獲得

然後有一種叫做Thymeleaf的東西,可用於渲染XML/XHTML/HTML5,它可以與Spring MVC結合作為web應用的模板引擎. Thymeleaf的特點是它能夠直接在瀏覽器中開啟模板頁面,而不需要重新啟動web應用. 使用Thymeleaf的另一大好處就是可以進一步做到前後端分離,它通過屬性進行渲染,不會引入任何瀏覽器不能識別的標籤,因此不需要在應用伺服器中渲染也可以看到頁效果.

頁面

上面已經實現了一個Controller,接下來希望可以有一些”看得見,摸得著”的東西,於是可以簡單寫一個頁面

/src/main/resources/templates/index.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Home page</title>
    <meta http-equiv="Content-Type" content="text/html ; charset = UTF-8"/>
</head>
<body>
    <p th:text=" 'Hello', + ${name} + '!' "></p>
</body>
</html>

注意那個th: text

Spring-boot-devtools

通常來說,當我們修改程式碼後,想要檢視效果,必須要重啟應用,然後重新整理頁面,這個過程會耗費我們大量的時間(比如我們經常在這個時候看個視訊玩個遊戲啥的~~),於是Spring boot提供了一個叫做Spring-boot-devtools的模組,讓我們沒必要每次都重啟一下應用(於是少了很多娛樂時間,萬惡的資本主義),因為它會自動檢測資原始檔resourses的變動觸發重啟,這個重啟速度比較快. 吧? 預設情況下有些檔案的改變會導致重啟,有些不會,這個也可以自己配置.反正有這麼個東西可以實現熱部署.

要使用Spring-boot-devtools,只要在pom.xml裡面新增相關依賴即可

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

Application類

現在有了一個前段頁面和controller層,啟動應用就能看到頁面了.於是得有個開關吧,Application類就相當於這個應用的開關,執行這個類就能啟動程式. 當然Application類這個名字是我瞎編的,你叫它ABC類也可以..

/src/main/java/com/ecnu/argiculture/userprofile/UserprofileApplication.java

package com.ecnu.argiculture.userprofile;

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

@SpringBootApplication
public class UserprofileApplication {

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

@SpringBootApplication是一種便捷地新增以下註解的方法:

  • @Configuration 告訴你這是一個配置類,你可以用某些xml配置達到同樣的效果.
  • @EnableAutoConfiguration 告訴Springboot開始通過各類配置,載入對應的beans
  • @EnableWebMvc
  • @ComponentScan命令Spring掃描其他的元件、配置和服務,使其可以找到controllers

好了,接下來執行這個Application類,然後在瀏覽器輸入localhost:8080/index,你就可以看到如下頁面

如果你在瀏覽器中輸入localhost:8080/index?name=常山趙子龍,就會得到以下介面