war模式:將WEB工程以包的形式上傳到服務器tomcat的webapp下。前端
war exploded模式:將WEB工程以當前文件夾的位置關係上傳到服務器 war exploed部署時,不會將war包部署到tomcat中,也就是說tomcat的webapps目錄下不會出現當前項目的文件,若是將項目改成war部署的方式,application context設置爲/,tomcat也不會將項目部署到webapps中,由於application context就是項目再webapps路徑下項目的根目錄名。 web
好奇war exploded時是如何進行熱部署,也沒有將包存放到tomcat中,如何運行。 Tomcat 配置成War exploded,在運行時idea不會把項目放到tomcat webapps的路徑下,而是複製一份足夠的配置文件,到windows ${user.home}/.IntelliJIdea/System/tomcat或mac /Users/xxxxx/Library/Caches/IntelliJIdea2019.2/tomcat/Unnamed_itemplatform/conf/Catalina/localhost目錄下: 也就是說每一個項目都有屬於本身的一份tomcat配置,互不干擾。 每一個項目的配置文件夾中有一個/conf/Catalina/localhost/Root.xml。path是指在訪問此項目時,是否須要添加額外的路徑,若是爲空則直接使用域名或者ip就能夠訪問到該項目:127.0.0.1,這個值在idea中的Run/Debug Configurations中能夠配置: docBase是指要運行的項目的部署位置,F:\project\WiseEnergy\WiseEM-D\就是源代碼的位置,target是由maven構建後生成的,\target\webapps\WiseEM-D目錄就是maven build完成以後生成的項目。 也就是說,整個項目運行過程爲:首先maven build項目,將構建結果寫到項目的target目錄下,而後idea複製一份tomcat的配置文件到${user.home}/.IntelliIdea/system/tomcat中,以後啓動tomcat安裝目錄下的catalina.bat文件,tomcat讀取配置文件,找到項目位置,而後就運行起來。 war exploded支持熱部署的緣由,是因爲該模式下不是直接把文件夾、jsp頁面、classes等等移到tomcat\webapps\下。只要修改其後臺和前端代碼或者配置文件,F:\project\WiseEnergy\WiseEM-D\target\webapps\對應的目錄下的文件也會進行相應的改變,tomcat會運行此目錄下的項目,爲此能夠讀取到最新的源文件,所以這種方式支持熱部署。 war 和war exploded的不一樣模式下獲取的上下文路徑 String contextPath=request.getSession().getServletContext().getRealPth("/"); war模式是獲取tomcat的位置 war exploded是獲取項目target的位置。windows