七个步骤 从零到servlet第一个hello

news2024/9/22 21:35:36

目录

Tomcat安装

Servlet

1.引入项目

2.引入依赖

3.创建目录

1.创建 webapp 目录

2.创建 web.xml

3.编写 web.xml

4.编写代码

5.打包程序

 6.部署程序

7.验证程序

Smart Tomcat


Tomcat安装

在动漫世界,我们有汤姆猫

在Java世界,同样也有一个大名鼎鼎的汤姆猫:

Tomcat 是一个 HTTP 服务器。前面我们已经学习了 HTTP 协议,知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式。同时也通过 ajax 和 Java Socket 分别构造了 HTTP 客户端。HTTP 服务器我们也同样可以通过 Java Socket 来实现。而 Tomcat 就是基于 Java 实现的一个开源、免费,也是被广泛使用的 HTTP 服务器。

通过Tomcat官网来下载:

Apache Tomcat® - Apache Tomcat 8 Software Downloads

 下载解压缩后,我们会看到如下的文件目录:

  • bin\ 存放各种启动、停止脚本的。*.sh 是以后在 linux 上用的,*.bat 是在 windows 上用的
  • startup.bat 启动服务,双击即可使用
  • conf\ 相关的配置文件,目前我们不用关心
  • lib\ 运行 tomcat 需要的类库,我们不关心
  • logs\ 运行时的日志文件,我们有时需要查看日志,来发现定位一些问题
  • temp\ 临时文件夹,不关心
  • webapps\ 存放我们要运行的 web application 的文件夹,最常用的一个文件夹
  • work\ Tomcat 内部进行预编译的文件夹

目光放到webapps目录,这是web applications 的简称,意思是用来存放 web 应用的文件夹。理解为 "web" 应用。

一个具有独立完整功能的 "网站",我们就可以称为一个 "web 应用"。例如搜狗搜索实现了独立完整的 "搜索引擎功能",淘宝网实现了独立完整的 "电商功能"。一个 Tomcat 服务器上可以同时部署多个这样的 web 应用。这些 web 应用以目录的形式被放到webapps目录中。

 在 bin 目录中, 双击 startup.bat 即可启动 Tomcat 服务器。看到如下图就代表启动成功。

同时在浏览器中访问127.0.0.1:8080 即可看到 Tomcat 的默认欢迎页面.

准备Tomcat的部分就完成了。

Servlet

Servlet 是一种实现动态页面的技术。是一组 Tomcat 提供给程序猿的 API,帮助程序猿简单高效的开发一个web app,并且能够很方便的和Tomcat配合起来,完成一个web app。

我们使用IDEA(IDEA版本2023.2.5)来完成操作,通过写一个servlet程序部署到Tomcat上然后通过浏览器访问,得到hello world字符串。

1.引入项目

我们需要用到的是Maven。Maven是一个工程管理工具,我们主要使用它的管理依赖和打包的功能。因为IDEA内置了Maven,所以只需要在最开始创建项目的时候使用Maven就好了。

注意:如果首次使用Maven,项目创建好了之后会从中央仓库加载一些依赖,可能会耗费比较长的时间。

2.引入依赖

要正常运行Servlet程序,需要引入Servlet 对应的jar包。

Maven 项目创建完毕后, 会自动生成一个 pom.xml 文件。我们需要在 pom.xml 中引入 Servlet API 依赖的 jar 包。

在中央仓库 https://mvnrepository.com/中搜索 "servlet", 一般第一个结果就是。

 我们使用的Tomcat是8.5版本的,所以Maven选择3.10版本,

把中央仓库中提供的 xml 复制到项目的 pom.xml 中,需要加一个<dependencies>

3.创建目录

当项目创建好了之后, IDEA 会帮我们自动创建出一些目录,形如

  • src 表示源代码所在的目录
  • main/java 表示源代码的根目录,后续创建 .java 文件就放到这个目录中。
  • main/resources 表示项目的一些资源文件所在的目录,此处暂时不关注。
  • test/java 表示测试代码的根目录,此处暂时不关注。

但是有了这些目录还不够,还需要自己手动新建一些目录。

1.创建 webapp 目录

在 main 目录下,和 java 目录并列,创建一个 webapp 目录 (注意, 不是 webapps)

2.创建 web.xml

然后在 webapp 目录内部创建一个 WEB-INF 目录,并创建一个 web.xml 文件

3.编写 web.xml

往 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>

4.编写代码

在 java 目录中创建一个类 HelloServlet,代码如下:

WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
        System.out.println("hello");
        resp.getWriter().write("hello");
   }
}

这一部分比较复杂,留到下一篇文章详细介绍。

5.打包程序

使用Maven进行打包,一般在IDEA的右侧面板,双击package(或者右键进行操作)即可进行打包。

 出现BUILD SUCCESS就代表打包成功。

同时发现,生成了一个target目录,并且生成了一个jar包。

但是Tomcat识别的是另一种格式的包,叫做war包。

war 包和 jar 包的区别

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

