简化总结一下吧,也是看的百度的一些零散的:
一、背景:
1、首先,在Eclipse中新建一个hello工程,Workspace的位置在c:\eclipse\workspace,所以hello工程的位置就是在%Workspace%\hello\这个文件夹中。
2、然后Run as中选择“Run on server”,这时在浏览器(Eclipse当中的Web Browser)中就有了我们想看到的东西,其中url=http://localhost/hello/(隐含index.jsp)!
二、简单原理说明:
1、在MyEclipse的做法(MyEclipse有,Eclipse没有的方法)是:将你的工程拷贝一份到Tomcat目录中的webapps\目录当中,这样Tomcat就多了一个站点,自然可以访问。
2、在Eclipse中的做法不太一样,Eclipse调用了JDK中的JAVAw.exe,并且指定了许多参数,如:
%JAVA_HOME%\bin\javaw.exe
-Dcatalina.base=C:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1 "-Dcatalina.home=c:\Tomcat 6.0" -Dwtp.deploy=C:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps "-Djava............."
此时,打开文件夹:
C:\eclipse\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp1 你可以看到的是类似Tomcat目录下的结构,在wtpwebapps中就有你所有的工程拷贝(即Workspace目录下的project)。如果你访问http://localhost可能提示你404找不到页面,但是在你的Tomcat下的ROOT里确实有文件,并且现在你用Tomcat的webApps下的站点都无法使用,原因就在于Eclipse更改了(使用参数,临时更改,关闭Eclipse中的Tomcat服务,Tomcat恢复原样)Tomcat的webapp主目录(就是-Dcatalina.base=...)。
3、eclipse映射的这个文件夹tmp1结构,与tomcat的根目录结构基本一致。
我们看找到下面这个标签
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
在下面就有了两个Context的虚拟目录项,一共两个:
第一个指定了ROOT(这里面什么文件也没,所以无法访问http://localhost/),和工程没关系,第二个和第二个是我的Hello工程,看看,都有了docBase和相对url的path了吧。所以在浏览器中才能访问到hello的jsp页面。
第一个:Context
<Context docBase="C:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\ROOT" path="" reloadable="false"/>
第二个:Context
<Context docBase="C:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\hello" path="/hello" reloadable="false" source="org.eclipse.jst.jee.server:hello"/>
写在最后:
路径太深,也不方便,手动修改一下eclipse中工程的发布路径就好,注意修改路径名webapps!
如下图(先清空tomcat中的所有工程,再双击tomcat,即可修改)
最后再啰嗦几句吧:
<Context docBase="C:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\hello" path="/hello" reloadable="false" source="org.eclipse.jst.jee.server:hello"/>
这个 source="org.eclipse.jst.jee.server:hello",它实际上并不是直接给 Tomcat 用的,而是eclipse调用插件在 "Publish" 时处理过一次后才交给 Tomcat。
以上就是对这部分小地方的大体了解。(多多交流和补充,靠各位了!新年快乐)
共同学习,写下你的评论
评论加载中...
作者其他优质文章