[idea] tomcat中war 和 war exploded的區別
阿新 • • 發佈:2019-01-01
war和war exploded的區別
在使用idea開發專案的時候,部署Tomcat的時候通常會出現下邊的情況:
是選擇war還是war exploded這裡首先看一下他們兩個的區別:
war模式:將web工程以war包的形式上傳到伺服器
war exploed模式:將web工程以當前資料夾的位置關係上傳到伺服器
- war模式這種可以稱之為是釋出模式,看名字也知道,這是先打包war包,再發布;
- war exploded模式是直接把資料夾,jsp頁面,classes等等移到Tomcat部署資料夾裡面,進行載入部署。因此這種方式支援熱部署,一般在開發的時候也是用這種方式。
- 在平時開發的時候,使用熱部署的話,應該對Tomcat進行相應的設定,這樣的話修改的jsp介面什麼的東西才可以及時的顯示出來
修改箭頭指向的位置,這樣的話就可以實現熱部署。
使用war模式開發的時候遇到的坑
專案程式碼的位置如下:
上述專案為SSM專案
部署使用的Tomcat位置:
用於獲取上下文環境絕對路徑的程式碼:
String contextPath = request.getSession().getServletContext().getRealPath("/");
兩種方式的實驗過程和結果:
在使用war模式開發的時候,通過下邊這段程式碼獲取專案的相對路徑:
String contextPath = request.getSession().getServletContext().getRealPath("/");
war模式始終是獲取到的路徑如下:
其中c:\Software\apache-tomcat-8.0.32
是我Tomcat的所在位置。
可以看出通過war模式
是最終打包部署到Tomcat的位置。
然後再看看war exploaded模式
,同樣進行設定,運行同一段程式碼,執行結果如下:
可以看出最終得到的是我這個專案的位置,其實就是這個專案target的位置。
總結
根據上述的實驗結果可以看到這兩種方式的部署方式是不一樣的,因些在獲取專案的相對路徑的時候得到的結果是不一樣的。