springboot为什么不⽀持jsp
------------恢复内容开始------------
默认情况下,嵌⼊式Tomcat软件包(在springboot中⽤于创建可执⾏jar)不包含JSP,因此我们还必须添加该模
块“at.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应⽤程序存档)时,打包将⾃动从以下项⽬结构中获取资源:
|-- l
`-- src
`-- main
|-- java
|  `-- com
|      `-- example
|          `-- projects
|              `-- SampleAction.java
|-- resources
jsp创建|  `-- images
|      `-- sampleimage.jpg
`-- webapp
|-- WEB-INF
|  `-- l
|-- index.jsp
`-- jsp
`-- websource.jsp
在jsp中使⽤springboot的指南和官⽅样本:,
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
------------恢复内容结束------------

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。