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