【JavaEE】_HttpServlet类

目录

1. init方法

2. destory方法

3. service方法

4. servlet生命周期


前文已经提及到:servlet是tomcat提供的,用于操作HTTP协议的一组API,可以将这组API理解为HTTP服务器的框架;

编写一个servlet程序,往往都要继承HttpServlet类,重写里面的方法,而无需写一个main方法;

对于以往的程序,可将程序视为一辆汽车,main方法就是发动机;

对于servlet程序,可将servlet程序视为一辆火车的车厢,这个程序没有main方法,不是直接运行的,而是放到tomcat上运行的,而tomcat程序是有main方法的,tomcat就是火车头,写的webapp就是车厢。而继承HttpServlet类,重写其方法,就是把程序员自己定义的代码插入到tomcat中;

1. 核心方法

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

注意:1. 以上方法均可在子类中重写; 

2. 以上方法被重写后,均不需要程序员手动调用,都是tomcat在合适的时机自行调用

2. init方法

1. init方法在Servlet被实例化之后自动执行,用于完成初始化操作

3. destory方法

1. destory方法在Servlet被销毁之前自动执行,用于释放资源

2. destory方法很大概率是执行不到的,一个Servlet不用了,说名tomcat要关闭了,tomcat关闭有两种方式:

(1)直接销毁tomcat进程,这种情况下完全来不及调用destory;(更常见)

(2)通过8005管理端口,给tomcat发送停机指令,调用destory关闭tomcat;

4. service方法

1. service方法在每次收到HTTP请求时自动执行,用于处理请求与计算响应

2. 如果不重写service,父类(HttpServlet)的service就会根据请求的方法,分别调用doGet或doPost或doPut方法;

例如:

.java内容如下:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/Method")
public class MethodServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {System.out.println("doPost");resp.getWriter().write("doPost");}@Overrideprotected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doPut");resp.getWriter().write("doPut");}@Overrideprotected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doDelete");resp.getWriter().write("doDelete");}
}

使用Postman构造一个post请求进行测试:

同理构造doPut方法和doDelete方法进行发送;

在服务器日志端也可查看到记录:

5. servlet生命周期

开始时,执行 init;

每次收到请求,执行 service;

销毁前执行 destroy;

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

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

相关文章

基于Java SSM框架实现音乐播放器管理系统项目【项目源码+论文说明】计算机毕业设计

ssm音乐播放器管理系统演示录像2020 摘要 随着社会的发展,计算机的优势和普及使得音乐播放器管理系统的开发成为必需。音乐播放器管理系统主要是借助计算机,通过对首页、音乐推荐、付费音乐、论坛信息、个人中心、后台管理等信息进行管理。减少管理员的…

groovy:XmlParser 读 Freeplane.mm文件,生成测试案例.csv

Freeplane 是一款基于 Java 的开源软件,继承 Freemind 的思维导图工具软件,它扩展了知识管理功能,在 Freemind 上增加了一些额外的功能,比如数学公式、节点属性面板等。 强大的节点功能,不仅仅节点的种类很多&#xff…

蓝桥杯《修剪灌木》

题目描述 爱丽丝要完成一项修剪灌木的工作。有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。当修剪了最右侧的灌木后,她会…

动态规划--状态转移

解码方法 1.题目 2.思路 1)我们定义一个数组dp,其中dp[i]表示字符串s的前i个字符的解码方法总数。初始化时,dp[0]为1,因为空字符串有一种解码方式。dp[1]的值取决于第一个字符是否是0,如果不是0,则有一种…

C/C++暴力/枚举/穷举题目(刷蓝桥杯基础题的进!)

