1. 程式人生 > >Spring Boot (Web 篇):支援JSP

Spring Boot (Web 篇):支援JSP

 

目錄

前言

在pom.xml加入相關依賴

配置application.properties

建立JSP頁面

Controller層

JSP頁面

專案啟動

第一種方式,SpringBoot直接啟動(內建整合tomcat)

瀏覽器訪問

第二種方式,打包成部署的 war 包(外接tomcat)

在pom.xml加入相關依賴

配置啟動項

在pom.xml加入相關依賴

新增外接 tomcat

Maven打包

瀏覽器訪問

總結

原始碼下載


前言

SpringBoot雖然支援JSP,但是官方不推薦使用,即:預設並不支援。最開始接觸動態頁面大多數人都是從JSP開始認識的,雖然真正開發中基本用不到了。但是還是要簡單的介紹一下,SpringBoot如何整合JSP頁面。

在pom.xml加入相關依賴

有一個很關鍵的關鍵點,就是tomcat-embed-jasper中scope必須是provided。

使用內嵌的tomcat容器來執行的話只要這3個就好了。這裡介紹下maven中scope依賴範圍的概念,因為後續涉及到這個會有問題。

依賴範圍就是用來控制依賴和三種classpath(編譯classpath,測試classpath、執行classpath)的關係,Maven有如下幾種依賴範圍:

  • compile:編譯依賴範圍。如果沒有指定,就會預設使用該依賴範圍。使用此依賴範圍的Maven依賴,對於編譯、測試、執行三種classpath都有效。典型的例子是spring-code,在編譯、測試和執行的時候都需要使用該依賴。

  • test: 測試依賴範圍。使用次依賴範圍的Maven依賴,只對於測試classpath有效,在編譯主程式碼或者執行專案的使用時將無法使用此依賴。典型的例子是Jnuit,它只有在編譯測試程式碼及執行測試的時候才需要。

  • provided:已提供依賴範圍。使用此依賴範圍的Maven依賴,對於編譯和測試classpath有效,但在執行時候無效。典型的例子是servlet-api,編譯和測試專案的時候需要該依賴,但在執行專案的時候,由於容器以及提供,就不需要Maven重複地引入一遍。

因為SpringBootServletInitializer需要依賴 javax.servlet,而tomcat-embed-jasper下面的tomcat-embed-core中就有這個javax.servlet,如果沒用provided,最終打好的war裡面會有servlet-api這個jar,這樣就會跟tomcat本身的衝突了。

配置application.properties

建立JSP頁面

SpringBoot利用工具搭建時,是沒有webAPP等目錄的,需要手動建立以下目錄:

Controller層

注意別加註解@ResponeBody 或者@RestController,控制層根據專案不同,註解不同,建議使用@Controller,不要使用@RestController,畢竟不是每一個方法都返回JSON的,有的需要跳轉到介面。

JSP頁面

${search}為jstl,在以後的FreeMark同樣適用

專案啟動

第一種方式,SpringBoot直接啟動(內建整合tomcat)

瀏覽器訪問

在瀏覽器直接輸入:http://localhost:8080/index/helloJSP

第二種方式,打包成部署的 war 包(外接tomcat)

在pom.xml加入相關依賴

在這裡需要移除對嵌入式Tomcat的依賴,這樣打出的war包中,在lib目錄下才不會包含Tomcat相關的jar包,否則將會出現啟動錯誤。

配置啟動項

讓 SpringbootApplication 類繼承 SpringBootServletInitializer 並重寫 configure 方法,如下:

在pom.xml加入相關依賴

修改 pom.xml 檔案,將 jar 改成 war,如下:

新增外接 tomcat

Maven打包

當然,如果對於yml,xml,properties等 類似於 配置的檔案,每次有改動都要重新打包,對於clean是為了清除快取,

٩(๑>◡<๑)۶ 對於我,還是比較喜歡SpringBoot方式啟動,雞肋~

打包成功後,一般會在專案中target中預設存放:

將 war 包部署到 tomcat 容器中執行即可。

瀏覽器訪問

在瀏覽器直接輸入:http://localhost:8080/index/helloJSP

當然可以直接在tomcat配置首頁地址為:http://localhost:8080/index/helloJSP

當然外接 tomcat 也可以選擇熱部署,類似於SpringBoot熱部署:https://blog.csdn.net/Soinice/article/details/82416043

配置完成後,啟動tomcat會自動開啟瀏覽器,並訪問配置的首頁

總結

我相信全網都找不到一篇有我這篇這麼詳細的介紹Spring Boot使用jsp的文章。有很多人問我,為什麼我的很多文章這麼簡單易懂,我每次都是哭著回覆他們四個字:主題閱讀,天知道我參考了多少篇網上的文章,外加多少本相關書籍中關於這個章節的內容,反覆對比提煉,最後才產出對應的博文。說真的,我很羨慕你們在這個資訊爆炸的時代,剛好看到一篇自己要學習的技術的好文章,少走多少彎路。

原始碼下載

[相關示例完整程式碼]請獲取 相關分支哦:feature-20180910-web