史上最难HelloWorld

2023-11-13

Tomcat

Tomcat就是一个HTTP服务器,HTTP协议是前后端交互的桥梁,前端就是浏览器,后端就是一个HTTP服务器,在Java中最常用的HTTP服务器就是Tomcat。

大家可以去这里下载Tomcat Tomcat官网

下载完成后找到下载的Tomcat中的bin目录双击
在这里插入图片描述
就可以运行Tomcatz,.bat后缀的,是Windows的批处理文件,还有一个.sh后缀的,是Linux/mac的shell脚本。

在这里插入图片描述
看到这个界面Tomcat就启动成功了。

Servlet

Servlet是什么呢?他是由Tomcat提供给程序员的API,用来帮助程序猿操作HTTP协议的。Servlet并非都是由程序猿写完的,我们自己写的仅仅是一个小的代码片段,并把他镶嵌到Tomcat中。

创建一个项目

首先我们需要创建一个Maven项目,Maven可以把他看作一个应用商城,它可以帮助我们快速引入第三方库。
在这里插入图片描述
创建好后的界面如下
在这里插入图片描述

引入依赖

我们需要在Maven的中央仓库中找到Servlet的依赖,复制蓝底的那一段代码到我们创建的Maven文件的pom.xml中,这样就引入了Servlet依赖。
在这里插入图片描述
在这里插入图片描述
第三方依赖都需要放在<dependencies></dependencies>这对标签里面。

创建目录

除此之外我们还需要创建一个目录:
在这里插入图片描述
再次强调一下,这里目录的名字也必须和我一样。

编写代码

在这里插入图片描述
我们创建一个类并继承HttpServlet这个类,同时重写方法doGet,第一个输出是在控制台中输出,服务器端可以看见吗,客户端看不见,第二行代码是向响应的body中写入hello world字符串,这个内容就会随着响应返回给客户端浏览器上,并显示出来,我们还可以进行一下设置。
在这里插入图片描述
对响应中body的编码方式进行设置。

打包

在这里插入图片描述
进行上面的操作之后我们就可以看见左边资源管理器中多出来了一些东西:
在这里插入图片描述
此时一个.jar包就打好了,但是有一个问题普通的Java程序打成jar包没有问题,但是要部署给Tomcat的程序我们需要达成war包,如何操作呢。

在这里插入图片描述

部署

部署很简单,就是把对应打好的war包拷贝到tomcat的webapps目录中就可以了。
在这里插入图片描述

验证

我们需要向自己的HTTP发送一个请求,这样才会执行doGet方法,注意URL需要匹配才可以。

在这里插入图片描述
注意此时我们使用的URL:
1、helloServlet,成为Context Path / Application Path,表示了一个webapp,也就是war包的名字
2、hello,成为Servlet Path,标识当前请求要调用那个Servlet类的doGet。
在这里插入图片描述
上面我们就完成了使用Servlet在前端页面上打印一个hello world。

优化一下打包和部署-Smart Tomcat

在真正进行部署项目的时候需要使用上面的打包和部署的方法,那日常开发中想要一边写一边测试代码是否有问题也这么麻烦嘛?

当然不会的,程序猿都是非常怕麻烦的,我们可以使用一个工具Smart Tomact
在这里插入图片描述
这里我是下好的,如何大家没有可以先下载一下
在这里插入图片描述
在这里下载即可,下载完成使用时需要进行一下配置
在这里插入图片描述
在这里插入图片描述
此时运行程序,同样在前端页面和服务器上都打印了hello world。

Servlet常见的问题

404
检查一下以下问题:
1、请求的路径是否写对
2、路径写对了,war包是否正确加载,查看Tomcat日志

405
1、发送的请求的方法和代码不匹配
2、忘记干掉父类方法了

500
意味这服务器的代码抛出异常了,观察一下异常的调用栈。

空白页面
服务器没有返回任何数据

无法访问此网站
检查一下网络

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

史上最难HelloWorld 的相关文章

