如何将 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 中?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 邮件:传递字符串而不是视图

获取存储在类中的异常对象时,Junit 测试失败,而不是抛出

Spring Boot系列Spring Boot视图技术(JspFreeMarkerThymeleaf)

如何将整个简历存储在 servlet/jsp 中的 mysql 数据库中?

Jsp--绝对路径,相对路径笔记

JSP 从数据库中如何取得图片的路径?