⑴ springboot集成jsp頁面總結
開發工具:IDEA
Springboot版本:2.0+
註:前端頁面引入靜態資源默認路徑resources/static/下
1、默認情況下訪問路徑為/,如: http://127.0.0.1/index ,其中index為LoginController 中配置的映射
2、指定上下文路徑,Springboot2.0+使用server.servlet.context-path指定;Springboot1.o+使用server.context-path指定
⑵ React+SpringBoot項目部署
這篇文章是記錄一下我剛剛部署的過程...倒不是怕忘記,只是部署花了我蠻長時間的,然而最後明白了之後,才發現超級簡單...
所以寫這篇文章用來幫助那些和我一樣的小白...
首先我用create-react-app搭建了一個react項目(這一步操作大家可以去官網看 https://reactjs.org/docs/add-react-to-a-new-app.html )
你會得到一個結構如下的項目:
我們可以通過 yarn start 運行這個項目:
跑起來的頁面是這樣的:
好的,現在你已經成功在開發環境中跑起來了,接下來我們來打包,然後將其部署到伺服器上
打包也很簡單,執行 npm run build :
你會發現在你的項目文件夾里多了個build文件夾:
然後當你點擊index.html之後,會發現打開是這樣的:
一片空白...然後你檢查了了下index.html,發現裡面的路徑是這樣的:
發現了啥問題沒...裡面的路徑是絕對路徑,所以當然找不到js和css以及圖片資源啥的,那怎麼讓這些路徑變成相對路徑呢,很簡單...我們再package.json加上homepage就行:
大家看最後一句就行...然後我們再次打包,然後再點index.html,會發現一切正常:
好的,現在我們通過build得到了html頁面以及js和css和各種資源...你也發現了,我們網頁的入口是index.html
所以比如說你自己有個伺服器地址是 www.abc.com ,你只要在訪問 www.abc.com 的時候把index.html返回出去就行了...因為我自己的伺服器是用SpringBoot搭建的,所以我就用SpringBoot來舉例子
SpringBoot返回html頁面也很簡單,在resource目錄下新建一個public文件夾,然後把你React打包的build文件夾里的文件都丟進去就行...(這里截圖是我自己的項目,我把一些.js和.json文件去掉了,因為好像沒啥用)
這個時候你訪問 www.abc.com 他就會直接返回index.html了(注意在SpringBoot里的Controller去掉對"/"的攔截)
然後你只要把SpringBoot項目部署到伺服器上(如何部署SpringBoot項目大家可以看這篇文章 https://blog.csdn.net/ruglcc/article/details/76147645 ),然後訪問你的域名,你就可以看到index.html了,比如我剛剛部署的自己的網頁 www.nanmian.top
OK這篇文章結束了,大家也發現了目前的網頁很簡單...就只有一個頁面,我剛學前端...所以也不是很懂,不知道之後項目變大了這種方法還行不行...到時候我會再記錄的
最後的最後,這篇文章不能再感謝我可愛的女朋友了,祝她前程似錦。
⑶ SpringBoot頁面展示Thymeleaf
開發傳統Java WEB工程時,我們可以使用JSP頁面模板語言,但是在SpringBoot中已經不推薦使用了。SpringBoot支持如下頁面模板語言
上面並沒有列舉所有SpringBoot支持的頁面模板技術。其中Thymeleaf是SpringBoot官方所推薦使用的,下面來談談Thymeleaf一些常用的語法規則。
要想使用Thhymeleaf,首先要在pom.xml文件中單獨添加Thymeleaf依賴。
Spring Boot默認存放模板頁面的路徑在 src/main/resources/templates 或者 src/main/view/templates ,這個無論是使用什麼模板語言都一樣,當然默認路徑是可以自定義的,不過一般不推薦這樣做。另外Thymeleaf默認的頁面文件後綴是 .html 。
在MVC的開發過程中,我們經常需要通過 Controller 將數據傳遞到頁面中,讓頁面進行動態展示。
創建一個Controller對象,在其中進行參數的傳遞
在SpringBoot默認的頁面路徑下創建show.html文件,內容如下
可以看到在 p 標簽中有 th:text 屬性,這個就是thymeleaf的語法,它表示顯示一個普通的文本信息。
如果我們要顯示的信息是存在資源文件中的,同樣可以在頁面中顯示,例如資源文件中定義了內容 welcome.msg=歡迎{0}光臨! 。可以在頁面中將其顯示
另外,在 th:utext 中還能做一些基礎的數學運算
如果我們想要傳遞到的頁面的信息,它本身是帶有CSS樣式的,這個時候如何在頁面中將攜帶的樣式信息也顯示出來?此時我們的控制器方法這樣寫。
此時頁面中需要藉助 th:utext 屬性進行顯示
通過瀏覽器查看頁面源碼可以看出 th:utext 和 th:text 的區別是: th:text 會對 < 和 > 進行轉義,而 th:utext 不會轉義。
我們常常需要將一個bean信息展示在前端頁面當中。
上面給出了兩種展現方式,一種是通過${屬性},另外一種是通過 {屬性}。
關於「${屬性}」和「 {屬性}」的區別?
$訪問完整信息,而訪問指定對象中的屬性內容, 如果訪問的只是普通的內容兩者沒有區別;
在 thymeleaf 之中提供有相應的集合的處理方法,例如:在使用 List 集合的時候可以考慮採用 get()方法獲取指定索引的數據,那麼在使用 Set 集合的時候會考慮使用 contains()來判斷某個數據是否存在,使用 Map 集合的時候也希望可以使用 containsKey()判斷某個 key 是否存在,以及使用get()根據 key 獲取對應的 value,而這些功能在之前並不具備,下面來觀察如何在頁面中使用此類操作
在傳統WEB工程開發時,路徑的處理操作是有點麻煩的。SpringBoot中為我們簡化了路徑的處理。
頁面之間的跳轉也能通過@{}來實現
雖然在這種模版開發框架裡面是不提倡使用內置對象的,但是很多情況下依然需要使用內置對象進行處理,所以下面來看下如何在頁面中使用JSP內置對象。
thymeleaf 考慮到了實際的開發情況,因為 request 傳遞屬性是最為常用的,但是 session 也有可能使用,例如:用戶登錄之後需要顯示用戶 id,那麼就一定要使用到 session,所以現在必須增加屬性范圍的形式後才能夠正常使用。在 thymeleaf 裡面也支持有 JSP 內置對象的獲取操作,不過一般很少這樣使用。
所有的頁面模版都存在各種基礎邏輯處理,例如:判斷、循環處理操作。在 Thymeleaf 之中對於邏輯可以使用如下的一些運算符來完成,例如:and、or、關系比較(>、<、>=、<=、==、!=、lt、gt、le、ge、eq、ne)。
通過控制器傳遞一些屬性內容到頁面之中:
不滿足條件的判斷
通過swith進行分支判斷
在實際開發過程中常常需要對數據進行遍歷展示,一般會將數據封裝成list或map傳遞到頁面進行遍歷操作。
我們常常需要在一個頁面當中引入另一個頁面,例如,公用的導航欄以及頁腳頁面。thymeleaf中提供了兩種方式進行頁面引入。
可以看到頁面當中還存在一個變數projectName,這個變數的值可以在引入頁面中通過 th:with="projectName=網路" 傳過來。
⑷ Spring Boot 中 Controller 返回HTML頁面
由於Spring Boot 內嵌了 Tomcat 容器,所以不用把項目打成war包,再放到Tomcat中去運行。但是隨之出現了個問題,基於Tomcat的Web應用都有一個 /webapp 目錄來存放前端頁面和靜態資源等文件。那麼Spring Boot中應該放在哪裡呢?
如果你是用Spring Initializr新建的項目的話,那麼當你打開項目,就會看到:
對, /resources 目錄下已經存在了兩個包:
/static 用來存放靜態文件
/templates 用來存放前端頁面
Ps:沒有目錄的話可以自己創建
我們寫一個最簡單的HTML頁面,放在 /templates 下:
可能你注意到了,在 <html lang="zh-CN" xmlns:th="http://www.thymeleaf.org"> 中多了點東西,沒關系,繼續往下看。
我們寫一個Spring MVC中最簡單的Controller,用來返回hello.html:
然後通過Postman來測試一下介面:
可以看到報錯了,錯誤提示說,可能是沒有指定視圖。
我們知道在傳統的Tomcat Web應用裡面,還需要配置web.xml與SpringMVC。
不過也太麻煩啦,所以Spring Boot就簡化了這些配置,並且推薦使用Thymeleaf前端模板引擎。
前面提到的多了點東西也就是這個引擎的語法。
我用Gradle做依賴管理:
可以看到返回的就是hello.html
Thymeleaf語法也是個坑,有時間再去看看吧~
⑸ SpringBoot | IDEA 搭建 springboot 項目 + jsp 頁面模板
搭建 springboot 項目,web頁面用 jsp 模板
我把自己遇到的問題和解決方法羅列了一下,看看你們會不會也遇到這些問題
Group 和 Artifact 被稱為「坐標」,為了保證項目唯一性
Group分為多個段,一般可設成兩段,第一段為域,例如org、com、cn,org為非營利組織,com為商業組織;第二段為公司名稱
Artifact 為項目名稱
其他的可根據自己的需求選擇對應的 starter 進行依賴,或者可後期在pom.xml 中配置
在 main 下新增 webapp 目錄, 在 webapp 目錄下新增 WEB-INF 目錄和 jsp 目錄,則將 jsp 文件創建在 jsp 目錄下
右擊 jsp 目錄 -> new -> JSP/JSPX page 創建 jsp 文件,例如本文創建 index.jsp
首先,右擊 項目 -> Open Mole Settings
選擇Moles -> 選擇Web -> 點擊 + 號 -> 點擊 web.xml
選擇 main\webapp\WEB-INF 目錄,在後面添加上 web.xml,點擊ok
web.xml 內容如下:
添加 org.apache.tomcat.embed 的 tomcat-embed-jasper 依賴包和 javax.servlet 的 jstl 依賴包
配置tomcat埠(默認值為8080),可以選擇不配置
spring.mvc.view.prefix 和 spring.mvc.view.suffix 是 Spring Boot 約定的視圖前綴和後綴的配置,意思是找到 /jsp/ 目錄下以 .jsp 為後綴的 JSP 文件
右擊 com.spring.demo 目錄 -> new -> 選擇 pakage,新增 controller 包
右擊 controller 目錄 -> new -> 選擇 Java Class,創建 Controller 類 ,本人創建為 IndexController 類
引入註解 @Controller 和 @RequestMapping,返回 jsp 頁面
springboot 小 demo 搭建完畢 ^_^
⑹ spring boot怎麼創建jsp頁面
最近在接支付項目,從官方下了個及時到款的demo,想在springBoot項目中運行起來,發現訪問jsp的時候直接會訪問到jsp頁面的源文件。
如何在springBoot項目中訪問到jsp頁面?
1.添加pom依賴
首先在原來的pom文件基礎上加上這兩個配置
[html] view plain
<!--tomcat的支持.-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
- 其實根據我自身的配置,只配置tomcat下面這個也可以 順利運行項目
⑺ 「SpringBoot實戰」視圖技術-Thymeleaf
在一個Web應用中,通常會採用MVC設計模式實現對應的模型、視圖和控制器,其中,視圖是用戶看到並與之交互的界面。對最初的Web應用來說,視圖是由HTML元素組成的靜態界面;而後期的Web應用更傾向於使用動態模板技術,從而實現前後端分離和頁面的動態數據展示。Spring Boot框架為簡化項目的整體開發,提供了一些視圖技術支持,並主要推薦整合模板引擎技術實現前端頁面的動態化內容。本文對SpringBoot常用的Thymeleaf進行整合。
Thymeleaf是一種現代的基於伺服器端的Java模板引擎技術,也是一個優秀的面向Java的XML、XHTML、HTML5頁面模板,它具有豐富的標簽語言、函數和表達式,在使用Spring Boot框架進行頁面設計時,一般會選擇 Thymeleaf模板。我們在這里學習Thymeleaf 常用的標簽、表達式。
Thymeleaf標簽
使用標簽只需要加上一個命名空間就可以了。 即修改原html的第二行就可以了。
變數表達式${..}主要用於獲取上下文中的變數值,示例代碼如下。
這是標題
- 使用了Thymeleaf模板的變數表達式${..}用來動態獲取p標簽中的內容 - 如果當前程序沒有啟動或者當前上下文中不存在title變數,該片段會顯示標簽默認值「這是標題」; - 如果當前上下文中存在title 變數並且程序已經啟動,當前p標簽中的默認文本內容將會被tite變數的值所替換,從而達到模板引擎頁面數據動態替換的效果。
Thymeleaf為變數所在域提供了一些內置對象
結合上述內置對象的說明,假設要在Thymeleaf模板擎頁面中動態獲取當前國家信息,可以使用#locale內置對象
選擇交量表達式和變數表達式用法類似,一般用於從被選定對象而不是上下文中獲取屬性值,如果沒有選定對象,則和變數表達式一樣,示例代碼如下。
消息表達式#{..}主要用於Thymeleaf模板頁面國際化內容的動態替換和展示。使用消息表這式#{..}進行國際化設置時,還需要提供一些國際化配置文件。關於消息表達式的使用,下文寫國際化時會詳細說明。
鏈接表達式@{..}一般用於頁面跳轉或者資源的引入,在Web開發中占據著非常重要的地位,並且使用也非常頻繁。
片段表達式~{..}是一種用來將標記片段移動到模板中的方法。其中,最常見的用法是使用th:insert或th:replace 屬性插入片段
Spring Boot默認設置了靜態資源的訪問路徑,默認將/**所有訪問映射到以下目錄。
我們創建一個springboot項目用於本次實驗。項目名為springboot_01_thyme。java8,springboot2.6.6
創建一個LoginController類用於數據替換效果測試。
我們寫一個login.html進行測試。我們導入一個bootstrap的樣式到static/login裡面,並且自己定義一些css。
最後我們通過訪問http://localhost:8080/toLoginPage 可以查看效果
在resources目錄下創建名為i18n的文件夾,數一數這個單詞多少個字母internationalization,就知道為什麼叫i18n了。
然後我們在i18n文件夾下面創建login.properties、 login_zh_CN.properties、 login_en_US.properties文件。
目錄結構:這個Resource Bundle 'login'時idea自動創建的,我們不需要管,只需要完成我們的就行。
login.properties
login_zh_CN.properties
login_en_US.properties
然後我們在配置文件application.properties裡面添加代碼
我們在config包下面創建一個MyLocalResovel類,自定義國際化功能區域信息解析器。
這里我們基本就完成了,但是在訪問中文的時候會出現亂碼現象。
我們打開idea的file->settings->file Encodings.
將Default encoding for properties的編碼改為utf-8,同時勾選Transparentnative-to-ascii conversion
然後我們重新編寫login.properties和其他相關的
但是這種方法1隻對當前項目有效。下次創建還是使用GBK編碼
本文我們主要了解了Thymeleaf的基本語法、標簽、表達式、基本使用、同時還實現了頁面登錄頁得國際化。
本文作者:hjk-airl
本文鏈接:https://www.cnblogs.com/hjk-airl/p/16181598.html