认识Servlet---2

news2025/1/11 4:13:09

在这里插入图片描述

hi,大家好,今天我们继续来认识Servlet

1.更方便的部署方式

2.访问出错的问题分析

3.Servlet的API之HttpServlet

🍨🍨🍨🍨

🍭1.更方便的部署方式
在上一期的讲解中,我们已经完整的创建项目并且编写代码并且得到了验证,那么七个步骤是否可以简化一下呢?
当然可以,我们能简化的地方就是打包代码和部署
那么我们就要借助插件plugin来完成这个工作
什么是插件呢?
插件就是为了实现小众功能而生的,可以视为是对某个软件原有功能的扩充

🧊1.我们需要在IDEA应用商店下载Smart Tomcat插件
在这里插入图片描述
在settings的marketplace搜索框搜索tomact,下载我这个图里面的Smart Tomcat,
使用Smart Tomcat可以简化打包部署工作
🧊2.使用Smart Tomact
首次使用要稍微麻烦一点,需要配置一下
在这里插入图片描述
同时这里自定义的名字就是Content Path,
如果我们的程序是拷贝war到webapps目录运行,Content Path就是war包的名字
如果使用Smart Tomcat,Content Path就是在上述配置自定义的名字,如果不配置,默认是项目名字
然后运行
在这里插入图片描述
点击这个三角就行
看运行结果
在这里插入图片描述
这个蓝色的点开就会报错
在这里插入图片描述
为哈呢?
因为URL不匹配啊!
少了一个Servlet Path
在这里插入图片描述

加上就对了
smart tomcat和上一个我们讲的将war包拷贝到wabapps里面运行存在本质区别

1.smart tomcat一般用于开发和调试阶段

2.将war包拷贝到wabapps里面运行一般是部署到生产环境时会用的

3.smart tomcat使用了Tomcat的另外一种运行方式,在运行Tomcat的时候,通过特定的参数,来指定Tomcat加载某个特定目录的webapp,下图可以体现这句话
在这里插入图片描述
所以这个过程没有打包也没有拷贝

=======================================================================

🍭2.访问出错的问题分析
我们来分析一下Servlet程序的常见问题
1.我们的老朋友了~~
404 表示浏览器访问的资源在服务器上不存在
原因

1.请求的路径写错了
2.路径写对了,war包没有加载正确 比如web.xml写错了,就会导致war包不能被正确加载 比如两个Servlet的Servlet Path一样,那么也会导致不能被正确加载 当出现错误,服务器日志有提示,可以根据那个看到错误显示
这里注意为什么说web.xml写错,就会导致war包不能被正确加载呢?

解答:war是一种 Java Web 应用程序包的标准格式,它包含了应用程序所有的资源文件、Java 类和配置文件等,并可以被部署在 Servlet 容器中。web.xml也是web程序的一个重要配置文件,如果 Web.xml 文件存在错误,会导致应用程序未能正确加载初始化,无法正常工作,从而无法提供应用程序的功能。此时,如果将有问题的 war 包部署在 Servlet 容器中,可能会导致 Servlet 容器出现异常,并提示加载 Web 应用程序失败

405

1.发的请求的方法和代码不一样 写的代码是doPost,发的是get请求,一定报错
2.没出现第一个问题,但是super.doGet忘记注释了

500:服务器抛异常了,就是代码的bug,进行调试即可

🍭3.Servlet的API之HttpServlet
Servlet API有很多,我们重点掌握三个类

1.HttpServlet类
2.HttpServletRequest
3.HttpServletResponse

今天我们先来介绍第一个

HttpServlet类
在这里插入图片描述

写Servlet程序就要继承这个类
我们要知道这个类里面哪些方法可以被重写,都是干啥的

方法名称调用时机
initHttpServlet 实例化之后被调用一次
destory在 HttpServlet 实例不再使用的时候调用一次
service收到 HTTP 请求的时候调用
doGet收到 GET 请求的时候调用(由 service 方法调用)
doPost收到 POST 请求的时候调用(由 service 方法调用)
doPut/doDelete/doOptions/…收到其他请求的时候调用(由 service 方法调用)

