設置ItelliJ IDEA里修改jsp不重啟tomcat
On Upate Action 與 On Frame Deactivation 這兩個選項的設置,依賴於 項目的部署方式 是war包 還是 exploded ,看下面的gif:
這里實在是太靈活了,如果要講 太費時間了,我們只講exploded模式下的設置,因為這個我們用的最多,開發模式,開發完成后 直接用maven的 package命令打包就行了,所以用的最多的 也是最靈活的就是exploded 開發模式。exploded模式 實際運行的就是target目錄下的kao文件夾。
首先來看 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 ,意思是 IDE 失活時 做什么,就是說 IDE 失去焦點時 做什么。
Do nothing --------- 什么都不做
update resources ---- 更新靜態的資源,比如html,js,css等 運行模式和調試模式都是立即生效。
update classes and resources ---- 更新java,jsp和靜態資源 同上。
驗證上方的結論看如下GIF:
靜態資源不用測試了,測試 On Update Action 的 (update classes and resources)在debug模式 與 運行模式下的差別。
1.運行模式下,jsp是 update classes and resources 是立即生效的,但是.java文件修改后 並不會立即生效。
2.debug調試模式下,jsp和java文件修改 都會立即生效:
3.測試on frame deactivation 即IDE 失去焦點時自動做一些事, 我們測試 讓其update classes and resources ,以調試模式為例,運行模式除了java 修改不會自動生效,其它一致;
總結,這樣設置是最佳的選擇:
因為On frame deactivation IDE失去焦點的情況下 自動觸發,而開發過程中 可能需要查詢資料 或 與人聊天 或干其它事,IDE需要不停的失去焦點。每次失去焦點就自動觸發 update ,CPU一下子 費很多,電腦瞬間變慢,所以沒有必要這樣,設置為Do nothing 最好,官方也默認的是 Do nothing。
On Update action ------- update classes and resources ----- 運行模式下(jsp 立即生效,java 需要redeploy才可生效)
On Update action ------- update classes and resources ----- 調試模式下(java、jsp 都立即生效)
=================完結了!!!!!!!!這塊非常靈活,這篇博客研究了一天 才寫出來,很多時候 不知道 如何組織 如何寫,才能更加 簡單明了。
關於一些小知識說明:
C:\Users\del-berlin.IntelliJIdea2017.1\system\tomcat\Unnamed_kao_4\work\Catalina\localhost\kao\org\apache\jsp ,jsp再第一次被訪問時,會被編譯成java 然后再被編譯成class ,然后放到 tomcat的work目錄下,但是IntelliJ 里,由於部署方式的原因 實際上是保存到了 上面的目錄里,而實際的項目運行中是保存到了tomcat的work目錄里: