如果你在网上搜Spring Boot的教程,会发现模板引擎清一色用的Thymeleaf,为什么很少人用JSP?因为Spring Boot官方已经不推荐使用JSP了,文档中原话这么说的:
If possible, JSPs should be avoided. There are several known limitations when using them with embedded servlet containers.
Spring Boot 文档
在内置servlet容器中运行的时候,JSP会有一些限制:
- 我们知道Spring Boot的打包方式有两种,一种jar包,一种war包。两种打包方式可以通过命令java -jar dist.jar或者java -jar dist.war运行。war包也可以单独部署在独立的Servlet容器(比如Tomcat,Jetty)中。使用jar包的时候不支持JSP,使用war包的时候支持
- Undertow不支持JSP,话说Undertow国内用的比较少吧
- 自定义的error.jsp不会覆盖Spring Boot默认的错误处理页面
既然如此,你如果需要使用JSP,就得打成war包,官方的代码仓库中自带有使用JSP的样例。当你需要迁移老项目到Spring Boot的时候,肯定会派上用场。
对于新项目,我的建议是你喜欢用哪个模板引擎,就用哪个。如果没有熟悉的,那就把FreeMarker、Groovy、Thymeleaf和Mustache全都看一遍,选择最合适的。