Tomcat架构设计

Servlet规范

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

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

Tomcat架构设计_第1张图片

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结构

Tomcat架构设计_第2张图片

顶级元素:

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架构设计_第3张图片

Tomcat生命周期

LifeCycle接口设计

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

生命周期的方法

       Tomcat架构设计_第4张图片

 

你可能感兴趣的:(tomcat,servlet,java)