如:A项目:D:javaeclipseworkspace.metadata.pluginsorg.eclipse.wst.server.core mp7wtpwebappsA
说明:
一、D:javaeclipseworkspace表示当前 D:javaeclipseworkspace 是eclipce是工作空间。
二、.metadata.plugins
.metadata是eclipse生成的目录,是eclipse的插件目录,tomcat是以插件的形式加入到eclipse
里的,因此eclipse的tomcat目录不是真实tomcat安装根目录,而是eclipse工作空间里的
.metadata.pluginsorg.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:javaeclipseworkspaceapache-tomcat-6.0.37workCatalinalocalhost下
(注意,在localhost下的只是web文件,不是全部工程文件,全部文件应该去webapps下找),
这种方式的发布有个麻烦的地方,就是修改工程后要重新打包并把新war包放到webapps下,就算你只
是修改了一个jsp文件上的一个文字或标识符,也要重新生成war包来发布
(war包括有改后缀为rar来查看里面的内容,但是,修改里面的文件再改回war后缀好像不能被tomcat识别,
这点不确定,待测试才知道)而这里的wtpwebapps ,应该是相当于实际tomcat的webapps目录,
wtpwebapps 里的A相当于 webapps下 的A.war生成的A工程,应该是省下来生成war包拷贝到webapps目录的操作。
换言之,工程的发布文件就在这个webappsA 或 eclipse配置的tomcat-wtpwebappsA 里。浏览器请求访问的就是写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_homewebapps下的原理旧的war包,tomcat会监控war包发生变化而重新发布这个web工程,浏览器才
能请求到新的jsp或servlet。
当然,如果采用的是 tomcat_homeconfserver.xml配置的方式发布,就省事多了,eclise上修改完了,building完
成后,tomcat默认会自动重新发布这个工程A。一般的web应用服务器,如tomcat jboss resin 应该都有自动重新发布工程的功能。)