Spring Boot 集成 JSP 的项目搭建实践:配置要点与开发细节整理
本文面向需要在 Spring Boot 项目中使用 JSP 作为视图层的开发者与在校计算机专业学生。在实际学习或课程项目中,很多人按照常规 Spring Boot 流程创建项目后,发现 JSP 页面无法访问、返回 404,或者页面不解析。本文基于一次完整的本地实践过程,把 Spring Boot 集成 JSP 时容易忽略的配置点逐一整理出来,帮助读者少走弯路。
一、实践背景与问题说明
我是在一台 Windows 11 64 位开发环境中完成该项目的,使用的是 JDK 8 与 Maven。起初我按照 Spring Boot 官方推荐方式创建 Web 项目,但在访问 JSP 页面时始终返回错误。经过排查发现,Spring Boot 默认并不直接支持 JSP,需要额外的依赖和目录约定。
因此,我决定把整个集成过程重新梳理一遍,并记录下关键配置,作为自己 Web 基础专栏中的一篇实践笔记。
二、项目结构与 JSP 放置位置
在 Spring Boot 项目中,JSP 不能像 Thymeleaf 模板那样放在 resources/templates 目录下,而是必须放在 webapp 目录中。
推荐的目录结构如下:
src/main
├─ java
│ └─ com.example.demo
│ └─ controller
├─ resources
│ └─ application.yml
└─ webapp
└─ WEB-INF
└─ jsp
└─ index.jsp
将 JSP 页面放在 WEB-INF 目录下,可以避免被直接访问,只能通过 Controller 转发,这一点在实际项目中比较常见。
三、核心依赖配置说明
Spring Boot 默认的 Web Starter 并不包含 JSP 解析功能,因此需要手动添加相关依赖。以下依赖是我在实践中验证可用的组合:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
其中 tomcat-embed-jasper 是 JSP 能够在内嵌 Tomcat 中正常运行的关键依赖,如果缺失该依赖,项目可以启动,但页面无法解析。
四、视图解析器配置细节
为了让 Spring MVC 正确定位 JSP 页面,需要在配置文件中指定视图解析路径。
示例 application.yml 配置如下:
spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
这里需要注意路径前后是否包含 /,以及是否与项目实际目录结构保持一致,否则很容易出现访问路径正确但页面仍然 404 的情况。
五、Controller 层的正确写法
在使用 JSP 时,Controller 必须使用 @Controller 注解,而不是 @RestController。这是一个常见但容易忽略的问题。
示例代码如下:
@Controller
public class IndexController {
@GetMapping("/index")
public String index() {
return "index";
}
}
这里返回的是逻辑视图名,Spring MVC 会根据前缀和后缀自动拼接出完整 JSP 路径。
六、JSP 页面与静态资源处理
在 JSP 页面中,建议只保留展示逻辑,避免直接编写复杂 Java 代码。如果需要条件判断或循环展示,可以引入 JSTL 标签库。
如果项目中使用了 CSS 或 JavaScript 文件,需要注意 Spring Boot 对静态资源的默认映射规则,通常放在 resources/static 目录下即可正常访问。
七、常见问题与排查思路
在这次集成过程中,我遇到并记录了几个典型问题:
- JSP 页面 404,多数是路径或视图解析器配置错误
- 页面空白但无异常日志,通常与依赖缺失有关
- 返回字符串被直接输出,往往是 Controller 注解使用不当
遇到问题时,建议优先查看控制台启动日志,Spring Boot 对配置错误的提示相对明确。
八、结尾说明与延伸阅读
回到文章开头提到的问题,Spring Boot 集成 JSP 并不复杂,但需要理解其运行机制和目录约定。只要依赖、路径和 Controller 写法正确,整体流程是稳定可控的。
更多推荐



所有评论(0)