war和war exploded值的是什么?

idea创建一个java ee项目后,我们需要配置相关的容器才能运行,这里的war指的是tomcat中的工程项目的包形式。

创建java ee 项目
image.png

在项目界面的右上角,配置tomact容器
image.png

正式配置

配置的时候,一定要配置Deployment,才能跑起我们的web项目。
在配置的时候,有两个选项,一个是war,一个是war exploded。

image.png

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

war模式就是先把工程项目打包成war文件,再发布;
war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。

热部署和非热部署

war exploded :
image.png

war :
image.png

通过上面的图片可以看出,热部署的话就多出了两个热部署的相关选项,这可以增加我们项目的开发速度。

target

并且我们也可以观察到target目录下,两种方式生成的文件夹是不一样的,证实了war exploded是不会生成war文件的。
war :
image.png
war exploded :
image.png

路径问题

这两种方式得部署方式是不一样的,因此在获取项目的相对路径的时候得到的结果是不一样的

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

通过上面代码获取项目的相对路径时:
war 模式获得的是Tomcat所在目录下该子项目的位置。
war exploded 模式获得的是该项目在工作区下的目标路径。

如示例,tomcat位于D:\Program Files\apache-tomcat-9.0.50,demo_war是一个测试项目,位于C:\Users\Heawill\Desktop\demo。
war打印的路径:
D:\Program Files\apache-tomcat-9.0.50\webapps\demo_war
war exploded打印的路径:
C:\Users\Heawill\Desktop\demo\target\demo-1.0-SNAPSHOT\

对比后,文件内容都是一样的。
image.png

并且通知实验可知,war会在tomcat的webapps下生成对应的工程项目目录,war exploded则不会。

扩展

tomact有一个自带的配置工具,访问http://xxx:xxx/manager即可。
对应的项目是tomcat自带的webapps下的manager项目。
密码看:
https://jingyan.baidu.com/article/219f4bf7f412e3de452d3843.html

参考

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