目录 前言 一、百钱买百鸡 二、百元兑钞 三、门牌号码(蓝桥杯真题) 四、相乘(蓝桥杯真题) 五、卡片拼数字(蓝桥杯真题) 六、货物摆放(蓝桥杯真题) 七、最短路径(蓝…

《汇编语言》- 读书笔记 - 实验11 编写子程序

《汇编语言》- 读书笔记 - 实验11 编写子程序 需求思路完整代码效果演示参考资料 需求 编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母,描述如下。 名称letterc功能将以0结尾的字符串中的小写字母转变成大写字母…

8-pytorch-损失函数与反向传播

b站小土堆pytorch教程学习笔记 根据loss更新模型参数 1.计算实际输出与目标之间的差距 2.为我们更新输出提供一定的依据(反向传播) 1 MSEloss import torch from torch.nn import L1Loss from torch import nninputstorch.tensor([1,2,3],dtypetorch.fl…

nginx(二)

nginx的验证模块 输入用户名和密码 第一步先下载httpd 这个安装包 第二步编辑子配置文件 然后去网页访问192.168.68.3/admin/ 连接之后,会出现404,404出现是因为没给网页写页面 如果要写页面,则在/opt/html,建立一个admin&#x…

吴恩达deeplearning.ai:矩阵运算代码实战

神经网络向量化指的是将输入数据转化为向量形式,以便于神经网络的处理。向量化的作用包括以下几点: 提高计算效率:使用向量化的输入数据可以进行并行计算,加速神经网络的训练和推断过程。 减少存储空间:向量化可以将…

C#与VisionPro联合开发——TCP/IP通信

TCP/IP(传输控制协议/互联网协议)是一组用于在网络上进行通信的通信协议。它是互联网和许多局域网的基础,为计算机之间的数据传输提供了可靠性、有序性和错误检测。在软件开发中,TCP/IP 通信通常用于实现网络应用程序之间的数据交…

改进Yolov5目标检测与单目测距 yolo速度测量-pyqt界面-yolo添加注意力机制

当设计一个结合了 YOLOv5 目标检测、单目测距与速度测量以及 PyQt 界面的毕业设计时,需要考虑以下几个方面的具体细节: 计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,私聊会回复! YOLOv5 目标检测: 首先,选择…

汇编反外挂

在软件保护领域,尤其是游戏保护中,反外挂是一个重要的议题。外挂通常指的是一种第三方软件,它可以修改游戏数据、操作游戏内存或提供其他作弊功能,从而给玩家带来不公平的优势。为了打击外挂,游戏开发者会采取一系列措…

H5元素形变

H5元素形变 一、缩放 语法: ​ transform:scale(缩放倍率) //整体缩放 ​ transform:scale(水平缩放倍率,垂直缩放倍率) //单独设置水平和垂直方向的缩放 ​ transform: scaleX(缩放倍率) //沿X轴缩放 ​ transform: scaleY(缩放倍率) //沿Y轴缩放…

Unity类银河恶魔城学习记录7-8 P74 Pierce sword源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Sword_Skill.cs using System; using System.Collections; using System.C…

杰理701N可视化SDK之LED的配置和代码浅析

杰理701N可视化SDK LED的配置 LED硬件配置LED状态配置LED状态情景配置LED在SDK中相关代码 杰理可视化工具中可以配置LED的硬件配置和LED状态配置, 在可视化工具中的LED配置选项中设置 LED硬件配置 硬件配置可设置LED名, 推LED使用的IO口以及LED的点亮方式 SDK发布的标准原理…

Ubuntu中添加和修改Apt Repository

使用Ubuntu Software Center或 apt/apt-get等命令行工具安装软件包时,软件包是从一个或多个 apt 软件库(software repositories)下载的。APT repository是一个网络服务器或本地目录,其中包含可被 APT 工具读取的 deb 软件包和元数…

Linux之项目部署与发布

目录 一、Nginx配置安装(自启动) 1.一键安装4个依赖 2. 下载并解压安装包 3. 安装Nginx 4. 启动 nginx 服务 5. 对外开放端口 6. 配置开机自启动 7.修改/etc/rc.d/rc.local的权限 二、后端部署tomcat负载均衡 1. 准备2个tomcat 2. 修改端口 3…

Linux笔记之LD_LIBRARY_PATH详解

Linux笔记之LD_LIBRARY_PATH详解 code review! 文章目录 Linux笔记之LD_LIBRARY_PATH详解1.常见使用命令来设置动态链接库路径2.LD_LIBRARY_PATH详解设置 LD_LIBRARY_PATH举例注意事项 3.替代方案使用标准路径编译时指定链接路径优先使用 rpath 还是 runpath?注意…

嵌入式软件分层设计的思想分析

“嵌入式开发&#xff0c;点灯一路发” 那今天我们就以控制LED闪烁为例&#xff0c;来聊聊嵌入式软件分层: ——————————— | | | P1.1 |-----I<|--------------<| | | | P2.1 |-------------/ ---------…

【JavaEE】_synchronized关键字——监视器锁monitor lock

目录 1. synchronized的特性 2. synchronized的使用 3. Java标准库中的线程安全类 1. synchronized的特性 &#xff08;1&#xff09;互斥&#xff1a; 前文已经介绍&#xff0c;某个线程执行到某个对象的synchronized中时&#xff0c;其他线程如果也执行到同一个对象&…