找不到JSP文件可能是春天的一个错误
Posted
技术标签:
【中文标题】找不到JSP文件可能是春天的一个错误【英文标题】:Could JSP file not found be a bug in spring 【发布时间】:2021-03-29 16:30:50 【问题描述】:我的应用程序中遵循了spring boot的官方文件和包结构。但我仍然收到白标签页面错误。大多数答案和建议都不能解决这个问题。
这可能是 Spring Boot 中的错误吗?
下面是我的代码以及文件和文件夹的排列结构。
Application.java
@SpringBootApplication
public class Application
public static void main(String[] args)
SpringApplication.run(Application.class, args);
控制器
@Controller
public class UserController
@RequestMapping("/")
public String index(HttpServletRequest request)
request.setAttribute("mode", "MODE_HOME");
return "homepage";
homepage.jsp
<body>
<c:choose>
<c:when test="$mode=='MODE_HOME'">
<h1>Mambo, This is home page </h1>
</c:when> </c:choose>
</body>
application.properties
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.samaritan</groupId>
<artifactId>samaritanweb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>samaritanweb</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
注意:使用 Visual Studio Code 版本 1.52.1
【问题讨论】:
一切皆有可能,但明智的做法是假设它不是 Spring 错误,除非您有明确的证据。 @StephenC 先生,您是对的,只是我已经尝试通过不同帖子中的几乎所有答案和建议来解决它,但没有成功。有点卡住了 @StephenC 认为您可能有一个项目工作正常,但在重新启动系统并再次启动应用程序后,您会看到 WhiteLabel 错误页面 【参考方案1】:您需要指定控制器接收哪些请求(GET、POST 等)。
@Controller
public class UserController
@RequestMapping("/", method = RequestMethod.GET)
public String index(HttpServletRequest request)
request.setAttribute("mode", "MODE_HOME");
return "homepage";
或
@Controller
public class UserController
@GetMapping("/")
public String index(HttpServletRequest request)
request.setAttribute("mode", "MODE_HOME");
return "homepage";
【讨论】:
上述两种方法都试过了,还是一样的错误【参考方案2】:试着像这样改变你的主类
@SpringBootApplication
public class Application extends SpringBootServletInitializer
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder)
return builder.sources(Application.class);
public static void main(String[] args)
SpringApplication.run(Application.class, args);
【讨论】:
我已尝试按照您的建议更改主类,但仍然出现相同的错误 我已经复制了您的示例并且它有效。但是你的 pom.xml 中也有一个错误:用 替换最后一个 标记 同样在我这边它曾经工作正常,但在我重新启动我的电脑并午餐应用程序后,错误弹出。抱歉 是输入错误。已更改。 这很奇怪。您是否检查处理请求的进程(使用 jps 或 ps aux)?也许有另一个tomcat实例,旧版本的应用程序从您的电脑开始?尝试在 application.properties 中添加 server.port=9999(例如)并检查 localhost:9999。你也可以清理你的 Maven 本地存储库 如何使用 VSCode 清理 maven 本地仓库?以上是关于找不到JSP文件可能是春天的一个错误的主要内容,如果未能解决你的问题,请参考以下文章