探索Maven创建项目全过程(超详细~~~)

news2024/11/24 10:34:07

文章目录

  • 1.Maven介绍
  • 2.Servlet介绍
    • 2.1 Servlet定义
    • 2.2 Servlet的主要任务
  • 3.创建Servlet程序步骤
    • 3.1 创建项目
    • 3.2 引入依赖
    • 3.3 创建目录
    • 3.4编写代码
    • 3.5 打包程序
    • 3.6 部署程序
    • 3.7 验证结果
  • 4.更方便的部署方式
    • 4.1.下载Tomcat插件
    • 4.2 配置Tomcat插件
    • 4.3运行项目

1.Maven介绍

Maven 这个词翻译为“专家”,“内行”。作为一个 Apache 组织中一个成功的开源项目,Maven 主要服务于基于 java 平台的项目构建,依赖管理和项目信息管理,还可以用来帮助实现项目的构建、测试、打包和部署。

这次演示建立的Mavenue项目是关于Servlet的,下面介绍一下Servlet~~~

2.Servlet介绍

2.1 Servlet定义

Servlet(Server Applet 的缩写,全称 Java Servlet):Servlet 是运行在 Web 服务器或应用服务器(例如:Tomcat)上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
在这里插入图片描述

2.2 Servlet的主要任务

  • 允许程序员注册一个类, 在 Tomcat 收到某个特定的 HTTP 请求的时候, 执行这个类中的一些代码.
  • 帮助程序员解析 HTTP 请求, 把 HTTP 请求从一个字符串解析成一个 HttpRequest 对象
  • 帮助程序员构造 HTTP 响应. 程序员只要给指定的 HttpResponse 对象填写一些属性字段, Servlet就会自动的安装 HTTP 协议的方式构造出一个 HTTP 响应字符串, 并通过 Socket 写回给客户端.

Maven是创建项目的格式,Servlet是我们需要实现的一个程序;
可以将Maven比喻成一个工具用来管理Servlet这个实际的物品。

3.创建Servlet程序步骤

我们在学习新知识时,我们一般都是打印/响应出hello world;因此我们的第一个Servlet程序也是在网页上响应出hello world
使用 IDEA 创建一个 Maven 项目,我们一共分为七步进行。

3.1 创建项目

1.打开菜单 -> 点击文件 -> 选择新建项目 -> 选择Maven选项

在这里插入图片描述

2.为项目命名
这里注意,如果我们是第一次创建Maven项目,在点击完成后,需要引入依赖,可能会花费一定的时间,这个时候要保持网络通畅!!!
在这里插入图片描述
3.项目创建完毕后, 一般右下角会弹出以下对话框. 选择 Enable Auto-Import

4.创建好的项目图如下
在这里插入图片描述

通过上图我们可以看到创建好的项目中有一些目录结构,这是 Maven 项目的标准结构:

  • main:表示源代码的根目录. 后续创建 .java 文件就放到蓝色java目录中
  • test:用来放置测试代码,测试代码放入到绿色的java目录中
  • pom.xml:用来放置配置文件
  • resource:用于放置程序依赖的资源(例如:图片、图标、音频等)

3.2 引入依赖

1.在https://mvnrepository.com/中搜索servlet,一般第一个结果就是。
在这里插入图片描述
2.点击进入后,需要选择版本,我们选择3.1.0这个版本,因为我们使用的是Tomcat 8.5 这个版本,这两个版本匹配。,如果你的Tomcat不是8.5版本,可以“https://tomcat.apache.org/whichversion.html”查询版本对应关系
在这里插入图片描述
3.把中央仓库中提供的 xml 复制到项目的 pom.xml 中
我们复制的这段代码就是Servlet库在Maven当中的坐标。
在这里插入图片描述
放置进入到pom.xml当中,这里需要将复制好的数据放入到<dependencies>这对标签当中,<dependencies> 标签内部放置项目依赖的 jar 包. maven 会自动下载依赖到本地;放置好就如下图:
在这里插入图片描述

注意

  • 首次使用,可能会标记为红色,不用担心,因为idea下载这个依赖需要时间,下载好就会如上图颜色一样了。

3.3 创建目录

Maven项目已经帮我们生成了一些目录结构,但是这些还是不够;下面创建的目录结构务必要保证一点不错!!!
这里又有一个web.xml,这个web.xml是给Tomcat看的,Tomcat从webapp目录中加载webapp,就算以这个web.xml为依据的。
在这里插入图片描述
这里的东西我们不需要自己写,直接拷贝进去就行了;代码如下:

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

3.4编写代码

1.在蓝色java目录中创建一个类,并且让这个类继承于HttpServlet类HttpServlet类这个类就是我们引入依赖里面的类,;如下图:
在这里插入图片描述
2.重写父类HttpServlet类中的doGet方法,我们在doGet方法需要做的事情就是根据请求,生成响应。

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //super.doGet(req, resp);
        //在服务器打印hello
        System.out.println("hello");
        //在网页上响应hello
        resp.getWriter().write("hello");
    }
}

3.5 打包程序

为啥要打包呢?因为一个类就会生成一个.class文件,在一个规模比较大的项目中就会有很多类,会生成很多.class文件,把他们打成一个包,便于管理。
在Java中,常见的压缩包有两种格式:jar包war包jar 包是普通的 java 程序打包的结果. 里面会包含一些 .class 文件;war 包是 java web 的程序, 里面除了会包含 .class 文件之外, 还会包含 HTML, CSS, JavaScript, 图片, 以及其他的jar 包。打成 war 包格式才能被 Tomcat 识别,因此我们需要将项目打包成war

1.Maven项目默认打包类型是jar包,我们需要修改包的类型,在pom.xml文件当中加入下方的代码,就能打成war包。

    <!-- 打包类型 -->
    <packaging>war</packaging>

    <!-- 重命名 -->
    <build>
        <finalName>hello_servlet</finalName>
    </build>

2.打开Maven目录,找到生命周期中的package选项,右键点击这个选择,选择运行Maven构建这个选项即可
在这里插入图片描述
2.打包成功后,控制台就会出现BUILD SUCCESS这个标语,并且目录结构中出现新的目录target,打开后就能看到一个war包了。
在这里插入图片描述

3.6 部署程序

1.把打好的包,拷贝到Tomcat的websapp目录中。
在这里插入图片描述
2.在打开bin目录中的startup.bat启动Tomcat就算部署完成了
在这里插入图片描述

3.7 验证结果

此时通过浏览器访问 http://127.0.0.1:8080/hello_servlet/hello
就可以看到如下效果
在这里插入图片描述
打开服务器会看打开服务器也打印:
在这里插入图片描述

注意
URL 中的 PATH 分成两个部分, 其中 hello_servlet 为 Context Path, hello 为 Servlet Path
在这里插入图片描述

4.更方便的部署方式

上面这个七步可以简化,简化的是第五步和第六步,我们可以在IDEA上面下载Tomcat的插件帮助我们完成。

4.1.下载Tomcat插件

我的因为已经下载过了,因此显示的是已下载;如果没有下载,点击下载就行了。
在这里插入图片描述

4.2 配置Tomcat插件

1.打开面板
在这里插入图片描述
2.添加Tomcat配置
注意这里的Context path 这个会出现在我们访问的URL中。
在这里插入图片描述

4.3运行项目

此时我们原本的配置文件那个地方变成了Tomcat的标,点击旁边的三角就可运行程序了。
在这里插入图片描述

运行成功后,下面就会出现一个URL,点击进入,会显示404错误,不用担心,这时因为我们还没输入Servlet Path,输入我们之前注释的 Servlet Path就可以访问到了。
在这里插入图片描述
访问结果如图:
在这里插入图片描述


写在最后:

🐣🐣🐣以上就是本文全部内容,如果对你有所帮助,希望能留下你的点赞+收藏+关注,我会更加努力的更新内容!非常感谢🧡🧡🧡

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

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

相关文章

认识Tomcat

hi,大家好,今天为大家带来Tomcat的相关知识 &#x1f36d;1.Tomcat是什么 &#x1f36d;2.Tomcat的下载安装 &#x1f36d;3.Tomcat的目录结构 &#x1f36d;4.启动Tomcat &#x1f36d;5.部署博客系统到Tomcat &#x1f349;1.Tomcat是什么 我们之前也已经学了http,http…

【JAVAWEB】HTML的常见标签

目录 1.HTML结构 1.1认识HTML标签 1.2HTML文件基本结构 1.3标签层次结构 1.4快速生成代码框架 2.HTML常见标签 注释标签 标题标签&#xff1a;h1-h6 段落标签:p 换行标签&#xff1a;br 格式化标签 图片标签 超链接标签&#xff1a;a 表格标签 列表标签 表单标…

Windows 同时安装 MySQL5 和 MySQL8 版本

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是Rockey&#xff0c;不知名企业的不知名开发着 &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;联系方式&#xff1a;he18339193956&#xff0c;…

MySQL 00 : MySQL_数据库shell登录时遇到的问题

问题1描述&#xff1a;输入链接数据块的命令提示 sh:mysgl:command not found 解决:第一步配置环境变量来解决 1、vim /etc/profile 2、末尾写入export PATH$PATH:/usr/local/mysql/bin 3、保存 4、执行 source /etc/profile 第二部 问题描述 Mac通过MAMP安装MySQL时&#…

K8s之Replicaset控制器详解

文章目录 一、ReplicaSet 控制器介绍二、ReplicaSet案例1、Pod副本扩缩容案例2、Pod更新版本案例 一、ReplicaSet 控制器介绍 官方中文参考文档&#xff1a; ReplicaSet是k8s中一种资源对象&#xff0c;简写 rs&#xff0c;用于管理Pod副本数量和健康状态&#xff0c;在spec.…

MySQL如何导入大量数据?

有时我们会遇到需要将大量数据导入MySQL的需求&#xff0c;一般数据存储在csv或者txt中&#xff0c;数据由","分隔。这里提供两种方案供大家选择。 一、创建测试表 为了测试&#xff0c;我们先创建数据库和表&#xff0c;并创建一个用户。 create database loadda…

js的BOM对象中的window、location使用

说明&#xff1a;BOM的全称是Browser Object Model&#xff0c;浏览器对象模型&#xff0c;有Window&#xff08;浏览器窗口&#xff09;、Navigator&#xff08;浏览器&#xff09;、Screen&#xff08;屏幕&#xff09;、History&#xff08;历史记录&#xff09;和Location&…

js函数、Array和String的定义和使用

函数 js中的函数&#xff0c;类似java中的方法 <script>// 定义函数方式一function addA(x, y) {return x y;}// 定义函数方式二&#xff0c;注意addB是函数的名称&#xff0c;不是返回值let addB function(x, y) {return x * y;}</script><script>docume…

vscode语音插件开发-在nodejs里面转换音频文件格式并压缩导出zip格式

继我的上一篇文章&#xff1a;&#xff01;vscode录音及语音实时转写插件开发并在工作区生成本地mp3文件 踩坑日记 音频格式转换这里我使用的是ffmpeg第三方库&#xff0c;官网文档。 ffmpeg简介 FFmpeg是一个跨平台的自由软件&#xff0c;用于实时音频、视频流以及音频、视频…

Vue电商项目--详情页面--产品售卖属性

滚动行为 开发某一个产品的详情页面&#xff1f; 1.静态组件 但是这个详情页&#xff0c;我们还没有注册为路由 当点击商品图片的时候&#xff0c;跳转到详情页面&#xff0c;在路由跳转的时候需要带上产品的ID给详情页面 干掉a标签换成router-link标签 这里要注意的一点是…

