Servlet讲解

Servlet生命周期

我们只需要继承Servlet接口,查看方法即可看出Servlet的生命周期

import java.io.IOException;import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class ServletInterface implements Servlet {// 初始化当前Servlet对象(重要)@Overridepublic void init(ServletConfig config) throws ServletException {// TODO Auto-generated method stub}// 获取当前Servlet对象的相关配置@Overridepublic ServletConfig getServletConfig() {// TODO Auto-generated method stubreturn null;}// 处理浏览器发来的请求和数据(重要)@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {// TODO Auto-generated method stubSystem.out.println("Hello ServletInterface!!!");}// 获取描述信息@Overridepublic String getServletInfo() {// TODO Auto-generated method stubreturn null;}// 销毁servlet对象(重要)@Overridepublic void destroy() {// TODO Auto-generated method stub}}

其中最重要的三个方法是init,service,destory

我们可以从这几个方法中大致看出一个Servlet接口对象的一生:

  1. getServletConfig()获取Servlet的配置信息
  2. init(ServletConfig config)方法初始化创建Servlet接口的对象
  3. service()方法处理浏览器发给服务器(比如Tomcat)的ServletRequest请求,并返回ServletResponse响应
  4. 销毁Servlet接口的对象

Servlet接口,HttpServlet抽象类的作用+继承关系

Servlet接口定义了Servlet的生命周期

GenericServlet抽象类实现了Servlet接口,重写实现了init(),getServletConfig(),getServletInfo()和destory()方法

HttpServlet抽象类继承了GenericServlet抽象类,继承了GenericServlet类,只需要强制重写实现service方法即可**(HttpServlet实现了最重要的service()方法)**

HttpServlet为了更好的贴合Http协议请求的请求策略,重回实现了Servlet接口的service()方法,并将其分化成了doGet(),doPost(),doPut(),doDelete()等方法

在这里插入图片描述

Tomcat和Servlet的关系(手写一个Tomcat的关键)

Tomcat本身是一个容器,一个Servlet的容器

动态web项目的目录结构
在这里插入图片描述

Tomcat运行在内存中,容器中有一定数量的Servlet
在这里插入图片描述
其中web.xml配置了每一个Servlet的url访问映射
在这里插入图片描述

在这里插入图片描述
Tomcat会读取web.xml文件,然后将访问映射放到一个HashMap当中(这个HashMap被称为Servlet路由/Servlet容器)

在这里插入图片描述

在这里插入图片描述
当浏览器的请求请求Tomcat时,Tomcat存在一个解析器,去解析请求当中请求头的url,然后去HashMap当中根据key寻找Servlet实现类对象的全限定名

在这里插入图片描述
最后根据全限定名,利用反射获取对象,运行service方法/doGet方法等。这里的HashMap显然充当一个路由表的功能,所以我们可以叫它Servlet路由/Servlet容器

在这里插入图片描述

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

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

相关文章

对数据进行标准化和归一化

数据的形式:保存在CSV中,第一列为姓名,第二列之后为特征。 标准化 输入文件的路径,设置保存转化后的文件路径 import pandas as pd from sklearn.preprocessing import StandardScaler# 读取CSV文件 data pd.read_csv(rC:\User…

GPT 大型语言模型可视化教程

网址: LLM Visualization 简介 欢迎来到 GPT 大型语言模型演练!在这里,我们将探索只有 85,000 个参数的 nano-gpt 模型。 它的目标很简单:取一个由六个字母组成的序列: C B A B B C 并按字母顺序排列,即…

Jboss 反序列化 CVE-2017-12149

一、漏洞简介 JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。在/invoker/readonly路径下,攻击者可以构造序列化代码传入服务器进行反序列化,由于没有对反序列化操作进行任何检测,导致攻击者可以执行任意代码。 而jbo…

TCP(TCP客户端、服务器如何通信)

一、TCP介绍 TCP的特点: 面向连接的协议:TCP是一种可靠的、面向连接的协议,在通信之前需要建立连接,以确保数据的可靠传输。这意味着在传输数据之前,发送方和接收方之间需要建立一条可靠的连接通道。流式协议&#x…

Linux实验 系统管理(三)

实验目的: 了解Linux系统下的进程;掌握一类守护进程——计划任务的管理;掌握进程管理的常用命令;掌握进程的前台与后台管理;了解Linux系统的运行级别;掌握系统服务管理的常用命令。 实验内容: …

040——移植数据库sqlite3到i.mx6ull

目录 一、下载 二、移植数据库 三、测试sqlite3 一、下载 SQLite Download Page 暂时先下载最新版的试试,我们以前其实在ubuntu上直接使用过 嵌入式数据库sqlite3_常见的嵌入式数据库-CSDN博客 当时我把常用的操作和怎么使用记录下来了 现在把他移植到开发板…

下水道井盖多分类检测定位

下水道井盖识别,多分类,使用yolov5训练,采用一部分开源数据集和自建数据集。python pytorch opencv 深度学习#人工智能#深度学习#目标检测

【Python项目】基于大数据的【电影市场预测分析】

技术简介:使用Python技术、B/S架构、MYSQL数据库等实现。 系统简介:系统都需要简单的安全登陆检查,在登陆成功之后要进行在映电影的分析、票房分析、电影数据等功能相关性的数据统计,为了使用方便这些统计型的数据使用图表来进行表…

【基于element ui的color选择器】基于element ui的color选择器

技术版本如下&#xff1a; vue 2.6.14 less 3.13.1 element-ui 2.15.6 less-loader 5.0.0需求&#xff1a; 支持RGB、HEX编码、支持吸管吸取颜色、颜色选择器、颜色模板、透明度、色板、线性渐变颜色 效果图&#xff1a; 1.引入选择器的color-all文件 <template><…

web前端之纯CSS实现简单酷炫的照片墙效果、排除元素的伪类、scale

MENU 效果htmlstylescale:not() 效果 html <div class"container"><div class"box"><img src"../../image/1_.jpg"></div><div class"box"><img src"../../image/2_.jpg"></div>…

【python量化交易】qteasy使用教程06——创建自定义因子选股交易策略

创建自定义因子选股策略 使用qteasy创建自定义因子选股交易策略开始前的准备工作本节的目标Alpha选股策略的选股思想计算选股指标用FactorSorter定义Alpha选股策略交易策略的回测结果用GeneralStg定义一个Alpha选股策略回测结果&#xff1a;本节回顾 使用qteasy创建自定义因子选…

Electron、QT、WPF三强争霸,该支持谁呢?

Electron、QT、WPF都是跨平台的桌面应用开发框架&#xff0c;都是非常流行的&#xff0c;作为开发者该选用哪个呢&#xff1f;本文从多个角度分析一下。 一、定义 Electron、Qt 和 WPF 都是用于创建桌面应用程序的框架或工具&#xff0c;它们各自有着不同的特点和优势。 Elec…

Linux-笔记 开发板Uboot命令使用

将之前自学的知识整理了一下笔记&#xff0c;以便回忆 信息查询命令 1、help/?&#xff1a;查看所支持命令 > ? md md - memory displayUsage: md [.b, .w, .l] address [# of objects]2、bdinfo&#xff1a;查询板子信息 > bdinfo arch_number 0x00000000 boot_p…

匿名管道及其应用

目录 一、什么是匿名管道&#xff1f; 三、创建与使用匿名管道 三、匿名管道的特点 匿名管道的四种情况 匿名管道的五种特性 四、匿名管道的实践应用---进程池 在编程的世界中&#xff0c;匿名管道是一种非常重要的通信机制。今天&#xff0c;让我们一起来深入探讨一下匿…

vivado Virtex-7 配置存储器器件

Virtex-7 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Virtex -7 器件执行擦除、空白检查、编程和验证等配置操作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 &#xff0c; 并支持通过 Vivado 软件对其中所列非易失性存储器 进行擦除、…

单链表经典算法OJ题---力扣206,876(带图详解

1.链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 思路&#xff1a;创建三个指针&#xff0c;看下图 注意&#xff1a;n3如果为空&#xff0c;则不能继续指向下一节点&#xff0c;需要进行判断 代码实现&#xff1a; struct ListNode* reverseLi…

第二课,python基础语法(一),认识字面量和变量、注释

一&#xff0c;字面量 &#xff08;一&#xff09;什么是字面量 被写下来的的固定的值&#xff0c;称之为字面量 &#xff08;二&#xff09;常见的三种字面量类型 &#xff08;三&#xff09;练习一下&#xff0c;使用print去输出三种不同类型的字面量&#xff1a;10&#x…

树莓派安装opencv

安装opencv 上述步骤完成后&#xff0c;输入以下代码(基于python3) sudo apt-get install python3-opencv -y不行的话&#xff0c;试试换源&#xff0c;然后 sudo apt-get update成功&#xff01; 测试opencv是否安装成功 输入 python3 然后再输入 import cv2 没有报错就…

【Java】:向上转型、向下转型和ClassCastException异常

目录 先用一个生动形象的例子来解释向上转型和向下转型 向上转型&#xff08;Upcasting&#xff09; 向下转型&#xff08;Downcasting&#xff09; 向上转型 概念 例子 发生向上转型的情况 1.子类对象赋值给父类引用 2.方法参数传递 3.返回值 向下转型 概念 注意…