IDEA部署tomcat原理小解

IDEA部署tomcat原理小解 最近看到一个视频对IDEA部署启动tomcat有了新的理解。下面和大家分享一下。 1.tomcat部署项目的三种方式 在纯tomcat环境下,不使用开发工具tomcat部署项目有三种方式。

①把html放到tomcat的webapps目录下的hello文件夹中,如下图。

启动tomcat访问http://localhost:8080/hello/hello.html就能够连接到hello.html了。 这里稍微提一下虚拟路径即web项目中ContextPath,servlet中配置的是ServletPath。上面这种方式配置的虚拟路径”/hello”和项目路径是相等的。但是这个方法配置的web项目都要在webapps的目录下。eclipse的web项目部署方法应该就是这种。 ②第二种方式如下图:

区别与第一种方式,第二种的项目放在了d盘,没有在webapps的目录下。那么tomcat如何访问里面的资源呢?见下图

在tomcat的conf下有一个server.xml文件打开编辑文件在上图所圈位置加入了一段代码

<Context docBase = "D:hello" path = "/hi" /> 1 不难发现,其中docBase指的是项目路径,path为虚拟路径。这里项目路径就和虚拟路径不一致了。大家可以联想到一个点:request有一个很常用的方法,就是request.getContextPath(),其实获取的就是这里的Context标签中属性名为path的值。启动tomcat,访问http://localhost:8080/hi/hello.html即能正确连接资源hello.html。使用eclipse的同学不妨去看一下自己的conf下的server.xml,会发现之前的web项目都有在context标签内配置。 ③以上两种都不是idea的部署方式,idea的部署方式是第三种.。 在tomcat的confCatalinalocalhost新建一个xml文件如下图

还是熟悉的配置,但是不需要在server.xml中修改,防止手残,把主要配置改了。 访问http://localhost:8080/hey/hello.html即可访问到资源。这里要说明一下,第三章方法的虚拟路径为xml文件名字,而不是xml中配置的path,当你修改xml文件中的path与xml文件名字不一致时,以xml文件名字作为虚拟路径可以访问到资源,而用path中配置作为虚拟路径则访问不到资源。 2.idea的部署方式 在idea中启动tomcat时会看到下面这段日志

这里使用的是之前做的小demo,不用在意。我们把路径复制在计算机中打开

打开下图的xml文件

可以从配置中看出虚拟路径配置的和xml文件的名称一致。这个虚拟路径是我在idea的tomcat配置中的部署选项中配置的如下图

而项目的文件路径则在D:ideaworkmycrmoutartifactsmycrm_war_exploded。

这里有一个点蛮有意思: idea采用的是上面说的第三种部署方式,而第三种部署的虚拟路径其实是xml文件名就算不配置Context标签中的Path也能访问到资源,那么idea为什么多此一举配置了 path而且path中的值和xml文件名一致,是单纯的巧合吗,有什么意义? 其实很简单,前面提到request.getContextPath获得的是Context标签中属性名为path的值。但是第三种部署的虚拟路径其实是xml文件名,保持一致可以认为获得的COntextPath就是虚拟路径。这样就可以访问到资源页面

经验分享 程序员 微信小程序 职场和发展