springboot為什么不支持jsp


------------恢復內容開始------------

默認情況下,嵌入式Tomcat軟件包(在springboot中用於創建可執行jar)不包含JSP,因此我們還必須添加該模塊“org.apache.tomcat.embed:tomcat-embed-jasper”,這就是我們tomcat-embed-jasper在springboot 中添加為依賴項的原因,以便可以使用jstl標記在jsp中。

當將springboot *jar用作打包時,springboot無法與jsp作為視圖解析器一起正常使用的主要原因是因為Tomcat中使用了硬編碼的文件模式。問題是,當您java -*.jar用於部署springboot應用程序時,jsp文件不會出現在嵌入式tomcat中,並且在嘗試滿足請求時,您將獲得404 PAGE NOT FOUND這是因為jar打包,所以不會從WEB-INF文件夾中復制jsp文件。如果META-INF/resources使用jar打包時將jsp文件保留在文件下,則應該可以。

Thymeleaf允許使用模板作為原型,這意味着可以將它們視為靜態文件並放在resources/templates文件夾中以供春天使用。但是jsp文件將具有jstl標記等,在渲染前需要jasper對其進行編譯,因此無法將其設置為據我所知靜態文件。

使用WAR(Web應用程序存檔)時,打包將自動從以下項目結構中獲取資源:

|-- pom.xml
 `-- src
     `-- main
         |-- java
         |   `-- com
         |       `-- example
         |           `-- projects
         |               `-- SampleAction.java
         |-- resources
         |   `-- images
         |       `-- sampleimage.jpg
         `-- webapp
             |-- WEB-INF
             |   `-- web.xml
             |-- index.jsp
             `-- jsp
                 `-- websource.jsp

在jsp中使用springboot的指南和官方樣本:Guide樣本倉庫

WAR打包結構堅持將jsp文件保存在webapp/文件夾,並且它將按預期工作。maven war目標會將文件從webapp文件夾復制到WEB-INF,所有資源文件(如jsp)將位於war包裝的根目錄。從此處開始,maven-repackage目標或spring boot重新包裝將負責制作jar / war可執行文件,因此,如果這些文件存在於原始war中,它也將位於可執行文件中。springboot 可執行war結構如下:

example.war
 |
 +-META-INF
 |  +-MANIFEST.MF
 +-org
 |  +-springframework
 |     +-boot
 |        +-loader
 |           +-<spring boot loader classes>
 +-WEB-INF
    +-classes
    |  +-com
    |     +-mycompany
    |        +-project
    |           +-YourClasses.class
    +-lib
    |  +-dependency1.jar
    |  +-dependency2.jar
    +-lib-provided
       +-servlet-api.jar
       +-dependency3.jar

因此,對於評論:

如果將jsp文件放在該文件夾中src/main/resources,則WEB-INF/classes根據WAR 文檔,該目錄中的所有內容都將自動復制到

因此,如果將jsp文件保存在src / main / resources下並在yml或屬性文件中配置以下內容,則該文件應適用於WAR存檔。我還沒有嘗試過,所以不確定。

spring.mvc.view.prefix = /WEB-INF/classes/templates
spring.mvc.view.suffix = .jsp

https://stackoverflow.com/questions/56537151/why-does-spring-boot-not-support-jsp-while-it-can-render-the-page-if-we-add-prop

------------恢復內容結束------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM