tomcat处理HTTP 请求流程
- 在浏览器上输入http://localhost:8080/my-web-mave/index.jsp
- 请求被发送到本机端口8080,被在那里侦听的Connector获得
- Connector把请求交给它所在的Service的Engine来处理,并等待Engine的回应
- Engine获得请求localhost/my-web-maven/index.jsp,匹配它拥有的所有虚拟主机Host,我们的虚拟主机在server.xml默认配置是localhost
- Engine匹配到name=localhost的Host
- localhost Host获得请求/my-web-maven/index.jsp,匹配它所拥有的所有Context
- Host匹配到路径为/my-web-maven的Context(如果匹配不到就把该请求交给路径名为”"的Context去处理)
- path=”/my-web-maven”的Context获得请求/index.jsp,在它的mapping table中寻找对应的servlet
- Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
- 构造HttpServletRequest对象和HttpServletResponse对象返回给Host
- Host把HttpServletResponse对象返回给Engine
- Engine把HttpServletResponse对象返回给Connector
- Connector把HttpServletResponse对象返回给客户browser
tomcat组件介绍
server
最外层的核心组件,可以说启动一个tomcat就是启动一个server 作用: 1.提供了监听器机制,用于在tomcat整个生命周期中对不同事件进行处理 2.提供tomcat容器全局的命名资源实现 3.监听某个端口以接受SHUTDOWN命令
service
表示一个或多个Connector的集合,这些Connector共享一个Container 来处理其请求 同一个 Tomcat 实例内可以包含任意多个 Service 实例,它们彼此独立 Connector用于接受请求并将请求封装成Request和Response,然后给Container处理,处理完后交给Connector返回给客户端
Container
容器的父接口,用于封装和管理Servlet,具体处理Request请求
四大请求处理组件 Engine:表示整个Servlet引擎,最高层级的容器对象
引擎:可运行的Catalina的servlet引擎实例,包含servlet容器的核心功能。一个服务器只能有一个引擎。不是直接处理请求的容器,却是获取目标容器的入口,Engine元素下可包含一个或多个虚拟主机Host
Host:代表一个站点,也叫虚拟主机
通过配置Host可以添加站点, Host容器是Engine容器的子容器,其子容器是Context 例如: 访问具体JSP页面URL中localhost就是一个虚拟主机,其作用是运行多个应用,并对这些应用进行管理
Context: 用于表示Servletcontext的一类容器
在Servlet规范中,Servletcontext及一个独立的Web应用,代表一个应用程序,或者WEB-INF目录及下面的web.xml文件
Wrapper:用于表示Web应用中定义的Servlet的一类容器
每一个Wrapper封装这一个Servlet
两个核心组件
Connector 主要负责处理Socket连接,Request与Response的转化
Container 包括Engine、Host、Context和Wrapper,主要负责内部的处理及Servlet的管理
|