拓展:servlet如何处理请求

image.png
PS:解释如下
1、tomcat会生成1个Request对象
2、将request对象传送给sevlet
3、调用servlet的service方法
4、service方法会判断是get还是post请求,执行doGet/doPost方法

拓展:tomcat是servlet容器

tomcat的架构图如下

image.png

Container容器接口含有以下的4个容器子接口

image.png
PS:以上的4个容器接口就组成的tomcat容器,解释如下
1、wrapper:管理servlet
2、context:管理wrapper,每个context对应一个应用程序
3、host:管理context,每个host相当于一个主机,可以部署多个context应用
4、engine:管理host,多条主机需要一个引擎驱动来进行管理

综上:tomcat是servlet容器的意思是指,tomcat的engine、host、context、wrapper都是容器,
创建和调用(管理)着servlet。

拓展:tomcat架构分层的原因

tomcat本质上是一个servlet容器,管理着许多的servlet,那么为什么需要对其进行分层,加上
wrapper、context、host、engine这4个容器层呢?
虽然每个线程对应1个XXservlet实例,但是这些实例可能都属于某个Servlet的实现类,因此为了有效
管理这些实现类, 可以将属于同一个Servlet实现类的XXservlet实例用容器进行管理,因此需要引入
一个Wrapper,同样的一个应用会有多个Wrapper,因此需要引入Context将Wrapper管理起来,接着
一个主机会有多个应用,需要引入host将context管理起来,最终需要引入一个engine管理host。

综上:tomcat对容器进行分层,是为了提高tomcat程序的可拓展性。

拓展:tomcat构造request对象

1、tomcat如何获取request对象?当然是从操作系统内存中的数据获取
2、操作系统内存中的数据来自哪里?既然是请求,数据当然是来自网卡
3、操作系统如何获取网卡中客户端发送http请求的数据。
(1)首先,操作系统如linux是通过调用tcp函数来建立连接的。
(2)其次,该linux函数不可以直接暴露给应用程序,需要封装在socket中
(3)因此,应用程序,也就是tomcat通过IO操作,读取socket中的数据。
(4)但是,然后tomcat根据http协议的格式,解析客户端发送的http请求,将其构造成Request对象
(5)最后,将该Request对象发送到对应的servlet进行处理。

拓展:tomcat热部署、热加载

基本概念

image.png
PS:主机host部署应用context;应用context加载class文件

两者的区别(监听的内容不同)

image.pngimage.png
PS:解释如下
1、webapps是tomcat程序的子目录,servletDemo是一个解压后的war包,即一个项目
2、WEB-INF存放class文件
3、jsp文件不在WEB-INF目录中
PS:修改WEB-INF目录会发生热加载;在servletDemo目录添加内容,会发生热部署