mvn clean install
从命令行启动生成的 JAR(由
java -jar MyApp-1.0.jar
),应用程序就会启动,但是当我转到
localhost:8080
时,它会给我 Whitelabel 错误页面:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Fri Aug 02 14:21:00 CEST 2019
There was an unexpected error (type=Not Found, status=404).
/WEB-INF/view/home.jsp
这就像 Maven 生成了一个错误的 JAR 文件。 你能帮我吗?
spring.mvc.view.prefix: /WEB-INF/jsps
spring.mvc.view.suffix: .jsp in your application.properties
请检查下面的文件以获取映射
https://github.com/hellokoding/springboot-jsp/blob/master/src/main/resources/application.properties
另请检查带有 jsp 的示例 springboot 项目,如下所示https://hellokoding.com/spring-boot-hello-world-example-with-jsp/
已经在这里回答了
如果您所做的一切都是正确的,但仍然不起作用,请确保在 Application.java 和具有“basePackages”属性的控制器中都有 @ComponentScan 注释。
@ComponentScan(basePackages= {"... specify pkg name ...."})
当您将应用程序打包为 JAR 文件时,包含 JSP 文件和其他特定于 Web 的资源的“webapp/WEB-INF”文件夹不会包含在打包的 JAR 中。当将应用程序作为可执行 JAR 运行时,这可能会导致问题,因为嵌入式 servlet 容器将无法找到这些关键资源。
相反,选择 WAR 包装。此打包格式可确保包含 JSP 文件、静态内容和其他 Web 资源的“webapp/WEB-INF”文件夹包含在 WAR 文件中。这对于正常运行至关重要,因为嵌入式 servlet 容器可以正确访问和服务这些资源。
要将应用程序构建为 WAR 包,只需在项目的 pom.xml 文件中包含以下行:
通过进行此更改,您将确保您的 WAR 包包含正确 Web 应用程序部署所需的所有组件。
想要更深入地了解这些打包格式及其含义,可以参考Spring Boot官方文档: