【Servlet】如何创建 Maven 项目,使用 Servlet 编写第一个 helloword 程序

本文详细介绍了如何使用Maven创建JavaWeb项目,引入ServletAPI依赖,配置目录结构,编写HelloWorldServlet,打包成war文件,并部署到Tomcat服务器进行运行。重点讲述了Maven的配置,Servlet的注解使用以及Tomcat的部署步骤。
摘要由CSDN通过智能技术生成


前言

各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你:
📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等
📗 Java数据结构: 顺序表, 链表, 堆, 二叉树, 二叉搜索树, 哈希表等
📘 JavaEE初阶: 多线程, 网络编程, TCP/IP协议, HTTP协议, Tomcat, Servlet, Linux, JVM等(正在持续更新)


提示:是正在努力进步的小菜鸟一只,如有大佬发现文章欠佳之处欢迎批评指点~ 废话不多说,直接上干货!

一、创建 Maven 项目

Maven 是当前主流的构建工具, 可以提供构建, 测试, 打包一个完整的项目

在这里插入图片描述
在这里插入图片描述


二、引入依赖

  • 1, 创建好了 Maven 仓库之后会自动生成一个 pom.xml 文件
    在这里插入图片描述

  • 2, 需要在 pom.xml 文件中引入 Servlet 的 API, 点击 https://mvnrepository.com/ --> 索 servlet --> Java Servlet API --> 找到3.1.0版本 --> 拷贝如下内容

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

我使用的 Tomcat 是 8.5.x 版本, Servlet API 要使用与之对应的 3.1.0 版本, 参照https://tomcat.apache.org/whichversion.html 查询版本对应关系

  • 3, 敲出<dependencies> 标签 --> 粘贴上述 xml 代码
    在这里插入图片描述

三、创建目录

创建 Maven 项目之后就自带了一些目录结构, 但这些不够, 我们还需要 :

  • 在 main 目录下, 和 java 目录并列, 创建一个 webapp 目录 (注意, 不是 webapps)
  • 在 webapp 目录内部创建一个 WEB-INF 目录
  • 在 WEB-INF 目录创建一个 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>

在这里插入图片描述


四、编写代码

  • 1, 在 main 目录下的 java 目录中创建一个 Hello 类 – > 继承 HttpServlet 类 --> 重写 doGet 方法
    在这里插入图片描述

  • 2, 重写 doGet 方法
    在这里插入图片描述

  • 3, 加一个注解
    在这里插入图片描述

完整代码 :

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 Hello extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello world");
        resp.getWriter().write("hello world");
    }
}

五、打包项目

我们需要把所有的源代码打包成一个 .war 格式的压缩包, 所以要先在 pom.xml 中配置一下打包格式打包之后的包名

在这里插入图片描述

默认打包之后是 jar 包, jar包和 war 包的区别如下:
jar 包是普通的 java 程序打包的结果. 里面会包含一些 .class 文件
war 包是 java web 的程序, 里面除了会包含 .class 文件之外, 还会包含 HTML, CSS, JavaScript, 图片, 以及其他的 jar 包. 打成 war 包格式才能被 Tomcat 识别

打包非常简单 :
在这里插入图片描述


六、部署程序

  • 1, 在文件夹中打开 war 包
    在这里插入图片描述
  • 2, 把 war 包拷贝到 Tomcat 的 webapps 目录下
    在这里插入图片描述

3, 启动 Tomcat
在这里插入图片描述


七、运行程序

在浏览器地址栏中输入 : http://127.0.0.1:8080/firstServlet/hello 即可 :

在这里插入图片描述

同时 Tomcat 也会输出 helloword :

加粗样式

在地址栏输入的 URL 是有讲究的 :
1, 8080 是 Tomcat 的端口号(业务端口)
2, firstServlet 是 war 包名, 作为 Context Path, 用来标识哪一个 webapp
3, hello 是@WebServlet 注解中的参数, 作为 ServletPath, 用来标识要调用哪一个类的方法


