在 AWS Elastic Beanstalk 环境中运行时出现 Spring Boot 404

问题描述 投票:0回答:1

我正在构建我的第一个 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

spring-boot jsp tomcat amazon-elastic-beanstalk java-17
1个回答
0
投票

/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
© www.soinside.com 2019 - 2024. All rights reserved.