利用Servlet编写第一个“hello world“

news2025/1/19 7:51:56

利用Servlet编写第一个"hello world"

  • 🔎创建 Maven 项目
  • 🔎引入依赖
  • 🔎创建目录
  • 🔎编写代码
  • 🔎打包代码
  • 🔎部署
  • 🔎程序验证
  • 🔎结尾

🔎创建 Maven 项目


Maven 是一个构建工具
功能是帮助我们去构建, 测试, 打包一个项目

  • Java 中的构建工具包括
    • Ant(一款较老的构建工具)
    • Maven(当前比较主流的构建工具)
    • Gradle(一款较新的构建工具, 当前主要是 Android 生态使用)

首次创建 Maven 项目, Idea 会从互联网加载很多的依赖(需要花费一定的时间)

在这里插入图片描述

创建 Maven 项目后, 会有一个 pom.xml 配置文件

在这里插入图片描述

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

在这里插入图片描述

🔎引入依赖


Servlet 是 Tomcat 提供的 API(不是标准库提供)
表示需要额外下载 Servlet

登录 Maven 中央仓库
Maven 中央仓库

在搜索框中输入 servlet

在这里插入图片描述

确认后弹出如下界面

在这里插入图片描述

选择第一个 Java Servlet API

在这里插入图片描述

选择版本号为 3.1.0
Servlet 3.1.0 版本对应的 Tomcat 版本为 8.5

在这里插入图片描述
复制代码到 pom.xml 配置文件中

在这里插入图片描述

在 pom.xml 配置文件中手动输入 <dependencies></dependencies>

在这里插入图片描述

此处的 jar 包, 默认被下载在本地的隐藏目录中

在这里插入图片描述

🔎创建目录


创建 webapp

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建 WEB-INF

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建 web.xml

web.xml 应用于 Tomcat
pom.xml 应用于 Maven

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
复制如下代码到 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>

这里可能出现报红
但不会影响到程序

在这里插入图片描述

🔎编写代码


创建一个类

在这里插入图片描述
继承 HttpServlet
HttpServlet 来自 Servlet 的 jar 包(引入的依赖)

在这里插入图片描述

重写 doGet() 方法

  • HttpServletRequest, Http 请求
  • HttpServletResponse, Http 响应
  • doGet, 根据请求计算响应

一个服务器程序, 其基本工作流程大致如下

  • 读取请求并解析
  • 根据请求计算响应
  • 将响应返回到客户端

在这里插入图片描述

此处需要将 super.doGet(req, resp); 注释掉

因为 doGet() 方法会返回 405 页面

405 Method Not Allowed 表示方法不被允许

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

打印 hello world

  • 在服务器打印 hello world, System.out.println("hello world");
  • 在客户端打印 hello world, resp.getWriter().write("hello world");

在这里插入图片描述

为 HelloServlet 添加注解

在这里插入图片描述

代码编写完毕
此处并不需要编写 main 方法
这是因为上述代码并非独立运行, 而是插入到 Tomcat 中, 由 Tomcat 调用

🔎打包代码


由于程序不能独立运行(需部署到 Tomcat 运行)
因此需要将代码进行打包操作

类似于搬家, 需要先收拾物品(打包)
然后再将其搬运到新的地方(部署)

  • 在 Java 中, 使用的压缩包
    • jar(普通的 Java 程序打成 jar 包)
    • war (部署到 Tomcat 的程序打成 war 包)

点击右侧 Maven, 弹出如下界面

在这里插入图片描述

  1. 点击 Servlet_s
  2. 点击 Lifecycle
  3. 找到 package, 双击进行打包
  • 双击 package 后, 执行如下操作
    • 检查代码中是否存在一些依赖, 依赖是否下载好
    • 将代码进行编译, 生成一堆 .class 文件
    • 将 .class 文件, web.xml 按照一定格式进行打包

在这里插入图片描述

弹出如下界面表示打包成功

在这里插入图片描述

此时左侧界面会生成 target 目录

在这里插入图片描述

仔细查看发现此时的压缩包格式是 jar 包