总结

以上就是本篇的全部内容, 主要介绍了如何 构造HTTP 协议的请求

如果本篇对你有帮助,请点赞收藏支持一下,小手一抖就是对作者莫大的鼓励啦😋😋😋~


上山总比下山辛苦
下篇文章见

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
,发送类别,概率,以及物体在相机坐标系下的xyz.zip目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
### 回答1: 在创建Maven项目时,如果没有添加servlet-api依赖,可能会出现无法编译和运行Web应用程序的问题。这是因为servlet-api是一组Java类和接口,用于开发Servlet程序。如果没有这些类和接口,Java编译器将无法识别HttpServletRequest和HttpServletResponse等Servlet相关的类和方法。 要解决这个问题,可以手动添加servlet-api依赖。在pom.xml文件中,添加以下依赖: ``` <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> ``` 这将让Maven自动下载并包含所需的servlet-api JAR文件。如果使用了其他版本的servlet-api,则需要相应地更改版本号。 另外,可以选择使用Web项目模板来创建Maven项目。这将自动包括servlet-api依赖项,从而避免了手动添加依赖项的步骤。在Eclipse和IntelliJ IDEA等现代IDE中,都提供了Web项目模板来简化Web应用程序创建和管理。 总之,为了顺利编译和运行Web应用程序,需要在Maven项目中添加servlet-api依赖项。可以手动添加依赖项,也可以使用Web项目模板来自动添加依赖项。 ### 回答2: 在使用IDEA创建Maven项目时,可能会出现没有servlet-api的情况。这是因为servlet-api不是Maven中默认依赖的部分。如果需要在项目使用servlet相关的API,需要手动添加servlet-api的依赖。 解决此问题的步骤如下: 第1步:在pom.xml文件中添加servlet-api依赖。 在pom.xml文件中添加以下依赖: ```xml <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> ``` 第2步:更新项目Maven项目中,应该从Maven Projects面板中更新项目以让Maven解析新依赖项。 第3步:重新构建项目 在更新项目之后,应该重新构建项目以确保servlet-api包已包含在项目中。重新构建可以通过执行以下操作完成: - 选择“Build”菜单; - 选择“Rebuild Project”选项。 第4步:使用servlet API 在添加依赖和重新构建项目后,可以在项目使用servlet API了。 总结:在使用IDEA创建Maven项目时,如果需要使用servlet API,需要手动添加servlet-api的依赖。添加依赖项、更新项目、重新构建项目后,即可使用servlet API了。 ### 回答3: 当我们使用IDEA创建一个Maven项目时,会发现servlet-api并没有被包含在项目中。这是因为servlet-api是JavaEE的标准,而Maven项目入门模板是基于JavaSE的,没有包含这一扩展。 那么,如何解决这个问题呢?下面是具体的解决方案: 1. 手动添加servlet-api依赖 可以在项目的pom.xml文件中手动添加servlet-api依赖,如下所示: ``` <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>{servlet-api版本号}</version> </dependency> ``` 其中,servlet-api版本号可以根据自己的需要进行设置。 2. 通过Maven导入servlet-api 在Maven的仓库中,servlet-api是可以找到的。因此,我们可以通过在项目中添加如下依赖,直接从Maven仓库中导入servlet-api: ``` <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>{servlet-api版本号}</version> <scope>provided</scope> </dependency> ``` 其中,scope为provided,表示该依赖只在编译和测试时使用,在运行时会由应用服务器提供。 3. 使用webapp Maven archetype创建项目 webapp Maven archetype是一种特殊的Maven模板,它已经包含了servlet-api和其他Web相关依赖。因此,使用这个模板创建项目就不会有缺少servlet-api的问题了。 以上是关于解决IDEA创建Maven项目没有servlet-api的三种方法。不同的方法适合不同的场景,在使用中要根据实际情况进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵魂相契的树

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值