Tomcat 热部署

热部署

Web 项目开发时,经常会修改 resource 文件和 java 文件,往往需要重新部署才能生效。
热部署,即不需要重新部署,就能生效。

以下基于 IDEA 实现热部署

部署方式

两种部署方式:war 和 war exploded

war:将WEB工程以包的形式上传到服务器 ;
war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器;

(1)war 模式这种可以称之为是发布模式,看名字也知道,这是先打成 war 包,再发布;

(2)war exploded 模式是直接把文件夹、jsp 页面 、classes 等等移到 Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。

获取上下文路径时,第一种方式基于 Tomcat 位置;第二种基于项目 target 位置

on update action 与 on frame deactivation

on update action

顾名思义触发 update 时,执行以下哪种动作
update resources ---- 更新静态的资源,比如 html,js,css 等 运行模式和调试模式都是立即生效。
update classes and resources ---- 更新 java,jsp 和静态资源(
1. java 修改后,会被编译成.class 然后覆盖到 target/kao 文件夹下,IDE 调试模式的情况下,立即生效。IDE 运行模式下,不立即生效,需要 redeployed 才可生效。
2. jsp 修改后,再次被访问的时候,会自动更新,重新编译成.java---->.class 保存在 tomcat 的 work 目录下。由于是访问时才检测是否修改,是否需要重新编译,所以 IDE 运行模式 和 IDE 调试模式下,都是立即生效。刷新下页面就可);
redeployed ----- 重新部署,发布到 tomcat 里,不重启 tomcat,而是把原来的删掉,然后重新发布;
restart server ----- 重启 tomcat

on frame deactivation

顾名思义 IDEA 窗口失去焦点时,触发以下哪种动作
Do nothing --------- 什么都不做
update resources ---- 更新静态的资源,比如 html,js,css 等 运行模式和调试模式都是立即生效。
update classes and resources ---- 更新 java,jsp 和静态资源 同上

总结

on update action 设置为 update classes and resources
on frame deactivation 设置为 do nothing

on frame deactivation 默认也是 do nothing,不然你每次切个窗口,都会更新
值得注意的是,类似于 application 这种配置文件应该是不会更新,需要重新部署才能生效