Springboot 3.x 项目使用 JSP 笔记 – 小刘技术blog

文章目录[隐藏]

前言

首先需要说明!这是一个不被推荐的操作!
官方推荐用thymeleaf等模板引擎做页面渲染
JSP默认状态是不开启,需要手动配置后才能使用
本文只讲配置过程,这样用是否合理看你的具体业务需求

折腾

开发工具 IntelliJ IDEA 2023.2.4 (Ultimate Edition)

新建项目(必须war包)

第二步, 选择 Lombok Spring Web

错误打开方式
直觉上这里在 resources/static 下新建 index.jsp 启动项目
发现访问 http://localhost:8080/index.jsp
结果404


正确打开方式
再次强调一下开局创建项目必须选war包,这个坑我爬了好久

大致思路:
1. 首先第一个思路是要让jsp可以正常被访问到
2. 进阶版要结合spirngboot提前查数据塞数据传给jsp渲染

具体操作
删了一些用不到的文件文件夹
maven加依赖

(我直接发了完整的依赖如下)

<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
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%="666"%>
</body>
</html>

启动项目,访问http://localhost:8080/index.jsp
这里已经可以看到访问成功了。

到这一步时项目路径文件位置关系如下

springboot-jsp/
|-- src/
|   |-- main/
|   |   |-- java/
|   |   |   |-- com.example.springbootjsp/
|   |   |   |   |-- ServletInitializer.java
|   |   |   |   |-- SpringbootJspApplication.java
|   |   |-- resources/
|   |   |   |-- application.yml
|   |   |-- webapp/
|   |   |   |-- index.jsp
`-- pom.xml

继续改进到可以和controller联动

修改springboot配置
application.yml

server:
  port: 8080
  servlet:
    context-path: /
spring:
  mvc:
    view:
      prefix: /
      suffix: .jsp

新建 controller/JSPController.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

<%@ 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
可以看到后端注入的参数

更多的spring搭配jsp用法可以参考文末的 JSP and JSTL 链接查看官方文档

END

总结:虽说这种方法不被官方推荐,但自己写写练手的项目正合适,再学 Themeleaf or Freemaker 头都学秃了

在线客服
在线客服
我们将24小时内回复。
2025-12-05 12:40:34
您好,有任何疑问请与我们联系!
您的工单我们已经收到,我们将会尽快跟您联系!
取消
选择聊天工具:
Verified by MonsterInsights