1.init方法
可以看到它的调用时间是在HttpServlet实例化之后被调用一次,什么时候HttpServlet被实例化呢?首次收到匹配的请求的时候,会调用到这个方法执行一次,来使用这个方法进行一些初始化的相关操作
在这里插入图片描述
这个请求会触发HelloServlet类的doGet方法的执行,那么就会在调用doGet方法之前先调用init方法一次

在这里插入图片描述
注意,只执行一次!!!
2.destroy方法
这个方法是该webapp被卸载(被销毁之前)执行一次,用来做一些收尾工作.,不过destroy方法能否执行,这个具有不确定性
1.如果是按照8005管理端口停止服务器,那么destroy就能执行
2.如果采用暴力的方法直接杀死进程停止服务器,那么derstroy不能执行
Tomcat在启动的时候会占用两个端口,8080和8005
8080是业务端口
8005是管理端口,负责重新加载配置,重新启动,调整设置项等
3.service方法
每次收到路径匹配的请求的时候都会执行
不会重写service,都是重写doXXX
Servlet的生命周期
1.init在初始情况下调用一次
destroy是结束之前调用一次
service是每次收到路径匹配的请求都调用一次

doXXX的方法我们采用postman 来让大家看
在这里插入图片描述
doPost
在这里插入图片描述
doPut
在这里插入图片描述

doDelete
在这里插入图片描述

🥗🧀最后强调一个问题
当浏览器出现乱码的情况,说明是乱码了.
数据返回的时候采用的编码方式是utf8
浏览器展示的时候,根据系统默认编码方式gbk来解析
这俩方式不一样,就会产生乱码问题
现在utf8更加主流,因此我们就在代码中添加这样一段代码

在这里插入图片描述

这段代码就是告诉浏览器返回的数据是utf8格式的,那么浏览器就会按照utf8的格式去解析

今天的讲解就到这里,我们下期再见咯,拜拜~~~
在这里插入图片描述

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

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

相关文章

Linux之进程地址空间

文章目录 前言一、是什么1.例子2.感性的理解虚拟地址空间3.现象的具体解释4.写时拷贝 二、为什么三、怎么办总结 前言 内存区域划分: 在学习C/C时我们都有接触过内存区域划分这个概念,也知道它表示的是程序加载到内存中不同的数据所分布的不同的区域&a…

阿里云服务器数据盘是什么?系统盘和数据盘区别

阿里云服务器系统盘和数据盘有什么区别?系统盘类似Windows电脑的C盘,数据盘相当于其他盘符,数据盘可以有多个而系统盘只能有一个,数据盘可有可无而云服务器系统盘是必须要有的。阿里云服务器网来详细说下阿里云服务器数据盘和系统…

电子企业MES管理系统解决方案

随着信息技术的飞速发展,电子企业面临着日益复杂的数据管理、生产流程和业务决策等问题。如何应对这些问题并提高企业生产效率已成为电子企业的当务之急。本文旨在探讨电子企业MES管理系统的解决方案,以应对电子企业面临的挑战。 在制定电子企业MES管理…

苹果笔不用原装可以吗?推荐性价比最高的平替苹果笔

苹果Pencil的价格令人难以入手,单支就要接近千元,我实在想不通,这款电容笔怎么会以969元的价格出售?尽管苹果的Pencil性能非常不错,但是我认为它的价值还是不值这个价钱。当前国产的平板电容笔正不断完善中&#xff0c…

华为OD机试之羊、狼、农夫过河(Java源码)

羊、狼、农夫过河 题目描述 羊、狼、农夫都在岸边,当羊的数量小于狼的数量时,狼会攻击羊,农夫则会损失羊。农夫有一艘容量固定的船,能够承载固定数量的动物。 要求求出不损失羊情况下将全部羊和狼运到对岸需要的最小次数。只计算…

Zookeeper集群 + Fafka集群

Zookeeper 概述 Zookeeper 定义 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 Zookeeper 工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心…

Python3,使用openpyxl进行excel数据对比,反手一个赞。

openpyxl技能 1、引言2、代码实战2.1 安装2.2 代码实战2.2.1 思路2.2.2 代码示例 3、总结 1、引言 小屌丝:鱼哥,我最近在对搞数据对比,你有什么便捷的方法? 小鱼:斗胆问一句,数据量多少? 小屌丝…

lammps教程:Ovito计算RDF方法

