如何将 JSP 视图存储在类路径而不是 webapp 中?
Posted
技术标签:
【中文标题】如何将 JSP 视图存储在类路径而不是 webapp 中?【英文标题】:How to store JSP views in classpath instead of webapp? 【发布时间】:2020-10-06 09:16:58 【问题描述】:我想将 JSP 文件存储在src/main/resources/templates
但设置后我没有找到错误。 spring.mvc.view.prefix
好像只支持webabb文件夹中的文件夹路径。
Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. There was an unexpected error (type=Not Found, status=404).
application.properties
spring.mvc.view.prefix = classpath*:/templates/
spring.mvc.view.suffix = .jsp
控制器
@Controller
public class DemoController
@RequestMapping("/")
public String index()
return "test";
这是 src 文件结构:
├───main
│ ├───java
│ │ └───com
│ │ └───example
│ │ └───demo
│ │ DemoApplication.java
│ │ DemoController.java
│ ├───resources
│ │ └───templates
│ │ test.jsp
│ └───webapp
【问题讨论】:
可能dzone.com/articles/spring-boot-with-jsps-in-executable-jars-1 会有所帮助。 JSP 并不是真正设计为通过类路径提供服务,但有各种变通方法,其中一些比其他更复杂。 JSP 有局限性,一个是它们只能在war 文件中的适当webapp 中工作。如果不求助于黑客,从类路径为它们提供服务通常是行不通的。您最好使用百里香叶或小胡子之类的东西。 @DaveNewton 你可以添加答案 @Alex78191 不,自我回答很好——我没有测试答案,所以你的验证比我回答更好:) 【参考方案1】:solution(来自Dave Newton)是将jsp文件放入文件夹
src/main/resources/META-INF/resources/WEB-INF/templates/
并设置
spring.mvc.view.prefix = /WEB-INF/templates/
spring.mvc.view.suffix = .jsp
文件夹src/main/resources/META-INF/resources
的作用类似于src/main/webapp
【讨论】:
以上是关于如何将 JSP 视图存储在类路径而不是 webapp 中?的主要内容,如果未能解决你的问题,请参考以下文章
获取存储在类中的异常对象时,Junit 测试失败,而不是抛出
Spring Boot系列Spring Boot视图技术(JspFreeMarkerThymeleaf)