IDEA部署tomcat原理小解

本文详述IDEA中Tomcat的三种部署方式,包括直接放置于webapps目录、通过server.xml配置,以及IDEA特有的在Catalinalocalhost下创建XML文件的方式。深入解析IDEA如何通过第三种方式智能配置虚拟路径,实现项目资源的高效访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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!
————————————————
版权声明:本文为优快云博主「314程序员」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_41116058/article/details/81435084

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值