我正在构建我的第一个 Spring Boot Web 应用程序,并使用 Elastic beanstalk 将其部署到 AWS。我已确认该应用程序在我的本地计算机中正确加载并运行,并且正在使用简单的 Vs Code 启动配置运行它。
{
"type": "java",
"name": "SpringBootApplication",
"request": "launch",
"mainClass": "com.package.webapp.MyWebApplication",
"projectName": "webapp",
"args": "--server.port=8080"
}
当我在本地运行时,日志显示了此输出。
2024-01-04T10:08:28.136-07:00 DEBUG 26044 --- \[nio-8080-exec-1\] o.s.w.servlet.view.InternalResourceView : Forwarding to \[/WEB-INF/jsp/home.jsp\]
2024-01-04T10:08:28.566-07:00 DEBUG 26044 --- \[nio-8080-exec-1\] o.s.web.servlet.DispatcherServlet : Completed 200 OK
我还确认 Spring Boot 应用程序正在从我部署的构建中命中,因为我能够从此映射中获得响应。这告诉我大部分 Spring 应用程序都运行正常。
@RequestMapping("test")
@ResponseBody
public String returnTestStringToBody() {
return "Testing!!";
}
我遇到的问题是当我尝试访问 jsp 映射页面时出现此错误。
Whitelabel 错误页面
此应用程序没有 /error 的显式映射,因此您将其视为后备。
世界标准时间 2024 年 1 月 4 日星期四 14:24:54
出现意外错误(类型=未找到,状态=404)。
这是我的jsp所在的位置
my-webapp\src\main\resources\META-INF\resources\WEB-INF\jsp\home.jsp
这是我的应用程序属性中的内容
# View Configuration
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
这包含在我的 pom 中
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
这是我的请求映射。
@RequestMapping("/")
public String root() {
return "home";
}
控制器位于此处。
my-webapp\src\main\java\com\package\webapp\controllers\home\HomeController.java
我看到以下日志条目。
Jan 4 14:56:14 ip-172-31-9-120 web[11872]: 2024-01-04T14:56:14.992Z DEBUG 11872 --- [nio-5000-exec-5] o.s.w.servlet.view.InternalResourceView : Forwarding to [/WEB-INF/jsp/home.jsp]
Jan 4 14:56:14 ip-172-31-9-120 web[11872]: 2024-01-04T14:56:14.993Z DEBUG 11872 --- [nio-5000-exec-5] o.s.web.servlet.DispatcherServlet : Completed 404 NOT_FOUND
注意:这是整个家庭控制器,后者
/test
映射返回“测试!!”适当的文字。
package com.package.webapp.controllers.home;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HomeController {
@RequestMapping("/")
public String root() {
return "home";
}
@RequestMapping("test")
@ResponseBody
public String returnTestStringToBody() {
return "Testing!!";
}
}
注意:我已经审查并确认了这篇文章中的内容。 Spring Boot JSP 404
/WEB-INF/jsp/
处没有JSP文件。视图解析器无法从该位置获取 JSP 文件。因此返回 404 错误代码。
您应该从
移动 JSP 文件my-webapp\src\main\resources\META-INF\resources\WEB-INF\jsp\home.jsp
至
my-webapp\src\main\webapp\WEB-INF\jsp\home.jsp