本文介绍ovito分析rdf的方法以及参数设置。 专栏已经介绍过多种rdf的计算方法。 如:在in文件中计算rdf: lammps案例:液体平衡态rdf计算模拟练习 编程后处理计算rdf: lammps后处理:python ovito编程计算不同原子对…

Linux运维必备的13款实用工具,你用过吗?

本文介绍几款 Linux 运维比较实用的工具,希望对 Linux 管理员有所帮助。 1、查看进程占用带宽情况-Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。 下载:http://sourceforge.net/projects/nethogs/files/nethogs…

Vue+SpringBoot,一款企业级的进销存管理系统,星标2.7k

介绍 Finer 进销存系统是一款面向中小企业的管理软件,基于十多年的中小企业管理经验,由ERP领域的资深专家分析设计;基于J2EE快速开发平台Jeecg-Boot开发,前后端分离架构SpringBoot2.x、Ant Design&Vue、Mybatis-plus、Shiro、…

从零开始搭建属于自己的物联网平台(二)实现基于订阅发布的消息总线

实现基于订阅发布的消息总线 往期链接实现的功能及形式功能设计及代码实现生产者使用redis实现生产者 消费者使用redis实现消费者 配套Subscribe注解实现BeanPostProcessor监听所有的bean创建 EventBus对象 往期链接 从零开始搭建属于自己的物联网平台(一&#xff…

测试类型(单元、集成、系统或手动测试)

测试类型(单元、集成、系统或手动测试) 单元测试 单元是系统的单个组件,例如类或单个方法。孤立地测试单元称为单元测试。 优点:速度快/易控/易写 缺点:缺乏现实性/无法捕获所有错误(例如与其他组件或服务的交互) 单元…

40. 组合总和 II

40. 组合总和 II 回溯 去重

springboot+vue+java旅行旅游景点酒店预订出行订票系统eaog5

线上旅行信息管理系统要求实现以下功能: a.景点管理,展示景点的基础信息,介绍等信息。 b.酒店管理,展示酒店的基础信息,介绍等信息。 c.评价管理,可以查看景点或酒店的相关评价信息,客户消费完,…

Vue3+express实现动态编辑element-plus组件tag标签和select下拉框

需求是利用element-plusd的组件标签tag去实现增加部门的种类,效果图如下: ①在系统设置中添加/删减对应的部门 ②在部门下拉框中弹出自己设置的部门 实现的思路是:通过系统设置中的部门设置增删部门,更新数据库中的部门设置字段…

【Vue2.0源码学习】虚拟DOM篇-Vue中的DOM-更新子节点

文章目录 1. 前言2. 更新子节点3. 创建子节点4. 删除子节点5. 更新子节点6. 移动子节点7. 回到源码8. 总结 1. 前言 在上一篇文章中,我们了解了Vue中的patch过程,即DOM-Diff算法。并且知道了在patch过程中基本会干三件事,分别是:…

小型流水线模型的制作

1. 功能说明 本文示例将实现R327a样机——一款5工序的小型流水线模型,包含铸锭送料、传送、搬运、模拟加工、码垛5个工序。 2. 结构说明 小型流水线主要是由铸锭送料结构、传送机构、搬运机构、模拟加工机构、码垛机构5部分组成。 3. 电子硬件 在这个示例中&#xf…

Qt文件系统源码分析—第七篇QFileSelector

深度 本文主要分析Windows平台,Mac、Linux暂不涉及 本文只分析到Win32 API/Windows Com组件/STL库函数层次,再下层代码不做探究 本文QT版本5.15.2 类关系图 QTemporaryFile继承QFile QFile、QSaveFile继承QFileDevice QFileDevice继承QIODevice Q…

【SpringMVC】| 一文带你搞定SpringMVC的@RequestMapping注解

目录 环境搭建 Request注解的功能 1. RequestMapping注解的位置 2、RequestMapping注解的【value】属性 3、RequestMapping注解的【method】属性 4、RequestMapping注解的【params】属性(了解) 5、RequestMapping注解的【headers】属性&#xff0…

Attention 和 Transformer

本文参考d2l,搭配知识点和代码,助力一口气搞懂Transformer,参考: chapter_attention-mechanisms-and-transformers https://d2l.ai/chapter_attention-mechanisms-and-transformers/index.html 目录如下: x.1 Queri…