Springboot 3.x 项目使用 JSP 笔记 home 编辑时间 2023/11/23 ![](/api/file/getImage?fileId=655f0f75da7405001400e880) ## 前言 **首先需要说明!这是一个不被推荐的操作!** 官方推荐用thymeleaf等模板引擎做页面渲染 JSP默认状态是不开启,需要手动配置后才能使用 本文只讲配置过程,这样用是否合理看你的具体业务需求 ## 折腾 开发工具 `IntelliJ IDEA 2023.2.4 (Ultimate Edition)` <br> 新建项目(必须war包) ![](/api/file/getImage?fileId=65600fb8da7405001400e91a) <br> 第二步, 选择 `Lombok` `Spring Web` ![](/api/file/getImage?fileId=655f14b6da7405001400e88f) <br> **错误打开方式** 直觉上这里在 `resources/static` 下新建 `index.jsp` 启动项目 发现访问 `http://localhost:8080/index.jsp` 结果404 <br> **正确打开方式** 再次强调一下开局创建项目必须选war包,这个坑我爬了好久 大致思路: 1. 首先第一个思路是要让jsp可以正常被访问到 2. 进阶版要结合spirngboot提前查数据塞数据传给jsp渲染 具体操作 删了一些用不到的文件文件夹 `maven`加依赖 (我直接发了完整的依赖如下) ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </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.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>jakarta.servlet.jsp.jstl</artifactId> <version>3.0.0</version> </dependency> ``` `main`目录下新建文件夹 `webapp` `webapp`下新建文件 `index.jsp` ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <%="666"%> </body> </html> ``` 启动项目,访问`http://localhost:8080/index.jsp` 这里已经可以看到访问成功了。 ![](/api/file/getImage?fileId=656012e7da7405001400e921) 到这一步时项目路径文件位置关系如下 ```treeview springboot-jsp/ |-- src/ | |-- main/ | | |-- java/ | | | |-- com.example.springbootjsp/ | | | | |-- ServletInitializer.java | | | | |-- SpringbootJspApplication.java | | |-- resources/ | | | |-- application.yml | | |-- webapp/ | | | |-- index.jsp `-- pom.xml ``` 继续改进到可以和controller联动 修改springboot配置 application.yml ```yml server: port: 8080 servlet: context-path: / spring: mvc: view: prefix: / suffix: .jsp ``` 新建 `controller/JSPController.java` ```java import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @Controller public class JSPController { @GetMapping("/index") public String index(Model model) { model.addAttribute("message","测试springboot-jsp传参"); return "index"; } } ``` 修改 `index.jsp` ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <%@ taglib prefix="c" uri="jakarta.tags.core" %> <html> <head> <title>Title</title> </head> <body> ${message} </body> </html> ``` 重启项目访问 `http://localhost:8080/index` 可以看到后端注入的参数 ![](/api/file/getImage?fileId=65601a48da7405001400e928) 更多的spring搭配jsp用法可以参考文末的 `JSP and JSTL` 链接查看官方文档 ## 关于Maven报错 2023-11-25 补充 ## END 总结:虽说这种方法不被官方推荐,但自己写写练手的项目正合适,再学 `Themeleaf` or `Freemaker` 头都学秃了 参考 [关于2023年如何开发一个Java JSP JSTL项目指南](https://zzzmh.cn/post/ht5by72c3fofjltmqcqork37gpyd92ev) [SpringBoot项目中如何使用Jsp(CSDN)](https://blog.csdn.net/weixin_53168000/article/details/126662098) [在SpringBoot中实现对jsp的支持,超详细配置!(知乎)](https://zhuanlan.zhihu.com/p/498924995) [JSP and JSTL(Spring)](https://docs.spring.io/spring-framework/reference/web/webmvc-view/mvc-jsp.html) 送人玫瑰,手留余香 赞赏 Wechat Pay Alipay 解决JSTL报错 java.lang.ClassNotFoundException: org.apache.jsp.index_jsp 关于2023年如何开发一个Java JSP JSTL项目指南