war和war exploded的區(qū)別
在使用idea開發(fā)項(xiàng)目的時(shí)候,部署tomcat的時(shí)候通常會(huì)出現(xiàn)下邊的情況:
是選擇war還是war exploded 這里首先看一下他們兩個(gè)的區(qū)別:
war模式:將web工程以包的形式上傳到服務(wù)器 ;
war exploded模式:將web工程以當(dāng)前文件夾的位置關(guān)系上傳到服務(wù)器;
(1)war模式這種可以稱之為是發(fā)布模式,看名字也知道,這是先打成war包,再發(fā)布;
(2)war exploded模式是直接把文件夾、jsp頁面 、classes等等移到tomcat 部署文件夾里面,進(jìn)行加載部署。因此這種方式支持熱部署,一般在開發(fā)的時(shí)候也是用這種方式。
(3)在平時(shí)開發(fā)的時(shí)候,使用熱部署的話,應(yīng)該對tomcat進(jìn)行相應(yīng)的設(shè)置,這樣的話修改的jsp界面什么的東西才可以及時(shí)的顯示出來。
修改箭頭指向的位置,這樣的話就可以實(shí)現(xiàn)熱部署。
使用war模式開發(fā)的時(shí)候遇到的坑
一、項(xiàng)目代碼的位置如下:
上述項(xiàng)目為ssm項(xiàng)目。
二、部署使用的tomcat位置:
三、用于獲取上下文環(huán)境絕對路徑的代碼:
1
|
string contextpath = request.getsession().getservletcontext().getrealpath( "/" ); |
四、兩種方式的實(shí)驗(yàn)過程和結(jié)果:
(1)在使用war模式開發(fā)的時(shí)候,通過下邊這段代碼獲取項(xiàng)目的相對路徑:
1
|
string contextpath = request.getsession().getservletcontext().getrealpath( "/" ); |
war模式始終是獲取到的路徑如下:
其中c:\software\apache-tomcat-8.0.32 是我tomcat的所在位置。
可以看出通過war模式是最終打包部署到tomcat的位置。
(2)然后再看war exploded模式,同樣進(jìn)行設(shè)置,運(yùn)行同一段代碼,運(yùn)行結(jié)果如下:
可以看出最終得到的是我這個(gè)項(xiàng)目的位置,其實(shí)就是這個(gè)項(xiàng)目target的位置。
五、總結(jié)
根據(jù)上述(1)(2)的實(shí)驗(yàn)結(jié)果可以看到這兩種方式得部署方式是不一樣的,因此在獲取項(xiàng)目的相對路徑的時(shí)候得到的結(jié)果是不一樣的。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/xlgen157387/article/details/56498938