当我们用Gradle做为项目管理工具时,创建一个SpringBoot外置TomCat项目,往往不能够正确启动Tomcat服务器,易出现以下几个问题:
- 找不到web模板
Tomcat找不到web模块,就会导致开启服务器时候报类似 XXXX.war not found for the web module 的错误!出现这种情况的主要原因是:在Gradle项目管理工具下,Gradle编译器不会自动创建exploded目录,所以Tomcat是无法找到这个目录
但是Tomcat需要找到这个目录才能正常运行,所以,没有的话,肯定会抛出异常,如果想不抛出异常,有两种设置
- 在tomcat服务器的编辑配置中,将服务器启动时部署设置为
.war结束的包
,这种情况,容易出现很多问题。 - 如果是以.war(exploded)结束的包进行部署,那么需要将构建工具Gradle在构建对选择框中,选择
intelliJIDEA
具体流程如下图:
如何使用SpringBoot中外部Servlet的容器
使用内置Servlet容器,需要将应用打包成jar包,Jar包通过java激活内置的Servlet容器,其特点为:
- 优点:简单、方便
- 缺点:不支持Jsp、可定制性比较差,想做一些性能优化可配置性差
使用自定义的Servlet容器,需要将应用打包成war包,然后通过外部的Servlet容器进行加载
- 优点:可支持JSP。可配置性强!
具体创建步骤如下: