IDEA JSP 热部署

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 和静态资源 同上

HTML CSS 修改后不更新

完成上面的操作,很大一部分发现html的修改能够及时更新了,但是js或者jsp的修改却一直没有更新,这是为什么呢?
答案是:浏览器的坑

我是使用的chrome,F12到调试窗口

勾选禁用缓存

总结

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

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

作者:kevin2020
链接:https://ld246.com/article/1516041883689
来源:链滴
协议:CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/

发表评论