如何使用Maven快速构建JavaWeb项目?在idea中使用TomCat详细解读

news2024/11/13 22:19:10

文章目录

  • 1. 前言
  • 2. Web项目的结构
  • 3. 创建Maven Web项目
  • 4. 在IDEA中使用TomCat
    • 4.1 集成本地TomCat
    • 4.2 使用TomCat Maven插件
  • 5. 总结
  • 📂橙子精品文章学习推荐

1. 前言

前面在 Web 服务器 TomCat 快速入门一文中,我们介绍了 Web 服务器的基本概念以及 TomCat 的使用。但是在实际开发中,我们要在 idea 中快速构建 Web 项目,而使用 Maven 工具能够帮助我们更加快速便捷的创建 Web 项目,那么如何使用 Maven 快速的构建 Web 项目呢?

2. Web项目的结构

Web 项目分为开发中的项目和开发完成可以部署的项目,这两个项目的结构是不一样的,例如下图是正在开发中的 Web 项目:

image-20230202152502923

其中,从上到下分别表示的是项目名称,源代码和测试代码目录,源代码文件目录,源代码 Java 文件目录,源代码配置文件目录,Web 项目特有目录,Web 项目核心目录,Web 项目配置文件。最下面是测试文件目录和 Maven 项目的核心配置文件 pom.xml。

JavaWeb 项目和普通 Java 项目的结构相比,主要是多了 webapps 目录,如图:

image-20230202153307630

开发完成部署的项目结构大致包括了项目名称,HTML 文件目录,Web 核心文件目录 WEB-INF ,这个目录中存放了Java 代码的字节码文件,目录需要的 jar 目录 Lib 和 Web 项目配置文件 web.xml 。

开发中的项目通过执行 Maven 的打包命令就得到了部署的 Web 项目目录,编译后的 Java 字节码文件和 resources 的资源文件都放在 WEB-INF 的 classes目录下。

Maven 项目核心配置文件中的坐标对应的依赖 jar 包都被放在 WEB-INF 下的 Lib 目录。

3. 创建Maven Web项目

现在,我们的需求是在 idea 中使用 Maven 创建一个 Web 项目,我们可以通过使用骨架或者不使用骨架的两种方式创建,两种方式都可以创建一个 Maven Web 项目。其中使用骨架创建时需要进行以下几个步骤:

  1. 创建空项目,添加新模块(指定项目名称及存储路径,选择 Web 项目骨架等信息)
  2. 指定 Maven 项目的坐标信息,完成创建
  3. 添加缺少的目录,补齐 Web 项目结构
  4. 删除核心配置文件中多余的部分

第一步

通过 File / new / project / Empty project 创建一个空项目,在 File / Project Structure 中创建一个新模块,如图:

image-20230202154857681

创建一个 Maven 模块时,需要指定项目名称,项目存储地址,Archetype 选择 maven-archetype-webapp ,还可以指定版本号等信息,如图:

image-20230202155014081

第二步

在创建新模块时指定项目名称等信息后,下滑找到 Advanced Setting ,给 Maven项目设置坐标信息,如图:

image-20230202155239825

第三步

补全 Web 项目结构,其中添加目录时 idea 会有相关的提示,如图:

image-20230202155638703

补全 Maven Web 项目以后,完整的项目结构如下:

image-20230202152502923

第四步

做完前面的工作,最后一步就来删除核心配置文件中多余的部分,其中 pom.xml 中的配置信息如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.chengzi</groupId>
  <artifactId>Tomcat-project</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Tomcat-project Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>Tomcat-project</finalName>
  </build>
</project>

现在简单的描述一下不使用骨架来创建 Maven Web 项目的流程,首先在创建 Maven 项目时,我们不再选择 Archetype 选项,其次是创建好项目以后,我们需要在配置文件 pom.xml 中添加打包方式为 war 包的方式。如图:

image-20230202160625774

接下来要做的是补齐 Maven Web 项目的结构,在 File / Project Structure / Facets 中选择该项目,如图:

image-20230202161024405

在 idea 中会有自动提示,我们选择需要添加的 webapp 目录以及里面的 web.xml 文件等,如图:

