war和war exploded的區別
war模式:將WEB工程以包的形式上傳到服務器 ;
war exploded模式:將WEB工程以當前文件夾的位置關系上傳到服務器;
>> war包是自己打包生成的,如pom文件中<packaging>war</packaging>則在項目build的構建的時候將打包成一個war包,默認是一個已經完成準備部署發布的項目包;>> war exploded包是IDEA在工程創建的時候就自動生成的,是給開發者放在服務器上或本機調試用的,并不是一個已完成的準備發布的項目包。
在idea Tomcat部署時選擇不同包的區別
1. 當我們在tomca的Deployment里面部署的是war包的話,就沒有“Update classes and resources”
,只有部署war exploded包的時候才會出現“Update classes and resources”
。如下面圖所示:
2. 兩種情況下部署后項目的存放目錄不同
war模式:將WEB工程以war包的形式上傳到Tomcat服務器 ,存放于服務器的webapps目錄下
;
war模式這種可以稱之為是發布模式,看名字也知道,這是先打成war包,再發布;
**war exploded模式:**將WEB工程以當前文件夾的位置關系上傳到服務器;也就是說不會再Tomcat服務器的webapps目錄下
。
war exploded模式這種可以稱之為開發調試模式,默認是項目所在目錄的target目錄下
。
具體驗證可通過獲取上下文環境絕對路徑來看:
String contextPath = request.getSession().getServletContext().getRealPath("/");
war包模式始終是獲取到的路徑為:C:\Program Files\apache-tomcat-7.0.82\webapps\assets
Tomcat所在位置war exploded包模式獲取到的路徑為:C:\projects\sx_zc\asset_sx\target\assets
項目所在的target位置
On ‘Update’ action 和 On Frame deactivation
On Update action
“On Update Action”是指當代碼改變的時候,需要IDEA為你做什么
,比如更新了靜態資源或者java代碼后對應的行為;
一般選擇“Update classes and resources”,里面有四個選項
-Update resources :更新的是資源文件(*.jsp,*.xml等,不包括java文件),點擊‘update’就會立刻生效-Update classes and resources : 同時包含java文件和資源文件的,點擊‘update’就會立刻生效run運行模式下(jsp 立即生效,java 需要redeploy才可生效);debug調試模式下(java、jsp 都立即生效)兩種運行模式下,修改resources資源文件都是可以立刻生效的。-Redploy : 重新部署,只是把原來的war刪掉,不重啟服務器-Restart : 重啟服務器
On Frame deactivation
指失去焦點(比如你最小化了IDEA窗口),需要IDEA為你做什么
。一般選擇“Do nothing”最好
,官方也默認的是“Do nothing”
作用:失去焦點的情況下 自動觸發
,而開發過程中 可能需要查詢資料 或 與人聊天 或干其它事,IDE需要不停的失去焦點。每次失去焦點就自動觸發 update ,CPU一下子 費很多,電腦瞬間變慢,所以沒有必要這樣
監聽整個頁面的配置,一修改就立即更新(idea 官方的推薦是設置為Do nothing,原因是可以節省idea消耗的內存)
-Do nothing : 不做任何事-Update resources : 一修改立刻更新,修改的resources文件都會立刻生效-Update classes and resources : 一修改立刻更新,修改的java ,resources文件都會立刻生效(與On update action中的Update classes and resources一樣,也是運行模式修改的java文件不會生效,debug模式修改的java文件會立刻生效)
總結
開發調試時建議選擇war exploded包進行部署,正式上線時選擇war包部署