Tomcat架构设计

news/2024/12/12 15:33:48/

Servlet规范

    Servlet是JavaEE规范中的一种,主要是为了扩展Java作为Web服务的功能,统一定义了对应的接口,如Servlet接口,HttpRequest接口,HttpResponse接口,Filter接口。然后由具体的服务厂商来实现这些接口如Tomcat,jetty

    Servlet规范中规定了一个http请求到来的执行处理流程:对应的服务器容器会接收到对应的Http请求,然后解析该请求,创建对应的Servlet实例,调用对应init方法完成初始化,把请求相关信息封装为HttpServletRequest对象来调用Servlet的service方法处理请求,最后通过HttpServletResponse分装响应的信息交给容器,响应给客户端

Servlet核心API

ServletConfig      获取servlet初始化参数和servletContext对象

     容器在初始化servlet时,为该servlet创建一个servletConfig对象,并将这个对象通过init()方法来传递并保存在此Servlet对象中。核心作用:获取初始化信息、获取ServletContext对象

ServletContext    在整个Web应用的动态资源之间共享数据

     一个项目只有一个ServletContext对象,可以在多个Servlet中来获取这个对象,使用它可以给多个Servlet传递数据,该对象在Tomcat启动时创建,Tomcat关闭时才会销毁,作用在整个Wen应用的动态资源之间共享数据。

ServletRequest   封装Http请求信息,在请求时创建

    HttpServletRequest接口继承ServletRequest接口,用于封装请求信息,该对象在用户请求servlet时创建并传入servlet的service()方法,在该方法中传入的servletRequest将会被强制转化为HttpServletRequest对象来进行进行HTTP请求信息的处理。核心作用:获取请求报文信息、获取网络连接信息、获取请求域属性信息

ServletResponse 封装Http响应信息,在请求时创建

    HttpServletResponse继承自ServletResponse,封装了Http响应信息。客户端每个请求,服务器都会创建一个response对象,并传入给Servlet.service()。核心作用:设置响应头信息、发送状态码、设置响应正文、重定向

Tomcat结构

顶级元素:

Server:整个配置文件的根元素

Service:代表一个Engine元素以及一组与之相连的Connector元素

连接器

代表了外部客户端发送请求到特定Service的接口,同时也是外部客户端从特定Service接收响应的接口

容器

容器的作用是处理Connector接收进来的请求,并产生对应的响应,Engin,Host,Context都是容器父子关系

Engine:可以处理所有请求

Host:可以处理发向一个特定虚拟主机的所有请求

Context:可以处理一个特定Web应用的所有请求

当客户端请求发送过来后通过组建相互之间配合完成了对应的操作

Sever元素在最顶层,代表整个Tomcat容器,一个Server元素中可以有多个Service元素

Service在Connnector在Engine外面包了一层,把他们组装一起对外提供服务。一个Service可以包含多个Connector,但是只能包含一个Engine,Connector接收请求,Engine处理请求

Engine,Host和Context都是容器,且Engine包含Host,Host包含Context。每个Host组件代表Engine中的一个虚拟机。每个Context组件代表在特定Host上运行的一个Web应用

Tomcat生命周期

LifeCycle接口设计

       为了统一管理Tomcat中的核心组件的生命周期,而专门设计LifeCycle接口统一管理

生命周期的方法

       

 


http://www.ppmy.cn/news/468584.html

相关文章

浅析GPT2中的autoregressive和BERT的autoencoding源码实现

经常使用BERT来做研究,因此对Encoder的架构较为熟悉,但是从来没有了解过GPT这样的Decoder架构,尤其对自回归的形式不知道源码是如何实现的。 为了方便对比和讨论,接来下所探讨的源码都是基于HuggingFace这个框架的。 Bert注意力…

给大家推荐好看的壁纸网站,会更新

博客好久没更新,因为实在没学什么,所以也写不出来什么东东了,嘿嘿!今天给大家推荐一个高清的壁纸软件,这个网站虽说加载的有点慢,但壁纸的质量还是不错的 点击这里 第二个 点击这里 第三个 点击这里…

南方电网优惠充值接口分享

电费充值接口 1、添加充值卡 网关URL:https://router.wikeyun.cn/rest/Power/addCard 参数名 类型 必填 参数说明 store_id 字符串 是 店铺ID card_num 字符串 是 充值账号 province 字符串 是 省份,带省字,比如江苏省 city 字符串 是…

项目难点攻破

一、Flink数据倾斜,分流,二次聚合,时间窗口,自定义聚合函数 二、HBase数据倾斜及查询效率问题,Phoenix应用 三、数据入库效率问题,hdfs及HBase分析,批量写入优化 四、CheckPoint优化及配置&a…

TypeScript基础使用方法

Author: 德玛玩前端 Date: 2023-06-07 TypeScript 一、Typescript介绍 1.1、TypeScript产生的原因 旧JS是弱类型语言,一个变量先后可以保存不同类型的数据,所以不可靠。旧JS是解释执行语言,一边解释,一边执行,一些低…

红米note4x Android7,红米Note4X能升级安卓7.0吗?红米Note4X如何升级Android7.0?

欢迎来到PPL网站的行业资讯知识分类,你现在观看的这篇文章要和大家分享的是关于红米Note4X能升级安卓7.0吗?红米Note4X如何升级Android7.0?的一些相关内容,希望大家能够感兴趣,并且希望我们能够帮助到你! 在…

送一台i9十核台式机,吃鸡真爽!

为回馈广大读者粉丝们的大力支持,本号主特地选了这款i9十核台式机作为抽奖礼品送给大家。也可折现。 赠送规则 本次联合抽奖活动,由几位大佬共同赞助。大家使用下面的二维码抽奖,中奖后,联系小编兑换。详细规则如下,请…