1、概览 在构建 Java Web 应用时,可以使用 Java Server Pages(JSP)作为 HTML 页面模板。
Spring Boot 是一个流行的框架,可以用它来快速开发 Java Web 应用。 但是,在 Spring Boot 中使用 JSP 有一定的局限性,应该考虑用 Thymeleaf 或 FreeMarker 来替代 JSP。
2、Maven 依赖 首先来看看在 Spring Boot 中使用 JSP 需要哪些依赖。
2.1、作为独立应用运行 首先,添加 spring-boot-starter-web 依赖。
该依赖提供了使用 Spring Boot 和默认的嵌入式 Tomcat Servlet 容器来运行 Web 应用的所有核心依赖。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.4.4</version> </dependency> 注意,使用 Undertow 作为嵌入式 Servlet 容器使用时不支持 JSP。
接下来,需要添加 tomcat-embed-jasper 依赖,以便应用能够编译和渲染 JSP 页面:
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <version>9.0.44</version> </dependency> 虽然可以手动提供上述两个依赖,但通常最好让 Spring Boot 管理这些依赖的版本,而我们只需管理 Spring Boot 版本即可。
在前后端分离架构、SPA 应用大行其道的今天,模板引擎已经逐渐被淘汰了。更别提 JSP 这种上古模板引擎了。
Spring Boot 推荐使用 FreeMarker、Groovy、Thymeleaf 或者 Mustache 作为模板引擎。不推荐 JSP,主要是 JSP 的编译方式比价特殊,它需要先把 JSP 代码编译为 Servlet,最后通过执行 Servlet 来输出模板内容。
当然,在 Spring Boot 中使用 JSP 也是可以的,只需要些许配置即可。
创建 Spring Boot 项目 创建 Spring Boot(3.0.3)项目,在 pom.xml 中添加如下依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Servlet --> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> </dependency> <!-- Tomcat 嵌入式 JSP 解析器 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <!-- JSP jstl --> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> 注意,jstl 需要自己手动添加版本号,它没有被 Spring Boot 管理。
在 Spring Boot 支持的嵌入式容器中只有 Tomcat 支持使用 JSP,Undertow 和 Jetty 均不支持!