虽然JSP在很多互联网公司都已经不再使用,但是在很多老企业,为了追求项目稳定,或者由于某些其它原因(这个原因只能意会,比如我我之前遇到一个拒绝新技术的TL,那就没办法)仍然在使用JSP。而随着SpringBoot的流行程度,很多框架或者工具都开始提供与SpringBoot整合的方案。本篇介绍一下整合JSP的步骤。
依赖
在SpringBoot中已经内置了Tomcat,所以对于JSP的整合,最主要的是提供一个外部的Jasper用于支持JSP,另外一个核心依赖自然就是JSP的核心jstl。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
配置映射
在SpringBoot中,不需要再去显示的配置视图解析器。只需要在配置文件中配置视图的前后缀即可。
- 如果你习惯使用yaml,配置如下
spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
- 如果你习惯使用properties,配置如下
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
启动方式
SpringBoot的项目实际的启动方式有4种:
- 用jar的形式启动
- 编译为war,放在外部Tomcat中运行
- 使用maven plugin中的使用
spring-boot:run
来运行 - 运行启动类中的main方法
针对tomcat-embed-jasper
的scope属性不同,有些方式就无法启动。我自己测了一下,如下表:
scope属性是否provided | 启动方式 | 启动结果 |
---|---|---|
是 | jar | 错误 |
是 | war | 成功 |
是 | run | 成功 |
是 | main | 404 |
否 | jar | 错误 |
否 | war | 成功 |
否 | run | 成功 |
否 | main | 成功 |
启动成功后,就可以正常访问。
在SpringBoot中整合JSP也是突出了SpringBoot的主要特性——方便。基本上导入2个依赖,加一行配置就可以跑起来了。省去了很多配置文件。