SpringBoot JSP渲染JSP失敗

2021-10-08 04:58:55 字數 1488 閱讀 8278

事實上我犯了乙個很常見的新手錯誤,搞錯了springboot與tomcat之間的依賴關係,這裡記錄一下我是怎麼犯錯的.

最開始的時候,我其實並沒有直接嘗試搭建 springboot+jsp ,而是先嘗試通過 tomcat + spring + springmvc 的方式實現相同的功能,為了使用 spring + springmvc ,我再 pom.xml 中引入了相關依賴,然後編寫了 jsp 檔案,最終將寫好的**打包成 war 包部署到 tomcat 上,最終展示的效果是和我預期的效果相同.

到目前為止一切進行順利,之後我為了引入 springboot ,開始在 pom.xml 檔案中新增 springboot 相關依賴,這部分比較簡單,因為輕量是 springboot 的宗旨.只需引入如下依賴即可:

>

org.springframework.bootgroupid

>

>

spring-boot-starter-webartifactid

>

接下來就是我犯錯的地方了,在 springboot 中並沒有之間依賴模板引擎的東西.也就是沒有 jasper 編譯引擎,因此我引入了下面相關依賴:

>

org.apache.tomcat.embedgroupid

>

>

tomcat-embed-jasperartifactid

>

>

providedscope

>

最終我啟動了 springboot,然後就是上面所說的結果了,jsp頁面並沒有正常渲染,而是作為乙個靜態資源返回了.

關鍵之處在於provided,結果是,我並沒有理解這裡的作用範圍到底是什麼意思,最終導致我的jsp渲染失敗.

這裡說明一下作用域為 provided 的含義,表示這個資源包只會在編譯階段提供,在執行階段是不提供的.在新增了這個依賴之後,原以為會在編譯階段實現對 jsp 動態頁面的編譯,但結果是我大錯特錯.

jsp的編譯過程是在執行期間完成編譯的,在第一次請求到達是,獲取到為jsp頁面後則會進行首次編譯,因此 jasper 包的作用範圍應該比編譯期間更大,為執行期間.

所以在我移除provided後,jsp 頁面開始能夠正常渲染.

>

org.apache.tomcat.embedgroupid

>

>

tomcat-embed-jasperartifactid

>

根據上面的除錯現象我做出如下總結:

Vue 模板渲染 條件渲染 列表渲染

當獲取到後端資料後,我們會把它按照一定的規則載入到寫好的模板中,輸出成在瀏覽器中顯示的 html,這個過程就稱之為渲染。而 vue.js 是在前端 即瀏覽器內 進行的模板 渲染。1.前後端渲染對比 前端渲染 的優勢 是在瀏覽器裡利用 js 把資料和 html 模板進行組合,業務分離,後端只需要提供資...

前端渲染和後端渲染

定義 前端預定義好html,然後向後端請求資料,得到資料 xml json等 後,通過js去載入資料。優點 節省網路流量,利於seo,節省部分伺服器資源。缺點 前端處理資料費時,可能造成假死等。舉例 easyui 定義 在後端就渲染好html頁面,直接傳送給瀏覽器顯示。優點 前端頁面載入迅速,無資料...

前端渲染 vs 後端渲染

前端渲染是通過ajax請求資料,然後通過js語法將資料展示到頁面中,稱之為前端渲染 後端渲染是通過後端語言 後端模板 ejs 將 頁面整個傳送給前端 後端模板 ejspug jade art template 現在流行的 前端渲染 問題 當前後端同時進行專案開發是,後端資料介面沒有寫好,但是前端卻需...