image-20230202161109125

经过上面的操作,我们就通过不使用骨架的方式成功创建了一个 Maven Web 项目。

不难看出,此时在配置信息中已经给出该项目的打包方式为将 Web 项目打成一个 war 包。在项目打包完成之后,我们只需要将该项目的 war 包放到 TomCat 的 webapps 目录下即可完成项目的部署,项目部署完成后就可以通过浏览器访问服务器的项目资源了。

开发过程中我们的项目内容可能经常要发生变化,这样部署项目时每次都要将项目打包并放到 webapps 目录下,为了方便操作,我们要学习如何在 idea 中快速使用 TomCat。

4. 在IDEA中使用TomCat

开发过程中我们的项目内容可能经常要发生变化,之前部署项目时每次都要将项目打包并放到 webapps 目录下,为了方便操作,我们要学习如何在 idea 中快速使用 TomCat。

我们有两种方式实现在 idea 中快速使用 TomCat,分别是集成本地 TomCat 的方式和使用 TomCat Maven 插件的方式。

4.1 集成本地TomCat

将已经安装好的 TomCat 集成到 idea 中,并快速完成项目的部署。

第一步

选择 Edit Configurations,如图:

image-20230203122118259

点击 + ,并选择 TomCat Server / Local ,如图:

image-20230203122301515

第二步

给添加的本地 TomCat 连接命名,也可以使用默认名称,点击 Configurations ,指定本地 TomCat 具体路径,如图:

image-20230203122627138

还可以修改项目最终访问地址,默认浏览器,访问端口等信息,如图:

image-20230203123102976

第三步

将开发的项目部署到 TomCat 中,如图:

image-20230203123637951

第四步

项目部署成功以后,就可以启动 TomCat 服务,如图:

image-20230203124447898

第五步

TomCat 启动成功以后,我们就可以通过浏览器访问部署到服务器的项目了。

4.2 使用TomCat Maven插件

在 idea 中使用本地的 TomCat 进行项目部署时,步骤比较繁琐,所以我们可以使用 Maven 插件的方式简化操作,具体实现可以分为两步:

第一步

在 pom.xml 中添加 TomCat 插件,如下:

<build>
    <plugins>
    	<!--Tomcat插件 -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
        </plugin>
    </plugins>
</build>

第二步

使用 Maven Helper 插件快速启动 TomCat,右击项目,选择 Run Maven / tomcat7:run ,前提是已经安装了 Maven Helper 插件。如图:

image-20230203130838807

使用 Maven Tomcat 插件时,如果要修改项目访问的端口号,访问路径等,可以在 pom.xml 配置文件中修改。

<build>
    <plugins>
    	<!--Tomcat插件 -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
            	<port>80</port><!--访问端口号 -->
                <!--项目访问路径
					未配置访问路径: http://localhost:80/tomcat-demo2/a.html
					配置/后访问路径: http://localhost:80/a.html
				-->
                <path>/</path>
            </configuration>
        </plugin>
    </plugins>
</build>

此时,我们就可以通过浏览器访问部署在 TomCat 中的项目了。

经验分享:初学者在 idea 中启动 TomCat 服务时,可能会出现很多的问题,仔细看控制台输出的错误信息,很大一部分问题可能是由于 TomCat 启动端口号被占用导致的,一般是因为初学者因为出现问题而关闭 idea 导致的 TomCat 服务强制关闭引起的。寻找相关的教程,关闭占用对应端口号的进程即可。

5. 总结

现在,我们已经可以在 idea 中快速的通过 Maven工具构建 JavaWeb 项目了,并且我们学会了如何在 idea 中使用 TomCat 实现项目的快速部署,解决了因为项目变动重新修改并部署的操作繁琐的问题。


📂橙子精品文章学习推荐

❓很多朋友问我:怎样系统的学习一门编程语言?怎样学好 Java?强烈推荐大家学习:Java编程基础教程系列专栏(零基础小白搬砖逆袭),博主正处于学习成长阶段,更明白初学者的状态和需求,文章结合自身经验和经历,风趣幽默。本专栏主要更新 Java 基础,MySQL 数据库,JavaWeb,SSM 框架,SpringBoot 框架等,零基础小白搬砖逆袭,请相信自己。如图,专栏文章持续更新,快来和小伙伴们一起学习!!

