如:A项目:D:\javaeclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp7\wtpwebapps\A 说明:(1)D:\javaeclipse\workspace\ 是eclipse当前workspace ,.metadata是eclipse生成的目录,表示当前 D:\javaeclipse\workspace 是eclipce是工作空间。(2).metadata\.plugins 是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 应该都有自动重新发布工程的功能。)
时间: 2024-10-19 14:01:28