IDEA打包JavaWeb的War包并部署到Tomcat

Posted Tr0e

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA打包JavaWeb的War包并部署到Tomcat相关的知识,希望对你有一定的参考价值。

前言

JavaWeb 工程,都是打成 War 包后进行发布的,打成 War 包的好处是不会缺少目录,并且只管理好一个发布文件就好。将 War 包放在 Tomcat 容器的 webapps 目录下,启动 Tomcat 服务后,即可运行该项目,Tomcat 服务器能够自动识别该 War 包并自动解压出一个同名的文件夹。

本文来记录学习下如何在 IDEA 中创建一个简单的 JavaWeb 示例项目,并打包生成 War 包,部署到 Tomcat 服务器中,从而能在浏览器访问该 Web 服务。

基础认识

如果做 Java 开发,必定会经常接触 jar 包和 war 包,有必要对它们做一个深入的了解,故做下总结梳理。

JAR包

JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。JavaSE 程序可以打包成 Jar 包。JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR。

简单来说,Jar 包就是别人已经写好的一些类,然后对这些类进行打包。可以将这些 Jar 包引入到你的项目中,可以直接使用这些 Jar 包中的类和属性,这些 Jar 包一般放在 lib 目录下。

War包

War 包是一个可以直接运行的 Web 模块,通常用于网站,打成包部署到容器中。以 Tomcat 来说,将 war 包放置在其\\webapps\\目录下,然后启动 Tomcat,这个包就会自动解压,就相当于发布了。

War 包是 Sun 提出的一种 Web 应用程序格式,与 Jar 包类似,它是很多文件的压缩包。简单来说,War 包是 JavaWeb 程序打的包,War 包里面包括写的代码编译成的 class 文件、依赖的包、配置文件、所有的网站页面(包括 html,jsp)等等,一个 War 包可以理解为是一个 Web 项目,里面是项目的所有东西。

Jar 包和 War 包的区别

WAR 文件代表了一个 Web 应用程序,而 JAR 是类的归档文件。如果一个 Web 应用程序的目录和文件非常多,那么将这个 Web 应用程序部署到另一台机器上,就不是很方便了,这时可以将 Web 应用程序打包成 Web 归档(WAR)文件,这个过程和把 Java 类文件打包成 JAR 文件的过程类似。利用 WAR 文件,可以把 Servlet 类文件和相关的资源集中在一起进行发布。在这个过程中,Web 应用程序就不是按照目录层次结构来进行部署了,而是把 WAR 文件作为部署单元来使用。

要注意的是,虽然 WAR 文件和 JAR 文件的文件格式是一样的,并且都是使用 jar 命令来创建,但就其应用来说,WAR 文件和 JAR 文件是有根本区别的。JAR 文件的目的是把类和相关的资源封装到压缩的归档文件中,而对于 WAR 文件来说,一个 WAR 文件代表了一个 Web 应用程序,它可以包含 Servlet、HTML 页面、Java类、图像文件,以及组成 Web 应用程序的其他资源,而不仅仅是类的归档文件。

那么什么时候应该使用 WAR 文件呢?在开发阶段不适合使用 WAR 文件,因为在开发阶段,经常需要添加或删除 Web 应用程序的内容,更新 Servlet类文件,而每一次改动后,重新建立 WAR 文件将是一件浪费时间的事情。在产品发布阶段,使用 WAR 文件是比较合适的,因为在这个时候,几乎不需要再做什么改动了。

JavaWeb

下面借助 IDEA 来实际创建一个简单的 JavaWeb 项目,并打包生成 War 包、部署到 Tomcat 容器中。下面的演示项目将基于如下环境:IDEA 2021、Maven 3.6.3、Tomcat 9.0.5、Java8 等。

项目创建

1、IDEA 新建 JavaWeb Maven 项目:

2、成功创建项目后,工程建构如下:
如果创建 JavaWeb 项目创建失败(我遇到报错:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0 ),解决方法可参见:Maven settings.xml配置(指定本地仓库、阿里云镜像设置) 修改 Maven 配置。

War 部署

1、点击菜单栏【File】–>【Project Structure…】,创建 Artifact(实际上一般情况下项目会自动创建好):
2、点击菜单栏【Run】–>【Edit Configurations…】,将 War 包部署到 Tomcat 中:

3、run 运行项目,启动 Tomcat 服务器,IDEA 会自动将项目代码打包成 War 并部署到 Tomcat 容器的 webapps 目录下,随即便可在浏览器中访问到创建的 JavaWeb 服务:


自此便完成了 IDEA 中将 JavaWeb 的 War 包部署到 Tomcat 服务器上并运行服务。

手动部署

上面借助 IDEA 进行 War 包生成并部署到 Tomcat 服务器中时,封装了很多细节,为了更好地理解 War 包部署到 Tomcat 的过程,下面来进行手动 War 包生成、部署。

WAR的打包

1、进入刚创建的 MyWeb 工程项目路径下,先来看看 IDEA 刚才自动创建的 target 文件夹下编译生成的 MyWeb.war 文件:

2、修改文件后缀(.war 改为 .rar)并解压缩,发现 war 包封装压缩了整个项目的资源文件:

3、删除 target 文件夹,进入 cmd 命令窗口,执行命令jar -cvf MyWeb.war *,手动打包生成项目 War 包:

Tomcat部署

1、将上面手工生成的 MyWeb.war 文件复制放到本地 Tomcat 服务器的\\webapps\\目录下:

2、手动启动 Tomcat 服务器:
3、此时返回查看 Tomcat 服务器的\\webapps\\目录,即可看到 MyWeb.war 已经被自动解压缩并生成 MyWeb 工程文件夹:

4、浏览器此时便可访问部署的 Web 服务:

总结

以上就是如何创建 JavaWeb 项目、生成 War 包并部署到 Tomcat 的方法与过程,虽然内容很基础很简单,但也算是进一步理解了 Web 应用的部署过程。

以上是关于IDEA打包JavaWeb的War包并部署到Tomcat的主要内容,如果未能解决你的问题,请参考以下文章

将JavaWeb项目打出war包并部署到tomcat

SpringBoot打war包并部署到tomcat下运行

SpringBoot——SpringBoot打war包并部署到Tomcat

将Java Web项目导出war包并部署到tomcat中

将java web项目打包war文件然后发布到Tomcat,

JavaWeb 关于IDEA中本地启动项目配置正常,接口访问正常,打包War文件接口访问404的问题