什么是war包?war包该怎么运行?

什么是war包?war包该怎么运行?

很多学习 java 的小伙伴都听过 jar 包,但未必听说过 war 包。小编学习了多年的 java,也是在某次期末作业中老师要求打 war 包提交作业的时候才知道有这种东西,为此还对怎么打 war 包和 war 包怎么运行困扰了许久。今天小编就来介绍一下什么是 war 包,jar 包和 war 包又有什么区别吧!

什么是 jar 包

jar 包全称 Java Archive ,中文名叫 java 归档文件,这是一种与平台无关的文件格式,它允许将许多文件组合成一个压缩文件(是的,jar 包就是一种压缩文件,甚至 jar 这个单词就有罐子的意思,实际上 jar 包采用的也是 zip 的压缩方式,只不过将文件后缀定义为 jar)。javaSE 程序可以打包成 jar 包。

 jar 包虽然使用 zip 进行压缩和发布,但与 zip 压缩不同,jar 文件还可以用来部署和封装库,组件和插件程序,而且这样的 jar 包是可以直接被编译器和 JVM 直接使用的。

简单的讲,zip 只是将代码文件压缩,打 jar 包不仅是文件压缩,还将代码中的类进行打包,这样就可以让别人直接进行引入调用了。

什么是 war 包

war 包与 jar 包是很类似的,不过 war 包通常用于网站,它是一个可以直接运行的 web 模块。我们在开发 web 项目一般都会使用一个 webapp 文件夹来进行开发,这个文件夹直接放在 Tomcat 的 webapps 文件夹下就可以启动该项目了。而 war 包,就是对这个文件夹进行打包。

 war 包是 Sun 提出的一种 web 应用程序格式。它与 jar 类似,是很多文件的压缩包。war 包中的文件按照一定目录结构来组织。

一般其根目录下包含有 html 和 jsp 文件,或者包含有这两种文件的目录,另外还有 WEB-INF 目录。通常在 WEB-INF 目录下含有一个 web.xml 文件和一个 classes 目录。web.xml 是这个应用的配置文件,而 classes 目录下则包含编译好的 servlet 类和 jsp,或者 servlet 所依赖的其他类(如 JavaBean)。通常这些所依赖的类也可以打包成 jar 包放在 WEB-INF 下的 lib 目录下。

区别

使用 jar 文件的目的是把类和相关的资源封装到压缩的归档文件中以方便调用。而对于 war 文件来说,一个 war 文件就是一个 Web 应用程序。它包含 Servlet、HTML 页面、Java 类、图像文件,以及组成 Web 应用程序的其他资源,而不仅仅是类的归档文件。

简单的来说,jar 只是类的归档文件,而 war 包是一个完整的 web 应用程序。

如何打 war 包

war 包的打包也是通过 jar 命令来实现的。使用如下命令即可打包

jar cvf d:/test/myweb2.war.

  • 其中​cvf​是命令参数,表示生成一个文档、显示生成过程、指定生成的文件名。
  • d:/test/myweb2.war​ 为生成的文档的存放路径以及文件名。
  • 最后一个点号表示要将当前目录中所有内容打包。

使用一些开发工具也可以打 war 包,比如 maven 项目就可以用 maven 打包。如果项目中用到了 ant,也可以用 ant 进行 war 包的输出和部署。类似的工具还有 gradle 等等,小编就不一一介绍了。

使用 IDE 一般都会提供打包工具,它们可以简单的打好一个 war 包(关注 W3C技术头条,后续文章教你如何用 idea 和 eclipse 打 war 包)。

war 包怎么部署

war 包的部署是相当简单的,只需要将 war 包放在 Tomcat 的 webapps 文件夹中,启动 Tomcat,它就会自行解包运行相应的 web 项目。

小结

如果仅仅只是为了在本地运行一个 webapp 项目,使用 war 包好像是看不出有什么优势,反而每次运行都要打包显得更麻烦了。但如果是要将项目部署在远程的服务器上,传输一个 war 包和传输一个文件夹的区别就显现出来了,所以学习使用 war 包对于日后从事 web 项目开发是有一定必要性的。

以上就是关于 war 包怎么运行以及 jar 包与 war 包的区别的全部内容了,更多编程小知识,请关注爱编程的鱼!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web应用课——(第二讲:CSS)

目录 一、实战项目一:Acwing名片 二、实战项目二:Bilibili名片 三、样式定义方式 四、选择器 五、颜色 六、文本 七、字体 八、背景 九、边框 十、元素展示格式 十一、内边距与外边距 十二、盒子模型 十三、位置 十四、浮动 十五、flex布…

T113-Pro的buildroot添加gdisk ( GPT disks )出现gptfdisk needs a toolchain w/ C++的解决方法

问题背景: 最近入手了百问网的全志T113-Pro,用Emmc启动发现一张32GB的SD卡在烧录了百问网镜像 100ask-t113-pro_sdcard.img 的系统后,仅有200多M的存储空间。第一时间上百问网论坛看是否有板友也出现类似情况,发现了一个帖子正是描…

幻兽帕鲁能在Mac上运行吗?幻兽帕鲁Palworld新手攻略

幻兽帕鲁能在Mac上运行吗? 《幻兽帕鲁》目前还未正式登陆Mac平台,不过通过一些方法是可以让游戏在该平台运行的。 虽然游戏不能在最高配置下运行,但如果你安装了CrossOver这个软件,就可以玩了。这是为Mac、Linux和ChromeOS等设计…

2024最新版IntelliJ IDEA安装使用指南

