war模式:將WEB工程以包的形式上傳到服務器 war exploded模式:將WEB工程以當前文件夾的位置關係上傳到服務器 war exploed部署時,不會將war包部署到tomcat中,也就是說tomcat的webapps目錄下不會出現當前項目的文件,若是將項目改成war部署的方式,application context設置爲/,tomcat也不會將項目部署到webapps中,由於application context就是項目再webapps路徑下項目的根目錄名。 好奇war exploded時是如何進行熱部署,也沒有將包存放到tomcat中,如何運行。 Tomcat 配置成War exploded,在運行時idea不會把項目放到tomcat webapps的路徑下,而是複製一份足夠的配置文件,到${user.home}/.IntelliJIdea/System/tomcat目錄下:前端
也就是說每一個項目都有屬於本身的一份tomcat配置,互不干擾。 每一個項目的配置文件夾中有一個/conf/Catalina/localhost/Root.xmlweb
path是指在訪問此項目時,是否須要添加額外的路徑,若是爲空,則直接使用域名或者ip就能夠訪問到該項目:127.0.0.1,這個值在idea中的Run/Debug Configurations中能夠配置:tomcat
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等等移到F:\project\WiseEnergy\WiseEM-D\target\webapps\下,只要修改其後臺和前端代碼或者配置文件,F:\project\WiseEnergy\WiseEM-D\target\webapps\對應的目錄下的文件也會進行相應的改變,tomcat會運行此目錄下的項目,爲此能夠讀取到最新的源文件,所以這種方式支持熱部署。服務器
war 和war exploded的不一樣模式下獲取的上下文路徑 String contextPath=request.getSession().getServletContext().getRealPth("/"); war模式是獲取tomcat的位置 war explodedapp