随机推荐

  • 操作系统7-信号量与管程

    回顾一下 并发问题 多线程并发导致资源竞争 同步概念 1 协调多线程对共享数据的访问 2 任何时刻只能由一个线程执行临界区代码 确保同步正确的方法 底层硬件支持 高层次的编程抽象 锁 信号量是锁机制在同一层上的高层抽象编程方法 一 信号量s
  • html如何设置网页的背景图片

    div div
  • Web安全面试题之-信息搜集(1)

    1 信息收集如何处理子域名爆破的泛解析问题 根据一个不存在的子域名的解析IP 来记录获取黑名单 IP 在爆破字典时 如果解析的IP在这个黑名单中 则默认跳过 如果不存在 我们则入库处理 还有一种泛解析的爆破处理方式是根据TTL来做判断 我们
  • 【Linux基础及shell脚本】Shell脚本中变量的使用

    文章目录 1 Shell变量基础 1 1 什么是变量 1 2 如何在Shell中定义和使用变量 2 Shell环境变量 2 1 什么是环境变量 2 2 环境变量与普通变量的区别 2 3 如何查看 设置和删除环境变量 3 Shell位置参数
  • 串口通信及中断

    异步通信 发送和接收数据的双方用各自的时钟控制数据的发送和接收 为降低数据传输的错误率要求双方时钟尽可能一致 异步通信以帧为单位传送数据 由于每帧数据都具有起始位和停止位所以两帧数据之间的间隔时间不影响数据传送和接收的准确率 但是每帧数据内
  • Git 笔记 - git commit

    文章目录 01 git commit 02 git commit m 03 git commit a 04 git commit p 05 git commit C 06 git commit c 07 git commit n 08 gi
  • 关于Map、WeakMap、Set 、WeakSet

    在计算机程序中 弱引用与强引用相对 是指不能确保其引用的对象不会被垃圾回收器回收的引用 一个对象若只被弱引用所引用 则被认为是不可访问的 或弱访问的 并因此可能在任何时刻被回收 Map Map 它类似于对象 也是键值对的集合 并且能够记住键
  • 基于长短期记忆神经网络LSTM的预测模型(matlab实现)

    希望是附丽于存在的 有存在 便有希望 有希望 便是光明 鲁迅 1 普通循环神经网络 循环神经网络 Recurrent Neural Networks 简称RNN 是一种能够处理时间序列数据的神经网络模型 可以自然的拟合时间和数据之间的关系
  • go 接口作为方法参数传递 

    接口作为方法参数传递 在方法内部修改结构体 示例 type IUserService interface GenId type UserService struct id string func u UserService GenId ge
  • git:分支管理策略

    主分支Master 首先 代码库应该有一个 而且仅有一个主分支 所有提供给用户使用的正式版本 都在这个主分支上发布 Git主分支的名字 默认叫做Master 它是自动建立的 版本库初始化以后 默认就是在主分支在进行开发 主分支 也是用于部署
  • 微信订阅号和公众号的区别

    第一 定位不同 订阅号为用户提供信息和资讯 服务号主要为用户提供服务 第二 群发信息量不同 订阅号每天 24小时内 可以发送1条群发消息 最新公众平台 服务号1个月 30天 内仅可以发送4条群发消息 第三 用户收到信息提醒方式不同 群发信息
  • Golang如何配置国内镜像

    1 打开国内镜像官网 GOPROXY IO 一个全球代理 为 Go 模块而生 2 您只需通过简单设置 PowerShell Windows 配置 GOPROXY 环境变量 env GOPROXY https goproxy io direc
  • Django 快速搭建博客 第六节

    上节我们用模板弄出来第一个hello world 这节课 我们把数据库里面真正的数据跟单篇文章的详情页显示出来 一 模板的下载 这里的模板下载指的是 下载js和css文件 一个网站想要变得漂亮 变得可以稍微好看点 这里我们使用是bootst
  • vue 使用nuxt创建工程

    1 按回车确定项目名称 2 选择语法 3 选择npm 4 选择框架 5 选择请求方式 6 7 8 9 10 11 回车 12 显示下面提示则创建成功 13
  • 数字电路与系统学习笔记(戚金清)

    第一章 数字逻辑基础 1 1模拟信号 模拟电路 数字信号 数字电路 连续变化的物理量是模拟量 表示模拟量的信号是模拟信号 字符数量无限 离散变化的物理量是数字量 表示数字量的信号是数字信号 字符数量有限 构成模拟电路的元件是电子管 模拟计算
  • stm32F4修改时钟频率,更换为8MHz晶振

    stm32F4修改时钟的方法和stm32F103修改时钟的方法不大一样 毕竟库都换了嘛 一个F1的库一个F4的库 而且F1的库默认晶振时钟就是8MHz 大多数开发板也用的8MHz时钟 给我们提供了很多的方便 F1的库关于PLL的写法也很直观
  • access_token

    access token是公众号的全局唯一接口调用凭据 公众号调用各接口时都需使用access token 开发者需要进行妥善保存 access token的存储至少要保留512个字符空间 access token的有效期目前为2个小时 需
  • 【Maven】jar包冲突原因与最优解决方案

    Maven jar包冲突原因与最优解决方案 文章目录 前言 jar包冲突原因 依赖传递 冲突原因 jar包冲突解决方案 Maven默认处理策略 排除依赖 版本锁定 maven shade plugin插件 总结 前言 你是否经常遇到这样的报
  • 机械革命Z2如何Ubuntu安装

    机械革命Z2如何Ubuntu安装 准备 一个4G大的U盘下载了Ubuntu系统 1 首先要进入BIOS F2 关闭Security Boot 设置U盘启动第一启动顺序 2 这个时候将选项移动到此处不要按回车 按E 3 此时 进入编辑模式 大
  • 史上最难HelloWorld

    文章目录 Tomcat Servlet 创建一个项目 引入依赖 创建目录 编写代码 打包 部署 验证 优化一下打包和部署 Smart Tomcat Servlet常见的问题 Tomcat Tomcat就是一个HTTP服务器 HTTP协议是前