如:A項目:D:\javaeclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp7\wtpwebapps\A
說明:
一、D:\javaeclipse\workspace\表示當前 D:\javaeclipse\workspace 是eclipce是工作空間。
二、.metadata\.plugins
.metadata是eclipse生成的目錄,是eclipse的插件目錄,tomcat是以插件的形式加入到eclipse
里的,因此eclipse的tomcat目錄不是真實tomcat安裝根目錄,而是eclipse工作空間里的
.metadata\.plugins\org.eclipse.wst.server.core。
(3)至於tmp7 ,那是在eclipse new 一個tomcat server時,就會在core下創建一個tmp1,
2個server就tmp1 和tmp2 ... 以此類推,我建了7個tomcat server,因此會有tmp7,
而我的A就在這個tmp7下部署。這里的tmp7 表示一個臨時的tomcat(里面的目錄結構
有點像tomcat安裝路徑下的目錄結構,可以理解為一個tomcat復制品,我猜tmp是臨時的意思。)
(4)wtpwebapps
通常,我們用tomcat手動部署項目時,工程的發布位置有2種:1是指conf里的配置文件中指定webapp
的路徑,也就是web工程路徑,這種從開發到部署都是用同一個目錄下的文件,沒有復制或打包;
第2種是把web工程打包成war包復制到{tomcat_home}/webapps目錄下,tomcat自動識別這個war包,
解壓war包得到一個web工程,並生成相關jsp文件放到D:\javaeclipse\workspace\apache-tomcat-6.0.37\work\Catalina\localhost下
(注意,在localhost下的只是web文件,不是全部工程文件,全部文件應該去webapps下找),
這種方式的發布有個麻煩的地方,就是修改工程后要重新打包並把新war包放到webapps下,就算你只
是修改了一個jsp文件上的一個文字或標識符,也要重新生成war包來發布
(war包括有改后綴為rar來查看里面的內容,但是,修改里面的文件再改回war后綴好像不能被tomcat識別,
這點不確定,待測試才知道)而這里的wtpwebapps ,應該是相當於實際tomcat的webapps目錄,
wtpwebapps 里的A相當於 webapps下 的A.war生成的A工程,應該是省下來生成war包拷貝到webapps目錄的操作。
換言之,工程的發布文件就在這個webapps\A 或 eclipse配置的tomcat-wtpwebapps\A 里。瀏覽器請求訪問的就是寫A文件夾,而非我們的eclipse下的工
作空間workspace里的真實工程文件。
總結:
這樣就可以解釋,為什么我們在eclipse修改了web工程里的一個jsp/js或java文件后,eclipse會先編譯(building,
有沒有發布工程eclipse都會重新編譯這個工程,跟tomcat無關,這是eclipse的自檢查功能),然后publish 到eclipse
配置的tomcat上,也就是publish到wtpwebapps上。
(如果eclipse沒有配置tomcat,而是手動發布A,那么,eclise執行完building后,我們要重新生成war包去覆蓋
tomcat_home\webapps下的原理舊的war包,tomcat會監控war包發生變化而重新發布這個web工程,瀏覽器才
能請求到新的jsp或servlet。
當然,如果采用的是 tomcat_home\conf\server.xml配置的方式發布,就省事多了,eclise上修改完了,building完
成后,tomcat默認會自動重新發布這個工程A。一般的web應用服務器,如tomcat jboss resin 應該都有自動重新發布工程的功能。)