在这里插入图片描述

Java编程基础教程系列 👈快速订阅

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

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

相关文章

工业平板电脑实现工厂自动化设备无需手动连接

随着中国经济的快速发展和材料水平的不断提高&#xff0c;制造业的竞争日益激烈&#xff0c;市场竞静力逐渐转向质量、效率和价格服务&#xff0c;制造业企业面临更大的挑战&#xff0c;数据转型迫在眉睫。对工业平板电脑的需求也在增加&#xff0c;面向行业的工业平板电脑已成…

Java设计模式--工厂模式

目录 1.简单工厂模式 1.1类图 1.2 代码示例 2.工厂方法模式 2.1 类图 2.2 代码示例 3.抽象工厂模式 3.1 类图 3.2 代码示例 实际应用&#xff1a; 总结&#xff1a; 1.简单工厂模式 定义了一个创建对象的类&#xff0c;由这个类来封装实力化对象的行为。 1.1类图 1.…

《三体》中罗辑所说的定位行星的位置,是怎样实现的?

最近流浪地球2&#xff0c;三体电视剧火得一塌糊涂&#xff0c;《三体》中罗辑用咒语标记了三体星系位置&#xff0c;利用黑暗森林理论与三体人对峙长达两百年&#xff0c;那么这种定位技术在现实中是否存在呢&#xff1f;咒语标记三体星系位置这件事&#xff0c;听起来很玄乎但…

vite兼容chrome48的方法

chrome48不支持async await语法&#xff0c;但有些桌面客户端的内嵌浏览器就是chrome48,如下操作即可兼容 当前环境&#xff1a;2023-2-3使用npm create vitelatest创建 开始兼容操作 安装vite推荐的 vitejs/plugin-legacy 文档官网 https://github.com/vitejs/vite/tree/m…

【JavaEE】HTTP的方法、报头、状态码

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaEE】 ✈️✈️本篇内容:http请求的方法、报头&#xff1b;状态码&#xff01; &#x1f680;&#x1f680;代码存放仓库gitee&#xff1a;JavaEE代码&#…

学习QCustomPlot【4】库官方examples之plots解读

文章目录一、前言二、案例解说0&#xff1a;Quadratic Demo【二次曲线demo】1、Simple Demo【简单demo】2、Sinc Scatter Demo【Sinc函数散点demo】3、Scatter Style Demo【散点样式demo】4、Line Style Demo【线型demo】5、Scatter Pixmap Demo【图标散点demo】6、Date Demo【…

RANSAC的实现与应用

一、前言RANSAC(Random Sample Consensus)算法并不陌生&#xff0c;在上一篇博客中&#xff08;基于SIFT的图像Matlab拼接教程&#xff09;也提到过&#xff0c;之前代码中也多次用过&#xff0c;其在直(曲)线拟合、特征匹配、过滤外点(Outlier)等领域有着重要的应用。RANSAC出…

线性代数之线性基

在谈论线性基之前,先介绍什么是基向量. 根据高中数学,一个二维直角平面坐标系中的所有向量都可以只用(0, 1)和(1, 0)合成.那么(0, 1)和(1, 0)就是基向量,所有基向量能合成的所有向量被称为基向量的张成空间. 在二维空间中,有没有其他的向量能作为基向量呢?答案是肯定的. 上图…

Oracle事務簡述

簡述本文主要介紹內容有事務的隔離級別&#xff0c;oracle支持的事務隔離級別&#xff0c;事務的提交與回滾&#xff0c;保存點內容事務的ACID特征介紹事務繞不過事務的ACID四個特征&#xff0c;這裡簡單回顧以下原子性&#xff08;Atomicity&#xff09;事務的執行要麼全部成功…

广义霍夫变换和模板匹配的不同

简述说到霍夫变换&#xff0c;做图像的知道经典霍夫变换最常用于检测规则曲线&#xff0c;如直线、圆、椭圆等。而广义霍夫变换是为了检出那些无法写出解析式的不规则形状&#xff0c;虽然在深度学习大行其道的时代&#xff0c;霍夫变换也还是有很多应用场景&#xff0c;另外广…