将压缩包格式调整为 war 包
需要调整 pom.xml 描述生成的包的包格式

<packaging>war</packaging>复制到 pom.xml 即可

在这里插入图片描述

此处也可以修改打出的包的名称
将打出的包的名称修改为 hello_servlet
在这里插入图片描述

打出的 war 包, 且名称为 hello_servlet

在这里插入图片描述

🔎部署


部署
将打好的 war 包, 拷贝到 Tomcat 的 webapps 目录中

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

启动 Tomcat 后, 自动将 war 包进行了解压缩

在这里插入图片描述

🔎程序验证


浏览器效果

在这里插入图片描述

Tomcat 效果(服务器)

在这里插入图片描述

  • hello_servlet, 称为 Context Path / Application Path
    标识了一个 webapp(就是这个 webapp 的目录名 / war 包名)
    在这里插入图片描述
  • hello, 称为 Servlet Path
    • 标识当前请求调用哪个 Servlet 类的 doGet()
    • 一个 webapp, 可以有多个 Servlet
      在这里插入图片描述

🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油

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

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

相关文章

基于yolov5的车辆行人道路检测

一、数据集介绍 本实验使用自动驾驶的公开数据集BDD100K。   数据格式&#xff1a;BDD100K 数据集包含10万段高清视频&#xff0c;每个视频约40秒\720p\30 fps&#xff0c;总时间超过1,100小时。视频序列还包括GPS位置、IMU数据和时间戳&#xff1b;视频带有由手机记录的GPS/…

【刷题之路】LeetCode 1700. 无法吃午餐的学生数量

【刷题之路】LeetCode 1700. 无法吃午餐的学生数量 一、题目描述二、解题1、思路分析2、代码实现2.1、先将队列实现一2.2、代码实现 一、题目描述 原题连接&#xff1a; 1700. 无法吃午餐的学生数量 题目描述&#xff1a; 学校的自助午餐提供圆形和方形的三明治&#xff0c;分…

进程信号之产生

目录 &#x1f3c6;一、认识信号 &#x1f3c6;二、信号的产生 ①通过终端按键产生信号 ②调用系统函数向进程发信号 ③由硬件异常产生信号 ④软件条件产生信号 &#x1f3c6;三、进程退出时的核心转储的问题 &#x1f3c6;一、认识信号 生活中&#xff0c;有很多信号…

Python 下载的 11 种姿势,一种比一种高级

今天我们一起学习如何使用不同的Python模块从web下载文件。此外&#xff0c;你将下载常规文件、web页面、Amazon S3和其他资源。 通过本文的学习&#xff0c;你将学到如何克服可能遇到的各种挑战&#xff0c;例如下载重定向的文件、下载大型文件、完成一个多线程下载以及其他策…

面试官:你会从哪些维度进行MySQL性能优化?

面试官如果问你&#xff1a;你会从哪些维度进行MySQL性能优化&#xff1f;你会怎么回答&#xff1f; 所谓的性能优化&#xff0c;一般针对的是MySQL查询的优化。既然是优化查询&#xff0c;我们自然要先知道查询操作要经过哪些环节&#xff0c;然后思考可以在哪些环节进行优化…

English Learning - L3 作业打卡 Lesson3 Day21 2023.5.25 周四

English Learning - L3 作业打卡 Lesson3 Day21 2023.5.25 周四 引言&#x1f349;句1: Here is another expression about meat one man’s meat is another man’s poison.成分划分连读爆破语调 &#x1f349;句2: In other words, one person might like something very muc…

postMessage引发XSS

这次的主题是postMessage未验证消息来源origin&#xff0c;导致恶意代码注入的dom-xss&#xff0c;由于很少人关注这类型的注入&#xff0c;因为挖掘难度中等&#xff0c;需要一定的javascript代码审计能力&#xff0c;且漏洞危害等级不高&#xff0c;导致国内许多SRC都存在跨域…

【计算机网络】 7、websocket 概念、sdk、实现

