Servlet体系、与继承HttpServlet的类的执行过程

2024-06-17 12:48

本文主要是介绍Servlet体系、与继承HttpServlet的类的执行过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Servlet体系结构

Servlet接口
在其整个生命周期中,Init是初始化Servlet时调用的方法,Service是处理用户请求、响应用户结果的方法,destroy是Servlet正常销毁时执行的方法。
内部方法:
在这里插入图片描述

ServletConfig接口
内部方法
在这里插入图片描述

GenericServlet抽象类
实现了Servlet接口,并在此基础上,增强实现了ServletConfig接口,具备了ServletConfig内的方法,主要是getServletContext()方法,由此直接方法可拥有直接获得ServletContext的能力。
且该抽象类内还单独提供了无参的init()方法,可将初始化功能和数据的代码在此处处理(不要借用有参的init()方法)。
内部方法:
在这里插入图片描述

HttpServlet抽象类
继承了GenericServlet抽象类,其处理用户请求的方法与原本的Servlet一样在Service()方法中。在HttpServlet中提供了两个Service方法:
一个是
在这里插入图片描述
本方法目的是增强ServletRequest和ServletResponse为HttpServletRequest和HttpServletResponse,将其通过this传入本类中的另一个专门接收Http类型对象的方法,即下面的Service方法:
在这里插入图片描述
本次增强的目的,是因为为了调用HttpServletRequedoPostst和HttpServletResponse对应的doGet方法和doPost方法,两个方法对外提供,并最终被我们重写。

当一个类继承了HttpServlet后,其执行流程为:
1、通过浏览器的地址栏输入的url地址的末尾,如本例的/aim,定位到web.xml配置文件(如下图)或者注解。
在这里插入图片描述
2、在web.xml配置文件中,url地址末尾定位到url-pattern,获得servlet的自定义名称“demo”,通过该名称在servlet中找到其对应类“com.test.servlet.Demo”,去执行Demo。

3、该类继承了HttpServlet,因此会先执行其父类的Service方法。(想象如果Demo不重写任何方法,其就是HttpServlet,则在完成其父类GenericServlet内的init()方法后,接着就是完成Service方法)。
在这里插入图片描述
该service方法如下:
在这里插入图片描述
4、上面的Service方法强转ServletRequest和ServletResponse,接着调用本类下的Http的Service方法,如下
在这里插入图片描述
本方法判断请求方式是get还是post,并最终回到我们创建的Demo中,调用我们重写的doGet和doPost方法。
在这里插入图片描述

这篇关于Servlet体系、与继承HttpServlet的类的执行过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069485

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和

Redis-在springboot环境下执行lua脚本

文章目录 1、什么lua2、创建SpringBoot工程3、引入相关依赖4、创建LUA脚本5、创建配置类6、创建启动类7、创建测试类 1、什么lua “Lua”的英文全称是“Lightweight Userdata Abstraction Layer”,意思是“轻量级用户数据抽象层”。 2、创建SpringBoot工程 3、引入相关依赖 <?xml version

JavaWeb系列六: 动态WEB开发核心(Servlet) 上

韩老师学生 官网文档为什么会出现Servlet什么是ServletServlet在JavaWeb项目位置Servlet基本使用Servlet开发方式说明快速入门- 手动开发 servlet浏览器请求Servlet UML分析Servlet生命周期GET和POST请求分发处理通过继承HttpServlet开发ServletIDEA配置ServletServlet注意事项和细节 Servlet注

js小题:通过字符串执行同名变量怎么做

在JavaScript中,你不能直接使用一个字符串来直接引用一个变量,因为JavaScript是一种静态类型语言(尽管它的类型在运行时可以变化),变量的名字在编译时就被确定了。但是,有几种方法可以实现类似的功能: 使用对象(或Map)来存储变量: 你可以使用一个对象来存储你的变量,然后使用字符串作为键来访问这些变量。 let myVars = { 'var1': 'Hello', 'var

mysql中存储过过程和游标的联合使用

1.SQL如下: DELIMITER //DROP PROCEDURE IF EXISTS PrintAllEmployeeNames5;CREATE PROCEDURE PrintAllEmployeeNames5()BEGINDECLARE error_count INT DEFAULT 0;DECLARE num INT ;DECLARE done INT DEFAULT

第三十七章 添加和使用自定义标题元素 - 自定义标头的继承

文章目录 第三十七章 添加和使用自定义标题元素 - 自定义标头的继承自定义标头的继承示例 在 `SOAPHEADERS` 参数中指定支持的标头元素自定义标头的继承 第三十七章 添加和使用自定义标题元素 - 自定义标头的继承 自定义标头的继承 如果创建此Web 服务的子类,该子类将继承不特定于方法的标头信息 — 包含在 <request> 或 <response> 元素中的标头信

js实现继承的多种方式

1:原型链方式,即子类通过prototype将所有在父类中通过prototype追加的属性和方法都追加到Child,从而实现了继承   function Person(){   }   Person.prototype.hello = "hello";   Person.prototype.sayHello = function(){     alert(this.h

Class 对象在执行引擎中的初始化过程

一个 class 文件被加载到内存中需要经过 3 大步:装载、链接、初始化。 装载 装载是指 Java 虚拟机查找 .class 文件并生成字节流,然后根据字节流创建 java.lang.Class 对象的过程。 链接 链接过程分为 3 步:验证、准备、解析。 验证: 初始化 这是 class 加载的最后一步,这一阶段是执行类构造器方法的过程,并真正初始化类变量。 1.文件格式检验:检

绿联nas折腾过程中遇到的问题

绿联nas折腾过程中遇到的问题 目录 ssh权限问题超级用户 ssh 权限问题 使用chmod -R 777 目录/ 给指定目录及其所有子目录和文件设置最大的权限,权限设置为 rwxrwxrwx(读、写、执行权限给所有用户)。这个命令会将目录和文件的权限设置为非常宽松,允许所有用户对它们进行任何操作。 700只有所有者有读和写以及执行的权限 查看访问权限:ls -l 当前文件夹下所有用