2023年黑马Java入门到精通教程--面向对象

推荐教程&#xff1a;java零基础入门到精通 面向对象编程的例子 设计类&#xff0c;创建对象并使用 1. 类和对象是什么&#xff1f; 类&#xff1a;是共同特征的描述(设计图)&#xff1b;对象&#xff1a;是真实存在的具体实例。 2. 如何设计类&#xff1f; 3. 如何创建对象…

CISP-PTE-Windows2003教程

为方便后续操作&#xff0c;建议和kali在同一网段。 获取到靶机IP后&#xff0c;扫描端口&#xff0c;1433是sqlserver的 测出用户名admin&#xff0c;但是密码爆破失败 扫描目录发现配置文件 配置文件中找到数据库的用户名和密码 使用Microsoft SQL Server Studio连接&#x…

MySQL从入门到精通(第0篇):全程有动画演示,适合入门学习

B站地址 文章目录一、MySQL的系统框架1. 连接池1.1 连接模块1.2 连接池2. SQL接口、SQL解析器、SQL优化器3. 存储引擎二、MySQL数据写入原理三、MySQL存储结构1. 使用InnoDB创建表2. 详述ibd文件中的存储结构2.1 页的数据连续存储2.2 行的结构2.3 区的结构2.4 组的结构2.5 段的…

剑指 Offer 33. 二叉搜索树的后序遍历序列

题目 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。 思路 二叉搜索树的特点是&#xff1a;左子树的值 < 根节点 < 右子树的值后序遍历的顺序是…

【逐步剖C】第三章-数组

一、一维数组 1. 一维数组的定义与使用 &#xff08;1&#xff09;数组的简单概念&#xff1a;一组具有相同类型的元素的集合 &#xff08;2&#xff09;数组的创建&#xff1a; 格式&#xff1a;类型名数组名[数组大小] 需要注意的是&#xff1a;对多数情况而言&#xff0c;…

# Vue中的Mixin混入

Vue中的Mixin混入 将组件的公共逻辑或者配置提取出来&#xff0c;哪个组件需要用到时&#xff0c;直接将提取的这部分混入到组件内部即可。这样既可以减少代码冗余度&#xff0c;也可以让后期维护起来更加容易。 1. 什么是Mixin&#xff1f; 混入 (mixin) 混入 (mixin) 将组…

数据库分类

关系型与非关系型 关系数据库 MySQL、MariaDB&#xff08;MySQL的代替品&#xff09;、 Percona Server&#xff08;MySQL的代替品&#xff09;、PostgreSQL、 Microsoft Access、Google Fusion Tables、SQLite、DB2、FileMaker、Oracle、SQL Server、INFORMIX、Sybase、dBASE…

阿里云中间件2024届校园招聘

【团队介绍】 阿里云云原生中间件团队负责分布式软件基础设施&#xff0c;为阿里云上万家企业提供如微服务引擎、服务网格、消息服务、分布式事务等分布式基础服务&#xff0c;加速企业上云的进程和创新速度。同时&#xff0c;云原生中间件团队也服务着阿里集团众多核心业务和…

智能指针(三)—— shared_ptr 循环引用问题

shared_ptr 作为智能指针&#xff0c;可以满足大多数场景&#xff0c;对于一些特殊情况&#xff0c;可能会引发循环引用问题。 目录 1、循环引用案例分析 (1) 案例介绍 (2) 原因分析 2、weak_ptr 解决循环引用 1、循环引用案例分析 (1) 案例介绍 我们通过实际案例来了解…

网络编程 1 相关基础概念 及 请求、响应类 定义

目录 一、HTTP基本概念 1、HTTP是什么 2、HTTP客户端是什么 3、HTTP消息结构 4、服务器响应信息 二、相关概念 1、网址 URL 2、IP地址 3、域名 4、域名与IP关系 5、域名解析 6、DNS 三、设计请求、响应类基本数据结构 1、请求类定义 2、响应类定义 一、HTTP基本概…