1. 程式人生 > >SpringBoot第一個小專案,含IDEA教程,以及靜態頁面無法訪問的處理

SpringBoot第一個小專案,含IDEA教程,以及靜態頁面無法訪問的處理

以前一直用的eclipse  現在試用一下idea,畢竟這是一個最近比較火的開發工具。

IDEA的安裝與配置就不說了。我已經共享了非常詳細的文件,當然了這裡要感謝某個培訓機構共享出來的資源,這裡我就不說了。

文件連結:IntelliJ IDEA的安裝、配置與使用(全套教程)

如果沒有用過IDEA的話,強烈建議先看完上面的idea安裝配置教程,如果沒有積分可以留言或者@我一下留個郵箱什麼的都可以,我看到給發一個郵件。

下面我們進入正題,新建第一個spring boot小專案

首先新建一個project,當然你也可以新建一個module。這個在我分享的教程裡已經說的很詳細了。

第二步

第三步

第四步,這一步很重要,要選擇一個web模板!!!

第五步,這裡起個名字,我直接用預設的了,點選完成(finish)

 

然後目錄結構大致是這樣的。

 

然後新建一個HelloController,程式碼及目錄結構如下:

程式碼

package cn.btmianhua.springboot;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author BABY
 * @create 2018/8/31 - 11:12
 */
@Controller
public class HelloController {

    @RequestMapping(value = "/hello")
    @ResponseBody
    public String hello() {
        return "hello spring boot!";
    }

    @RequestMapping(value = "/tes")
    public String testtest() {
        System.out.println("tes");
        return "testtest";
    }

}

目錄結構:

 

之後在resources下的templates中新建一個testtessst.html(名字我隨便起的)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>測試一下</title>
</head>
<body>
    <h1>測試一下</h1>
</body>
</html>

之後目錄結構如下(那個btadmin不用管他):

 

這個時候其實已經可以運行了,雙擊開啟SpringbootApplication,然後點選綠色的小三角專案就可以跑起來了。

 

出現下圖的這個started就證明我們專案跑起來了,由於springboot中集成了,所以我們並不需要額外的配置tomcat。

瀏覽器訪問http://localhost:8080/hello就會出現如下的資訊。

但是當我們訪問http://localhost:8080/tes的時候卻出現瞭如下的404異常

 

檢查控制檯也並沒有錯誤

經過我一陣好查,其實這個spring boot的一個坑!!搜尋資料如下:

以下內容來源於網路


訪問不了resources/templates下的頁面,命名控制器程式碼也沒有寫錯。然後自己加了@EnableWebMvc註解以及自己配置了檢視解析器,到最後還是不能解決問題(可以發現配置了@EnableWebMvc後可以在控制檯打印出頁面的路徑)。最後發現原來SpringBoot只支援模板引擎的原因。所以我認為可能是要加上一個模板引擎在依賴中負責渲染(springboot預設不支援jsp),這裡我就選擇使用thymeleaf,加上spring-boot-starter-thymeleaf在依賴中就解決了。

spring boot在springmvc的檢視解析器方面就預設集成了ContentNegotiatingViewResolver和BeanNameViewResolver,在檢視引擎上就已經整合自動配置的模版引擎,如下:

  1. FreeMarker

  2.  Groovy

  3. Thymeleaf

  4. Velocity (deprecated in 1.4)

  5. Mustache

JSP技術spring boot 官方是不推薦的,原因有三:

  1.  在tomcat上,jsp不能在巢狀的tomcat容器解析即不能在打包成可執行的jar的情況下解析

  2.  Jetty 巢狀的容器不支援jsp

  3.  Undertow

而其他的模版引擎spring boot 都支援,並預設會到classpath的templates裡面查詢模版引擎。

當然還有第二種可能性,那就是你的@SpringBootApplication註解所在類的掃描不到控制器的位置(可以用MockMvc查出這個原因),要保證所有包的位置都保持在與@SpringBootApplication註解所在類的包同級或者下級,@SpringBootApplication自帶的@ComponentScan只會掃描@SpringBootApplication註解所在類的包同級或者下級


 

好了既然知道原因了,那麼就好解決了直接引入依賴就完成了。

開啟pom.xml檔案,新增如下依賴

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

 

 

重啟專案,重新整理頁面,問題解決。好了接下來就可以愉快的開發了。