java - 无法查看JSP内容,获取 "an unexpected error (type=Not Found, status=404)"

标签 java spring maven jsp netbeans

我刚刚开始 Spring boot 应用程序开发。我试图显示简单的 jsp 页面,其中包含由 Netbeans 11.1 创建的默认 jsp 文件。我在互联网上搜索了这个错误,并在互联网上找到了我迄今为止尝试过的许多问题和答案。
大多数答案都说这个错误是由于 Controller 文件与其他 java 文件不在同一目录中引起的。但我的情况并非如此。首先查看下面我的文件结构。 enter image description here

我尝试直接从 webapp 文件夹加载 home.jsp 文件,而不是从 webapp/WEB-INF 文件夹和 webapp/WEB-INF/jsp 文件夹,因为我从 Github 的演示应用程序中看到了这个结构。

我在 .pom 文件中添加了 jasper 依赖项,该文件负责加载 .jsp 内容。

<dependency>
         <groupId>org.apache.tomcat.embed</groupId>
         <artifactId>tomcat-embed-jasper</artifactId>
         <scope>provided</scope>
         <!--<version>9.0.24</version>-->
</dependency>

这是我的 AppContoller 类代码

@Controller
public class HomeController {
    @RequestMapping("home")
    public String home(){
        System.out.println("HomeController is running!!!"); //showing this output
        return "home.jsp";
    }
}

注意:此类显示“HomeController is running!!!”当我输入 locathost:8080/home 时输出这意味着 Controller 配置正确,并且错误不是因为路径不同。

我的 MyWebAppApplication 类除了默认的 main 方法之外什么都没有。 这就是我在浏览器中得到的结果。

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Sep 10 15:38:44 PKT 2019
There was an unexpected error (type=Not Found, status=404). /home.jsp

如果我还需要包含任何其他内容,请告诉我。

我正在使用

  • 窗口 10
  • Netbeans 11.1
  • Java 版本 8
  • Spring Boot 与 Maven
  • 嵌入式 Tomcat 服务器

最佳答案

您需要添加以下属性:

spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp

return "home.jsp"; 替换为 return "home";

您还应该添加一些配置属性和依赖项:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>bootstrap</artifactId>
        <version>3.3.7</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jdt.core.compiler</groupId>
        <artifactId>ecj</artifactId>
        <version>4.6.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
</dependencies>

更新: 使用以下类来运行应用程序:

@SpringBootApplication
public class MyWebAppApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(DemoMvcApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(MyWebAppApplication.class, args);
    }
}

关于java - 无法查看JSP内容,获取 "an unexpected error (type=Not Found, status=404)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57869544/

相关文章:

java - 将基于 Maven 的依赖项的传递依赖项收集到非 Maven 项目的类路径

java - 通过 hudson 制作耳朵和构建

java - 如何强制 Maven 在站点生命周期之前运行构建生命周期?

JavaFX 进度条不会高于 0.1

java - 为什么 hibernate 在执行 saveAndFlush 之前再次加载实体?

java - 无法在 Spring mvc 中使用 Thymeleaf 解析 View

java - 如何向spring webflow controller发送请求参数

java - 使用 javax.xml.parsers.DocumentBuilder 解析网页时出现 fatal error

java - 为什么解释性语言被认为更具可移植性?

java - JFrame 中的网站图标