ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IDEA部署tomcat原理小解

2020-02-20 11:43:28  阅读:220  来源: 互联网

标签:xml tomcat 路径 小解 IDEA 虚拟 path hello


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的conf\Catalina\localhost新建一个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:\ideawork\mycrm\out\artifacts\mycrm_war_exploded。

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

END!
————————————————
版权声明:本文为CSDN博主「314程序员」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41116058/article/details/81435084

bingguang1993 发布了111 篇原创文章 · 获赞 67 · 访问量 51万+ 他的留言板 关注

标签:xml,tomcat,路径,小解,IDEA,虚拟,path,hello
来源: https://blog.csdn.net/bingguang1993/article/details/104407385

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有