文章目录 一、背景二、简介三、client3.1 ws 构造函数3.2 ws.readyState3.3 ws.onopen3.4 ws.onclose3.5 ws.onmessage3.6 ws.send3.7 ws.bufferedAmount3.8 ws.onerror 四、server4.1 go4.1.1 apifox client4.1.2 js client 五、范式 一、背景 已经有了 http 协议&#xff0c…

懂点自动化基础就要25k? 测试总监:给你15K,爱来不来

公司前段缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-25k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是3年工作经验&#xff0c;但面试…

【C++11】C++的新特性(详解)

文章目录 1.C11简介2.统一的列表初始化2.1{}初始化2.2 std::initializer_list 3.声明3.1 auto3.2 decltype3.3 nullptr 4.范围for5.STL中一些变化5.1 array5.2 forward_list容器5.3 unordered_map和unordered_set容器 1.C11简介 相比于C98/03&#xff0c;C11则带来了数量可观的…

2023年武汉市职业院校技能大赛“网络安全”竞赛任务书

2023年武汉市职业院校技能大赛“网络安全” 竞赛任务书 一、竞赛时间 总计&#xff1a;360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服…

2023年电工杯B题半成品论文使用讲解

注&#xff1a;蓝色字体为说明备注解释字体&#xff0c;不能出现在大家的论文里。黑色字体为论文部分&#xff0c;大家可以根据红色字体的注记进行摘抄。该文件为半成品论文&#xff0c;即引导大家每一步做什么&#xff0c;怎么做&#xff0c;展示按着本团队的解题思路进行建模…

Integrated LogicAnalyzer v6.2 (Vivado ILA使用方法)

Chapter 1 Overview 1.1 Feature Summary&#xff08;功能摘要&#xff09; FPGA设计中的信号连接到ILA核时钟和探针输入&#xff08;图1-1&#xff09;。这些连接到探针输入的信号以设计速度进行采样&#xff0c;并使用片上块RAM&#xff08;BRAM&#xff09;进行存储…

【旅游网】前后端分离——用户管理

1、先创建数据库&#xff0c;建立用户表 2、创建后端项目&#xff0c;这里使用Springboot&#xff0c;创建好controler、mapping、pojo、service四个文件&#xff0c;在实体里创建User类 package com.example.pjtest.Pojo;public class User {public int id_u;public Strin…

SpringBoot 之 Tomcat 与 Undertow 容器性能对比

一、前言&#x1f525; 环境说明&#xff1a;Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 在上一篇《SpringBoot 之配置 Undertow 容器》一文中写道&#xff1a;“Undertow 的性能和内存使用方面都要优于 Tomcat 容器”, 这一期&#xff0c;我就要给大家来求证…

受不了了,被00后卷的想辞职了

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&…

御剑WEB指纹识别系统教程,图文教程(超详细)

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 御剑WEB指纹识别 一、基本使用二、内置字典三、自定义字典四、扫描原理 御剑WEB指纹识别系…

php html转pdf wkhtmltopdf

系统CentOS7.6 1.安装 wkhtmltopdf yum install wkhtmltopdf 看别的大佬的教程这步就已经可以正常生成&#xff0c;但我这边运行脚本的时候返回了 "wkhtmltopdf: cannot connect to X server" 2.安装 Xvfb yum install Xvfb 3.运行脚本 xvfb-run --server-ar…

20220912深圳市梧桐山桃花源看植物

20220912深圳市梧桐山桃花源看植物 2023/5/27 13:27 大自然生态探索之旅第3期 明天去梧桐山看植物。有空不&#xff1f; 交通方式&#xff1a; 黄贝岭地铁站C出口坐M445到终点&#xff01; 02木荷 https://baijiahao.baidu.com/s?id1676100940201729045&wfrspider&fo…

人生苦短,我用Python。

人生苦短&#xff0c;我用Python。欢迎大家一起分享&#xff0c;你是如何入门Python的~ 方向一&#xff1a;你是如何学习/自学 Python 的&#xff1f; 偶然的机会接触到python&#xff0c;于是开始利用空闲时间学起了python。自学过2年python&#xff0c;有一些学习心得和避坑…