eclipse部署项目到webapps下,如何不带contextPath来访问
2012-06-20 20:44
274 查看
自从用回了eclipse,从昨晚就在想这么一个事,你看啊,我们比如有个项目应用名字
叫app,部署到外网使用,要访问的话基本上是不带项目名的(也就是contextPath名,地
址如http://221.221.158.46/index.do),因为在外网的tomcat的server.xml,一般
配置了Context,并且path为空,使得项目文件目录和tomcat目录分别在两个地方(如根目
录/www下),但是在本地环境情况下,这个事情还有点绕,还拿app这个作例子。
我建了一个app的Dynamic Web Project,出于以前myeclipse的习惯,我把WebContent改成了WebRoot,然后用它提供的servers配置tomcat,双击Servers标签中新建好的tomcat项,进入配置界面,其中Server Locations选择了Use Tomcat installation(takes control of Tomcat installation),下面的deploy path可以填任意你想部署的地方,如f:\target,这样就与webapps分开了,完成后就可以右击tomcat项,选择add/remove将我们的app项目扔到那边去,之后点击publish完成本机部署。
观察f:\target目录,发现里面有app目录和ROOT目录,至于那个ROOT是个打酱油的先不用管它,既然IDE敢把app放到了另外的目录里,说明一定改了我们tomcat的server.xml文件,现在内容多了一条Context元素,内容为
<Context docBase="F:\target\app" path="/app" reloadable="true" source="org.eclipse.jst.jee.server:app"/>
我们现在可以通过http://localhost:8080/app来访问了,但这不是我想要的,我想用http://localhost:8080直接访问app,所以path应该为空,手动改它肯定是不行的,因为IDE已经直接连到了这个文件,每次发布它都会把path修改回去。
在myeclipse的时候,是可以通过项目设置,让它直接把app目录里面的内容,直接部署到webapps/ROOT下面,这样就可以不带ContextPath来访问,但是这样本身就很奇怪,我们看不到三条腿的猫了,就算是静态页面,也是人家自身带的东西,怎么能让你随便给覆盖了呢,但是我还是试着在eclipse3.6里找了找相关的配置,还真有点收获。
右击app项目,选择Properties,下面有一项Web Project Settings,里面有一条Context root,好像有点像了,默认是app,我把它改成了ROOT,保存一切都没有问题,本以为会和myeclipse是一样的结果,但是部署完发现结构不对头了,无论如何IDE都会把app这个目录也会复制到ROOT目录里,这和上面myeclipse行为不一致了,我还是没有办法脱离contextPath来访问,就算是deploy到webapps的ROOT,里面依然有个可恨的app目录。
这个困扰了我挺长的时间,网上好像也没有提到这个问题,直到我又看了server.xml,发现path属性的值改成了"/ROOT",原来 context root的修改对应的是path属性,这样的话我只需要把context root设置成空,相应path属性不也为空了么,这样就搞定了,但是人家IDE是不让你这么干的,Context root cannot be empty提示着我要走一些歪路子了,只能用最后一招,看看能不能改改你生成的IDE配置文件。
最终找到项目所在目录.settings\org.eclipse.wst.common.component文件,发现里面有一条<property name="context-root" value="ROOT"/>,对应的就是上面的那条设置,直接value改成空,保存退出,依然部署到f:\target下面,重新 publish项目,发现结构还是f:\target\app,但是惊喜的发现,server.xml中path属性已经是空了,而docBase是我们喜欢的F:\target\app,尽管有个不认识的source="org.eclipse.jst.jee.server:app"属性,但和我无关了,这下用http://localhost/index.jsp,就可以直接访问我们部署好的app应用页面了
我不知道这样做是不是最正确的,但是确实解决了问题,首先实现了部署目录和tomcat的webapps分离,然后消除了contextPath访问名字,IDE这个东西有时候能把人折腾死,有时真是觉得功夫在身外
叫app,部署到外网使用,要访问的话基本上是不带项目名的(也就是contextPath名,地
址如http://221.221.158.46/index.do),因为在外网的tomcat的server.xml,一般
配置了Context,并且path为空,使得项目文件目录和tomcat目录分别在两个地方(如根目
录/www下),但是在本地环境情况下,这个事情还有点绕,还拿app这个作例子。
我建了一个app的Dynamic Web Project,出于以前myeclipse的习惯,我把WebContent改成了WebRoot,然后用它提供的servers配置tomcat,双击Servers标签中新建好的tomcat项,进入配置界面,其中Server Locations选择了Use Tomcat installation(takes control of Tomcat installation),下面的deploy path可以填任意你想部署的地方,如f:\target,这样就与webapps分开了,完成后就可以右击tomcat项,选择add/remove将我们的app项目扔到那边去,之后点击publish完成本机部署。
观察f:\target目录,发现里面有app目录和ROOT目录,至于那个ROOT是个打酱油的先不用管它,既然IDE敢把app放到了另外的目录里,说明一定改了我们tomcat的server.xml文件,现在内容多了一条Context元素,内容为
<Context docBase="F:\target\app" path="/app" reloadable="true" source="org.eclipse.jst.jee.server:app"/>
我们现在可以通过http://localhost:8080/app来访问了,但这不是我想要的,我想用http://localhost:8080直接访问app,所以path应该为空,手动改它肯定是不行的,因为IDE已经直接连到了这个文件,每次发布它都会把path修改回去。
在myeclipse的时候,是可以通过项目设置,让它直接把app目录里面的内容,直接部署到webapps/ROOT下面,这样就可以不带ContextPath来访问,但是这样本身就很奇怪,我们看不到三条腿的猫了,就算是静态页面,也是人家自身带的东西,怎么能让你随便给覆盖了呢,但是我还是试着在eclipse3.6里找了找相关的配置,还真有点收获。
右击app项目,选择Properties,下面有一项Web Project Settings,里面有一条Context root,好像有点像了,默认是app,我把它改成了ROOT,保存一切都没有问题,本以为会和myeclipse是一样的结果,但是部署完发现结构不对头了,无论如何IDE都会把app这个目录也会复制到ROOT目录里,这和上面myeclipse行为不一致了,我还是没有办法脱离contextPath来访问,就算是deploy到webapps的ROOT,里面依然有个可恨的app目录。
这个困扰了我挺长的时间,网上好像也没有提到这个问题,直到我又看了server.xml,发现path属性的值改成了"/ROOT",原来 context root的修改对应的是path属性,这样的话我只需要把context root设置成空,相应path属性不也为空了么,这样就搞定了,但是人家IDE是不让你这么干的,Context root cannot be empty提示着我要走一些歪路子了,只能用最后一招,看看能不能改改你生成的IDE配置文件。
最终找到项目所在目录.settings\org.eclipse.wst.common.component文件,发现里面有一条<property name="context-root" value="ROOT"/>,对应的就是上面的那条设置,直接value改成空,保存退出,依然部署到f:\target下面,重新 publish项目,发现结构还是f:\target\app,但是惊喜的发现,server.xml中path属性已经是空了,而docBase是我们喜欢的F:\target\app,尽管有个不认识的source="org.eclipse.jst.jee.server:app"属性,但和我无关了,这下用http://localhost/index.jsp,就可以直接访问我们部署好的app应用页面了
我不知道这样做是不是最正确的,但是确实解决了问题,首先实现了部署目录和tomcat的webapps分离,然后消除了contextPath访问名字,IDE这个东西有时候能把人折腾死,有时真是觉得功夫在身外
相关文章推荐
- eclipse部署项目到webapps下,如何不带contextPath来访问
- eclipse部署项目到webapps下,如何不带contextPath来访问
- eclipse部署项目到webapps下,如何不带contextPath来访问
- eclipse部署项目到webapps下,如何不带contextPath来访问
- 如何让Eclipse自动部署项目到Tomcat的webapps下
- 如何解决在eclipse部署项目无法访问到Tomcat预览界面
- eclipse中把web项目部署在tomcat中,可以使用浏览器访问,但是无法在tomcat目录中的webapps中找到?
- eclipse开发web项目时如何自动将web项目部署到tomcat的webapps目录下
- 关于eclipse部署到tomcat的项目可正常访问,而单独打包为.war放在tomcat的webapps下的项目无法正常访问的解决思路
- eclipse部署项目正常启动,访问返回404,部署到tomcat中可以正常访问
- eclipse部署tomcat修改项目访问路径(虚拟路径)
- tomcat中部署项目能正常启动和访问,eclipse上部署项目,能正常启动,不能访问*
- eclipse下部署tomcat项目 报错ClassNotFund:org.springframework.web.context.ContextLoaderListener
- Eclipse自动部署项目到Tomcat的webapps下的有效方法
- eclipse部署web项目至本地的tomcat但在webapps中找不到
- eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上
- 将Eclipse项目自动部署到Tomcat的webapps目录下
- eclipse部署web项目至本地的tomcat但在webapps中找不到
- 将Eclipse项目自动部署到Tomcat的webapps目录下
- eclipse部署web项目至本地的tomcat但在webapps中找不到