在Idea中默认的并不会把web项目真正的部署到Tomcat的webapps目录中,而是通过为每个web项目创建一个独立的Tomcat副本并在Tomcat副本中通过的Tomcat的Context组件完成项目的目录指定,在Context组件的docBase属性中会指定Idea对web项目编译后的目录out/artifacts/…..。
    image.png
    默认部署方式
    Idea会在C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat中为每个Web项目创建一个独立的Tomcat副本。
    image.png
    C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat\Unnamed_servletdemo_2\conf\Catalina\localhost目录中生成一个该项目的xml文件名称为:”项目名.xml”。
    image.png
    Idea通过执行Tomcat的catalina.bat启动脚本启动Tomcat,通过启动参数来指定启动Tomcat副本运行指定目录中的web项目。
    image.png
    Idaa在启动Tomcat之前会先在操作系统中设置一些临时环境变量,这些变量会被Tomcat的启动脚本所读取。
    image.png
    CATALINA_BASE:是Tomcat副本的工作目录
    CATALINA_HOME:是Tomcat的安装目录
    在Catalina.bat启动脚本运行时,会先去判断脚本中的CATALINA_HOME以及CATALINA_BASE是否为空,如果为空则使用Tomcat路径作为默认值。由于Idea在启动Tomcat之前已经设置了临时环境变量,所以tomcat在启动后就会运行部署在Tomcat副本中的web项目。
    image.png