MybatisPlus处理业务数据新思路

文章目录 [toc] 1.问题2.新姿势3.总结 1.问题 由于之前搞了一个停车场的项目&#xff0c;有一个区域的停车场收费被投诉了被举报没有按照政府要求来计费&#xff0c;所以需要将之前的那些停车计费的数据重新计算&#xff0c;将多缴费的钱拿去交罚款&#xff0c;这个就很坑&…

MongoDB—Indexes

一、Indexes 索引支持在MongoDB中高效执行查询。没有 索引&#xff0c;MongoDB必须执行集合扫描&#xff0c;即扫描每个 集合中的文档&#xff0c;以选择与 查询语句。如果查询存在适当的索引&#xff0c; MongoDB可以使用索引来限制它必须的文档数量 检查。 索引是特殊的数据…

近期群晖容器查询注册表失败,无法下载镜像

前言 本以为是群晖的问题&#xff0c;后来发现大家也都遇到了类似的问题&#xff0c;查询注册表出现错误&#xff0c;无法搜索和下载docker镜像&#xff0c;本期就来介绍几个可平替的方案。 方案一&#xff1a;SSH拉取 使用SSH拉取首先要打开群晖的SSH功能&#xff1a;在【…

数据结构(C语言):顺序循环队列的基本操作

一、题目 设队列的元素类型为char&#xff0c;实现顺序循环队列的各种基本操作的程序&#xff1a; ① 初始化队列Q&#xff1b; ② 判断队列Q是否为空&#xff1b; ③ 入队操作。循环调用入队操作&#xff0c;将若干元素&#xff08;不少于10个&#xff09;入队&#xff1b…

LeetCode 49 字母异位词分组

LeetCode 49 字母异位词分组 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/group-anagrams/description/ 博主Github&#xff1a;https://github.com/GDUT-Rp/LeetCode 题目&#xff1a; 给你一个字符串数组&#x…

如何使用ChatGPT?初学者简单指南

Chat GPT 风靡全球&#xff0c;并在短时间内成为世界上增长最快的应用程序。随着所有关于其潜在影响的讨论&#xff0c;你可能会想知道&#xff1a;如何使用 ChatGPT&#xff1f; 使用 ChatGPT需要准备&#xff1a;一个 OpenAI 帐户和一个网络浏览器。 访问chat.openai.com并…

ICV报告:中国的数字经济与5G市场研究报告

近日&#xff0c;专注于前沿科技领域的国际咨询机构ICV发布了《中国的数字经济与5G市场研究报告》。报告指出&#xff0c;随着5G商用的发展&#xff0c;5G对经济社会的影响逐步显现&#xff0c;其影响突出体现在对数字产业发展的带动上。随着5G应用的不断创新与扩散&#xff0c…

网络公开课1

网络公开课1 概念* 常见面试题 输入URL发生哪些事 https http1.0 2.0的区别…… OSI七层模型 协议DNS 传输层 三次握手 四次挥手 http 物理层&#xff1a;并不是指光纤电缆那些&#xff0c;那些是设备。只关心如何传输数据&#xff0c;传输的是比特流 0 1。 应用层&#xff1a;…

汇编物理地址计算与段地址认识

1.物理地址概念: 所有内存单元构造的存储空间是一个一维性空间.每个内存单元在这个空间都有一个唯一的地址,这个唯一的地址称为物理地址. CPU通过地址总线送入存储器的必须是一个内存单元的物理地址. 不同的CPU有不同形式的物理地址形成方式. 物理地址计算公式: 物理地址 …

微服务的演变史(单体式、分布式、SOA架构、微服务架构)

单体式架构 从架构层面来考虑:一个应用只部署一个服务,或该应用由多个服务组成的时候,只部署在一台服务器上 把一种系统的所有功能全部耦合在一个应用中的框架方式 这种开发方式简单,但是只适合体量较小的业务,一旦业务体量增加到一定程度的时候,单机的硬件资源将没办法满足…