springbootNoResourceFoundException: No static resource WEB-INF/userList.jsp.
时间: 2025-01-04 12:26:04 浏览: 22
### 解决 Spring Boot 中找不到静态资源 `WEB-INF/userList.jsp` 的问题
在 Spring Boot 应用程序中,默认情况下,静态文件会从 `/static`, `/public`, `/resources` 或者 `/META-INF/resources` 文件夹下加载[^1]。然而,对于 JSP 页面来说,这些默认路径并不适用。
#### 配置 JSP 支持
为了使应用程序能够找到并渲染位于 `WEB-INF` 下的 JSP 文件,需要做如下调整:
- **确保依赖项存在**
确认项目中的构建工具(如 Maven 或 Gradle)已经包含了对 Servlet API 和 JSP 的支持。例如,在 pom.xml 中应有类似下面的内容来引入 Tomcat 对 JSP 的支持:
```xml
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
```
- **修改 application.properties 或 application.yml**
设置视图解析器的相关属性以便正确处理 `.jsp` 后缀的模板文件。可以在配置文件里加入以下内容:
```properties
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
```
这告诉应用所有的请求都会被映射到对应的 JSP 路径上,并附加 `.jsp` 扩展名作为后缀。
- **创建控制器类**
编写一个简单的控制器用于返回指定页面名称给前端展示层。比如:
```java
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class UserController {
@GetMapping("/users")
public String showUserList() {
return "userList"; // 这里的 userList 将会被替换为 /WEB-INF/userList.jsp
}
}
```
通过上述更改之后,当访问 `/users` URL 时,应该可以正常显示位于 `src/main/webapp/WEB-INF/userList.jsp` 的网页了。
需要注意的是,如果仍然遇到无法定位资源的情况,则可能是因为项目的打包方式不兼容 JSP 渲染机制。通常建议将此类 Web 应用构建成 WAR 形式的包而非 JAR 包形式部署至外部容器运行。
阅读全文