2024最新版IntelliJ IDEA安装使用指南 Installation and Usage Guide to the Latest JetBrains IntelliJ IDEA Community Editionn in 2024 By JacksonML JetBrains公司开发的IntelliJ IDEA一经问世,就受到全球Java/Kotlin开发者的热捧。这款集成开发环境&#xf…

MySQL中的多表查询语句

一、什么是多表查询 在了解多表查询之前,我们先看一下什么是单表查询。 select * from A 那什么是多表查询呢? select * from A,B 这是初学者比较容易理解的多表查询,就是直接查询两张表的字段,当然,星号可以改为对应的…

react 实现点击其他地方,隐藏列表(点击元素外)

前言: 我们经常封装一些自己的下拉列表组件 或者 弹窗组件。一般 点击按钮显示 列表或 弹窗。再次点击 隐藏或关闭,但 ui库里的下拉列表,点击除了自己本身也能实现隐藏对应的列表。下面我就给大家一个实现思路。 弹窗组件可以用 React Port…

Spring: 实体类转换工具总结

文章目录 一、MapStruct1、介绍2、原理3、使用4、问题处理(1)IDEA编译报错:NullPointerException 一、MapStruct 1、介绍 MapStruct是一个实体类属性映射工具,通过注解的方式实现将一个实体类的属性值映射到另外一个实体类中。在…

torch.sign()详解

torch.sign()是pytorch中的一个函数,用于计算输入张量的元素的符号。 具体地说,torch.sign()函数会返回一个新的张量,其中的元素是输入张量中对应元素的符号。如果输入张量的元素为正数,则对应位置的输出张量元素为1;…

unity3d的海盗王白银城演示

这是一个外网上的下载的海盗王unity3d制作的白银城演示场景。 地图只含有白银城区,没有野外和怪物。 当然也没有服务器端的。 我对灯光、摄像头、天空背景等做过调整,使它显示起来比较鲜丽。 它的模型和贴图是直接拿了海盗的,没有做过优化调整…

python-自动化篇-运维-监控-如何使⽤Python处理和解析⽇志⽂件?-实操记录

文章目录 1. 选择日志文件格式: 确定要处理的日志文件的格式。不同的日志文件可能具有不同的格式,如文本日志、CSV、JSON、XML等。了解日志文件的格式对解析⾮常重要。2. 打开日志文件: 使⽤Python的文件操作功能打开日志文件,以便…

jQuery css() 方法 —— W3school 详解 简单易懂(十六)

jQuery css() 方法 css() 方法设置或返回被选元素的一个或多个样式属性。 返回 CSS 属性 如需返回指定的 CSS 属性的值,请使用如下语法: css("propertyname"); 下面的例子将返回首个匹配元素的 background-color 值: $("…

Kotlin 协程:深入理解 ‘lifecycleScope‘

Kotlin 协程:深入理解 ‘lifecycleScope’ Kotlin 协程是一种强大的异步编程工具,它提供了一种简洁、易读的方式来处理并发和异步操作。在 Kotlin 协程库中,lifecycleScope 是一个关键的概念,它允许我们将协程的生命周期绑定到 An…

第二十一回 阎婆大闹郓城县 朱仝义释宋公明-FreeBSD Linux 使用Rsync备份

阎婆状告宋江杀死她女儿阎婆惜,知县有意偏袒宋江,只是一味的拷打唐牛儿,但无奈张三张文远说刀子是宋江的,知县不得已差人拿宋江来审问。第一次没见到人,第二次派朱仝雷横两个人去。 朱仝到地窖里找到了躲藏的宋江&…

QT使用QFileSystemModel实现的文件资源管理器(开源)

文章目录 效果图现实的功能总体框架功能介绍视图双击进入处理复制与剪切粘贴重命名,新建显示文件详细信息文件路径导航栏 总结 效果图 现实的功能 支持文件/文件夹复制,粘贴,剪切,删除,重命名的基本操作支持打开图片&…

【算法分析与设计】交换两个节点

📝个人主页:五敷有你 🔥系列专栏:算法分析与设计 ⛺️稳中求进,晒太阳 题目 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本…

2024美赛数学建模D题思路分析

美赛思路已更新,关注后文末名片可以获取更多思路。并且领取资料 D题思路 五大湖的水不仅是许多城市饮用水的来源,也支撑着渔业、娱乐、发电、航运等多种用途。如何管理这些湖泊的水位,既能满足各种需求,又能防止洪水或水位过低影…

Python程序设计 函数基础

简单函数 函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用。 函数的使用包含两个步骤: 定义函数 —— 封装 独立的功能 调用函数 —— 享受 封装 的成果 函数的作用,在开发程序时,使用…

【毕业日记】2024.01 - 慢下来,静待花开

转眼距离930离开鹅厂已经120天了,我是很能拖延的,或者是很懂自我麻痹的,这三个多月,一直想要写点东西纪念,一直拖一直拖一直拖…… 疫情这几年经济下行里裁员是个茶余饭后“嬉笑”之余经常被提起的词,部门滚…

【Qt基本功修炼】Qt线程的两种运行模式

1. 前言 QThread是Qt中的线程类,用于实现多线程运行。 QThread有两种工作模式,即 消息循环模式无消息循环模式 两种模式分别适用于不同的场景。下面我们将从多个方面,讲解QThread两种工作模式的区别。 2. 消息循环模式 2.1 实现原理 Q…

virtualBox虚拟机安装ubuntu后的必要配置

1. 使能双向copy 粘贴功能。在device menu的 shared clipboard项, 选bidirectional. 2.启用共享文件夹。 在device 菜单的 shared folder 项配置, (对于日期乱码问题和命令行打不开的问题请见ubuntu18.04安装后时间日期乱码及terminal打不开解决方法_电脑日期变成…