启动的war包需要ctrl c一次才出现日志_Tomcat部署时war和war expolded的区别

d6f1c5d53d6802f41d1daec9e448c13b.png

1.Tomcat部署时war和war expolded的区别

问题场景:学习VUE的过程中,使用Axios接收后端数据,利用脚手架创建WEBAPP后,配置Tomcat模板的过程中,需要设置导出包。在Depoyment下,有两种选项:1.war包 2.war expolded包,早已经忘了当时老师讲的时候是怎么回事,于是想分析二者的区别。

e0692d01d584dfd2d92abb1159cdd64c.png

解决办法:https://www.pianshen.com/article/18231652322/

https://blog.csdn.net/xlgen157387/article/details/56498938

根据CSDN的解决办法说War和war exploded最后获取的地址是不一样的,于是我测试了一下

测试前提:我的项目地址为:H:\ideaproject\blog

Tomcat地址为:H:\XXX\JAVA工具\apache-tomcat-8.5.56-windows-x64

Request.getSession().getServletContext() 获取的是Servlet容器对象,相当于tomcat容器了。getRealPath("/") 获取实际路径,“/”指代项目根目录,

 String contextPath = request.getSession().getServletContext().getRealPath("/");

1.1二者区别

 war模式:将WEB工程以包的形式上传到服务器 ;war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器;

1.2war模式

 war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布;工程target目录下会生成war包, 并且解压后的war包会被部署到tomcat的webapp 目录下注意:如果application-context 设置为 /, tomcat目录下不会有解压后的war文件,只有指定文件目录,才会生成文件夹,这个文件夹作为项目的根目录
1.2.1war模式下项目的相对路径

d884e784b4086799066f38f1358506c3.png

1.3war exploded模式

 war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的东西才可以及时的显示出来。如下图所示:

a9d92bdcc6768430274a93025aff5592.png


1.3.1war exploded模式项目的相对路径

bcc322a64a8a86aed05027610d091061.png

1.4 小知识点:怎么增加项目热部署

1.4.1增加依赖  
 <dependency>      <groupId>org.springframework.bootgroupId>      <artifactId>spring-boot-devtoolsartifactId>      <version>2.4.1version>    dependency>
1.4.2设置自动编译
 第一种:Ctrl+F9(只能在IDEA中刷新一次)第二种:进入setting 搜索compiler 勾选 Build Project automatically
1.4.3设置项目运行时自动编译
 Ctrl+shift+a搜索registry勾选compiler.automake.allow.when.app.running*(如果没有可不选)

1.5结论

IntelliJ IDEA它优秀的地方就是在于此,每创建一个新的WEB项目都会独立出一个TOMCAT服务, 其实最常用的是xxxx exploded这个包,它是在Tomcat运行时实际布署的内容,另外一个war一般没有找到它的输出地方;选exploded 才能让调试的时候及时修改的资源重载;

 经过后来资料的搜索,具体的加载位置是由 tomcat catalina.base决定的,这个值是Idea在启动的时候设置的。对于相对路径问题暂时保持疑问。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值