史上最难HelloWorld

news2024/11/24 15:26:54

文章目录

  • Tomcat
  • Servlet
    • 创建一个项目
    • 引入依赖
    • 创建目录
    • 编写代码
    • 打包
    • 部署
    • 验证
  • 优化一下打包和部署-Smart Tomcat
  • Servlet常见的问题

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
意味这服务器的代码抛出异常了,观察一下异常的调用栈。

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

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

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

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

相关文章

设计模式之~访问者模式

简述&#xff1a; 访问者模式表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 访问者模式(Vistor Pattern)是一种将数据结构与数据操作分离的的设计模式。 结构图&#xff1a; 实例&#xff1a; 示例代码&#x…

Linux系统下C语言的编程技巧

Linux系统能够为人们提供更加安全实用的效果,保证计算机系统能够稳定的运行。利用Linux系统下首先要进行C语言的编程,掌握编程的技巧能够更好的发挥计算机的作用。如何掌握Linux系统下计算机C语言的编程技巧是计算机发展的关键要素。本文对Linux系统下计算机C语言的编程技巧进行…

【复习笔记】FreeRTOS(三)任务挂起和恢复

本文是FreeRTOS复习笔记的第三节&#xff0c;任务挂起和恢复&#xff0c;使用的开发板是stm32f407VET6&#xff0c;创建两个任务&#xff0c;task1负责闪烁LED&#xff0c;task2负责按键控制&#xff0c;当按键按下时控制任务挂起&#xff0c;按键再次按下恢复任务&#xff0c;…

【数据结构】经典排序法

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析2 目录 &#x1f449;&#x1f3fb; 直接插入排序&#x1f449;&#x1f3fb; 选择排序&…

微信支付(小程序)-java

微信支付开发者文档微信支付是腾讯公司的支付业务品牌&#xff0c;微信支付提供公众号支付、APP支付、扫码支付、刷卡支付等支付方式。微信支付结合微信公众账号&#xff0c;全面打通O2O生活消费领域&#xff0c;提供专业的互联网行业解决方案&#xff0c;微信支付支持微信红包…

访问github网络问题解决

查看wsl可用镜像列表时产生如下访问github的网络问题 C:\Users\jiangcheng> wsl --list --online 无法从“https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json”中提取列表分发。无法与服务器建立连接 Error code: Wsl/WININET_…

hive任务reduce步骤卡在99%原因及解决

我们在写sql的时候经常发现读取数据不多&#xff0c;但是代码运行时间异常长的情况&#xff0c;这通常是发生了数据倾斜现象。数据倾斜现象本质上是因为数据中的key分布不均匀&#xff0c;大量的数据集中到了一台或者几台机器上计算&#xff0c;这些数据的计算速度远远低于平均…

Vulkan Tutorial 9 模型加载Mipmaps

目录 28 加载模型 Sample mesh 加载顶点和索引 ​编辑 顶点去重 28 加载模型 我们将使用tinyobjloader库来从OBJ文件中加载顶点和面。它的速度很快&#xff0c;而且很容易集成&#xff0c;因为它是一个像stb_image一样的单文件库。将包含tiny_obj_loader.h的目录添加到Add…

ChatGPT国内镜像站

免费国内镜像推荐&#xff08;超稳定&#xff09; 下面为大家收集了目前国内最稳定流畅的ChatGPT镜像网站 目录 机器人 博弈ai 泰cool辣 道合顺 二狗问答 核桃 WOChat GPT中文站 TomChat 利用ChatGPTMindShow三分钟生成PPT ChatGPT国内镜像是啥 ChatGPT 镜像是指…

Xpdf 阅读器源码编译后查看文件中文乱码问题解决

经查阅&#xff0c;是由于缺少中文字体包&#xff1a; 第一步&#xff1a;下载所需要的字体包 下载https://dl.xpdfreader.com/xpdf-t1fonts.tar.gz 包含下载中文字体包&#xff08;非嵌入字体&#xff09; http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/gkai00mp…

pytorch-简单回归问题-手写数字识别

pytorch-简单回归问题-手写数字识别 线性回归添加噪声简单例子分类问题引入-手写数字识别数据集 训练推导手写数字识别1加载数据集编写网络训练网络计算正确率 线性回归添加噪声 使用均方差损失函数来衡量损失 简单例子 通过最小化损失函数&#xff0c;求解出参数w b 下图表示…

封装的函数停发/启动CAN报文,以及报文接收检测,高可用

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe,博客目录大全,点击跳转👉 📘前言 🍅 在测试过程中,我们可能需要可控的停/发某些报文,今天博主给…

chatgpt赋能python:Python主页面的SEO分析及优化建议

Python主页面的SEO分析及优化建议 Python是一种高级编程语言&#xff0c;广泛应用于人工智能、数据分析、Web开发等领域。Python官方网站是Python社区的一个重要门户&#xff0c;为全球学习Python的开发者提供了全面、权威、可靠的信息。在这篇文章中&#xff0c;我们将分析Py…

Text to image论文精读SeedSelect: 使用SeedSelect微调扩散模型It’s all about where you start

随着文本到图像扩散模型的发展&#xff0c;很多模型已经可以合成各种新的概念和场景。然而&#xff0c;它们仍然难以生成结构化、不常见的概念、组合图像。今年4月巴伊兰大学和OriginAI发表《It’s all about where you start: Text-to-image generation with seed selection》…

软件外包开发项目原型图工具

项目原型图工具有非常重要的作用&#xff0c;尤其是在APP项目开发中&#xff0c;对于整体需求的表达是必不可少的工具。相比于传统的文档需求&#xff0c;图形文字的表达可以更清楚的表达需求&#xff0c;让客户清楚的明白软件功能有哪些&#xff0c;最后的界面是怎样的&#x…

微信海量数据查询如何从1000ms降到100ms?

&#x1f449;腾小云导读 微信的多维指标监控平台&#xff0c;具备自定义维度、指标的监控能力&#xff0c;主要服务于用户自定义监控。作为框架级监控的补充&#xff0c;它承载着聚合前 45亿/min、4万亿/天的数据量。当前&#xff0c;针对数据层的查询请求也达到了峰值 40万/m…

RL - 强化学习 上置信界算法 (UCB) 和 汤普森采样算法 (TS)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/130983835 上置信界算法和汤普森采样算法是两种解决多臂老虎机问题的经典方法。多臂老虎机问题是一种探索与利用的平衡问题&#xff0c;…

Java easypoi 导出excel 并合并相关列

在项目开发中经常会使用到合并列&#xff0c;格式如下&#xff1a; 1.引入easypoi <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId></dependency><dependency><groupId>cn.aftertur…

设计模式详解之策略模式

作者&#xff1a;刘文慧 策略模式是一种应用广泛的行为型模式&#xff0c;核心思想是对算法进行封装&#xff0c;委派给不同对象来管理&#xff0c;本文将着眼于策略模式进行分享。 一、概述 我们在进行软件开发时要想实现可维护、可扩展&#xff0c;就需要尽量复用代码&#x…

chatgpt赋能python:Python什么情况下用类

Python什么情况下用类 在Python编程中&#xff0c;类是一种重要的数据结构&#xff0c;它是面向对象编程的核心。类可定义数据类型&#xff0c;并把数据与操作数据的函数组合在一起。因此&#xff0c;通过使用类&#xff0c;我们可以将数据、函数和其他方法组合在一起&#xf…