于是在 pom.xml 中新增一个 packing 标签,表示打包的方式是打一个 war 包。

在 pom.xml 中再新增一个 build 标签,内置一个 finalName 标签,表示打出的 war 包的名字是 HelloMyServlet。

重新使用 maven 打包,可以看到生成的新的 war 包的结果。

 6.部署程序

把 war 包拷贝到 Tomcat 的 webapps 目录下。启动 Tomcat ,Tomcat 就会自动把 war 包解压缩。

7.验证程序

此时通过浏览器访问 http://127.0.0.1:8080/HelloMyServlet/hello 就可以看到结果了。

注意: URL 中的 PATH 分成两个部分, 其中 HelloServlet 为 Context Path, hello 为 Servlet Path。

 至此,一个Servlet程序就完成了。

Smart Tomcat

手动拷贝 war 包到 Tomcat 的过程比较麻烦,我们还有更方便的办法:使用 IDEA 中的 Smart Tomcat 插件完成这个工作。

在插件中安装好Smart Tomcat

点击绿色的三角号, IDEA 就会自动进行编译, 部署, 启动 Tomcat 的过程。

使用 Smart Tomcat 部署的时候,我们发现 Tomcat 的 webapps 内部并没有被拷贝一个 war 包,也没有看到解压缩的内容。Smart Tomcat 相当于是在 Tomcat 启动的时候直接引用了项目中的 webapp 和 target 目录。

之后就可以在浏览器中访问页面了。

在IDEA中会出现一个URL,但是并不是我们最终需要访问的,还需要加上Servlet Path,也就是@WebServlet后面的Hello。

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

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

相关文章

精彩预告 | OpenHarmony即将亮相MTSC 2023

MTSC 2023 第12届中国互联网测试开发大会&#xff08;深圳站&#xff09;即将于2023年11月25日&#xff0c;在深圳登喜路国际大酒店举办&#xff0c;大会将以“1个主会场4个平行分会场”的形式呈现&#xff0c;聚集一众顶尖技术专家和行业领袖&#xff0c;围绕如今备受关注的行…

redis之主从复制和哨兵模式

&#xff08;一&#xff09;redis的性能管理 1、redis的数据缓存在内存中 2、查看redis的性能&#xff1a;info memory&#xff08;重点&#xff09; used_memory:904192&#xff08;单位字节&#xff09; redis中数据占用的内存 used_memory_rss:10522624 redis向操作系统…

锯木棍

题目描述 有一根粗细均匀长度为 L 的木棍&#xff0c;先用红颜色刻度线将它 m 等分&#xff0c;再用蓝色刻度线将 其 n 等分&#xff08; m>n &#xff09;&#xff0c;然后按所有刻度线将该木棍锯成小段&#xff0c;计算并输出长度最长的木棍的长度和根数。 输入格式…

(内部资料)收下这几个人工智能学习秘籍!

秘籍一&#xff1a;练好基本功 学习基础知识&#xff1a;人工智能涉及多个学科领域&#xff0c;包括数学、计算机科学、统计学等。因此&#xff0c;学习基础知识是非常重要的。您可以通过学习线性代数、概率论和微积分等数学基础知识&#xff0c;以及掌握Python编程语言和常用…

Linux学习笔记-Ubuntu下使用Crontab设置定时任务

文章目录 一、概述二、基于crontab的设置2.1 基本命令说明2.2 使用-e指令编辑命令2.2.1 进入编辑模式2.2.2 指令信息格式2.2.4 开启日志1) 修改rsyslog配置文件2) 重启rsyslog3) 查看日志 2.2.3 设置后之后重启服务 三、示例3.1 每隔一分钟往文件中日期3.2 使用-l查看任务列表3…

微软重磅发布4个适合初学者的机器学习资料

自媒体火起来后&#xff0c;很多科技大佬都开始写博客&#xff0c;录视频了&#xff0c;大佬一入行&#xff0c;整个行业卷上天&#xff0c;像我这样的也只能走资源整合之路了&#xff0c;不过这样也好&#xff0c;科技进步&#xff0c;人类发展需要他们。 除了个人&#xff0…

深度学习常见激活函数:ReLU,sigmoid,Tanh,softmax,Leaky ReLU,PReLU,ELU整理集合,应用场景

文章目录 1、ReLU 函数&#xff08;隐藏层中是一个常用的默认选择&#xff09;1.1 优点1.2 缺点 2、sigmoid 函数2.1 优点2.2 缺点 3、Tanh 函数3.1 优点3.2 缺点 4、softmax 函数&#xff08;多分类任务最后一层都会使用&#xff09;5、Leaky ReLU 函数5.1 优点5.2 缺点 6、PR…

KDE 项目发布了 KDE Gear 23.08.3

导读KDE 项目发布了 KDE Gear 23.08.3&#xff0c;作为最新的 KDE Gear 23.08 开源集合的第三次维护更新&#xff0c;该集合包含了用于 KDE Plasma 桌面环境和其他平台的 KDE 应用程序。 KDE Gear 23.08.3 是在 KDE Gear 23.08.2 大约一个月之后发布的&#xff0c;包含了更多对…

Maven中常用命令以及idea中使用maven指南

文章目录 Maven 常用命令compiletestcleanpackageinstallMaven 指令的生命周期maven 的概念模型 idea 开发maven 项目idea 的maven 配置idea 中创建一个maven 的web 工程在pom.xml 文件添加坐标坐标的来源方式依赖范围编写servlet maven 工程运行调试 Maven 常用命令 compile …

阿里云高效计划学生和老师免费代金券申请认证方法

阿里云高校计划学生和教师均可参与&#xff0c;完成学生认证和教师验证后学生可以免费领取300元无门槛代金券和3折优惠折扣&#xff0c;适用于云服务器等全量公共云产品&#xff0c;订单原价金额封顶5000元/年&#xff0c;阿里云百科aliyunbaike.com分享阿里云高校计划入口及学…

掌握技术访谈:CNN、Seq2Seq、Faster R-CNN 和 PPO — 揭开卓越编码和创新之路

一、说明 本文 揭开CNN、Seq2Seq、Faster R-CNN 和 PPO — 编码和创新之路。对于此类编程的短小示例&#xff0c;用于开发时临时参考。 二、数据准备 问题陈述&#xff1a;在本次挑战中&#xff0c;您将深入计算机视觉世界并使用卷积神经网络 (CNN) 解决图像分类任务。您将使用…

Figma最全面的新手指南,从基础到高级,一网打尽

1 Figma界面介绍 Figma基础界面与传统设计软件没有太大区别&#xff0c;有Sketch使用经验的用户几乎可以无缝连接到Figma。 立即体验 免费的在线Figma汉化版即时设计是一款支持在线协作的专业级 UI 设计工具&#xff0c;支持 Sketch、Figma、XD 格式导入&#xff0c;海量优质设…

4.2V升多串LED驱动升压6V9V12V恒流点灯

4.2V升多串LED驱动升压6V9V12V恒流点灯 探索WT7012&#xff0c;这款引领潮流的升压转换器&#xff0c;其强大功能将彻底改变您的LED驱动格局。可以轻松驾驭多达7串白光LED&#xff0c;展现出无与伦比的驱动能力。 无论是单节锂电池还是多节锂电池供电产品&#xff0c;宽电压3…

Centos8上部署MySQL主从备份

虚拟机环境如下&#xff1a; Node1192.168.1.110Centos8 Node2192.168.1.111Centos8 1.在Node1和Node2上安装数据库&#xff1b; yum install -y mysql* 2.关闭防火墙服务&#xff0c;关闭开启自启&#xff1b; systemctl stop firewalld systemctl disable firewall…

人工智能中的文本分类:技术突破与实战指导

在本文中&#xff0c;我们全面探讨了文本分类技术的发展历程、基本原理、关键技术、深度学习的应用&#xff0c;以及从RNN到Transformer的技术演进。文章详细介绍了各种模型的原理和实战应用&#xff0c;旨在提供对文本分类技术深入理解的全面视角。 关注TechLead&#xff0c;分…

使用内网穿透工具实现远程访问本地部署的Odoo企业管理系统

文章目录 前言1. 下载安装Odoo&#xff1a;2. 实现公网访问Odoo本地系统&#xff1a;3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件&#xff0c;是一个一站式全功能ERP及电商平台。 开源性质&#xff1a;Odoo是一个开源的ERP软件&#xff0c;这意味着企…

【高性能计算】CUDA,OpenCL,FPGA 加速,MPI

OpenCL OpenCL&#xff08;Open Computing Language&#xff09;是一种跨平台的GPU加速技术&#xff0c;由Khronos Group开发。OpenCL允许开发人员在不同的硬件平台上编写并行计算应用程序。 OpenCL使用C语言的子集来编写应用程序&#xff0c;并提供了一组API&#xff0c;可以…

一文带你快速了解Python史上最快Web框架

文章目录 1. 写在前面2. Sanic框架简介2.1 背景2.2 特征与优势 3. Sanic框架实战3.1. 安装Sanic3.2. Demo案例编写 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&a…

C#中的var究竟是强类型还是弱类型?

前言 在C#中&#xff0c;var关键字是用来声明变量类型的&#xff0c;它是C# 3.0推出的新特征&#xff0c;它允许编译器根据初始化表达式推断变量类型&#xff0c;有点跟javascript类似&#xff0c;而javascript中的var是弱类型。它让C#变量声明更加简洁&#xff0c;但也导致了…

2023年中国合成云母行业现状及市场格局分析[图]

合成云母是一种通过化工原料经高温熔融冷却析晶而制得的单斜晶系矿物&#xff0c;属于典型的层状硅酸盐&#xff0c;许多性能都优于天然云母&#xff0c;如合成云母的耐温高达1200℃以上&#xff0c;而天然白云母在550℃下就会开始分解&#xff0c;金云母则在800℃开始分解。除…