黑龙江省建设厅网站的电话,网页设计师必须知道的网站,老鹰主机 建wordpress,哪些因素营销网站权重一、概念
Tomcat 服务器是一个开源的轻量级Web应用服务器#xff0c;在中小型系统和并发量小的场合下被普遍使用#xff0c;是开发和调试Servlet、JSP 程序的首选。
二、原理
Tomcat结构图#xff1a;
Tomcat主要组件#xff1a;服务器Server#xff0c;服务Serv…一、概念
Tomcat 服务器是一个开源的轻量级Web应用服务器在中小型系统和并发量小的场合下被普遍使用是开发和调试Servlet、JSP 程序的首选。
二、原理
Tomcat结构图
Tomcat主要组件服务器Server服务Service连接器Connector、容器Container。连接器Connector和容器Container是Tomcat的核心。
一个Container容器和一个或多个Connector组合在一起加上其他一些支持的组件共同组成一个Service服务有了Service服务便可以对外提供能力了但是Service服务的生存需要一个环境这个环境便是ServerServer组件为Service服务的正常使用提供了生存环境Server组件可以同时管理一个或多个Service服务。
三、两大组件
1、Connector
一个Connecter将在某个指定的端口上侦听客户请求接收浏览器的发过来的 tcp 连接请求创建一个 Request 和 Response 对象分别用于和请求端交换数据然后会产生一个线程来处理这个请求并把产生的 Request 和 Response 对象传给处理Engine(Container中的一部分)从Engine出获得响应并返回客户。 Tomcat中有两个经典的Connector一个直接侦听来自Browser的HTTP请求另外一个来自其他的WebServer请求。HTTP/1.1 Connector在端口8080处侦听来自客户Browser的HTTP请求AJP/1.3 Connector在端口8009处侦听其他Web Server其他的HTTP服务器的Servlet/JSP请求。 Connector 最重要的功能就是接收连接请求然后分配线程让 Container 来处理这个请求所以这必然是多线程的多线程的处理是 Connector 设计的核心。
2、Container
Container是容器的父接口该容器的设计用的是典型的责任链的设计模式它由四个自容器组件构成分别是Engine、Host、Context、Wrapper。这四个组件是负责关系存在包含关系。通常一个Servlet class对应一个Wrapper如果有多个Servlet定义多个Wrapper如果有多个Wrapper就要定义一个更高的Container如Context。 Context 还可以定义在父容器 Host 中Host 不是必须的但是要运行 war 程序就必须要 Host因为 war 中必有 web.xml 文件这个文件的解析就需要 Host 了如果要有多个 Host 就要定义一个 top 容器 Engine 了。而 Engine 没有父容器了一个 Engine 代表一个完整的 Servlet 引擎。
Engine 容器 Engine 容器比较简单它只定义了一些基本的关联关系Host 容器 Host 是 Engine 的子容器一个 Host 在 Engine 中代表一个虚拟主机这个虚拟主机的作用就是运行多个应用它负责安装和展开这些应用并且标识这个应用以便能够区分它们。它的子容器通常是 Context它除了关联子容器外还有就是保存一个主机应该有的信息。Context 容器 Context 代表 Servlet 的 Context它具备了 Servlet 运行的基本环境理论上只要有 Context 就能运行 Servlet 了。简单的 Tomcat 可以没有 Engine 和 Host。Context 最重要的功能就是管理它里面的 Servlet 实例Servlet 实例在 Context 中是以 Wrapper 出现的还有一点就是 Context 如何才能找到正确的 Servlet 来执行它呢 Tomcat5 以前是通过一个 Mapper 类来管理的Tomcat5 以后这个功能被移到了 request 中在前面的时序图中就可以发现获取子容器都是通过 request 来分配的。Wrapper 容器 Wrapper 代表一个 Servlet它负责管理一个 Servlet包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器它没有子容器了所以调用它的 addChild 将会报错。 Wrapper 的实现类是 StandardWrapperStandardWrapper 还实现了拥有一个 Servlet 初始化信息的 ServletConfig由此看出 StandardWrapper 将直接和 Servlet 的各种信息打交道。
3、其他组件
Tomcat 还有其它重要的组件如安全组件 security、logger 日志组件、session、mbeans、naming 等其它组件。这些组件共同为 Connector 和 Container 提供必要的服务。
四、HTTP请求过程 Tomcat Server处理一个HTTP请求的过程
1、用户点击网页内容请求被发送到本机端口8080被在那里监听的Coyote HTTP/1.1 Connector获得。 2、Connector把该请求交给它所在的Service的Engine来处理并等待Engine的回应。 3、Engine获得请求localhost/test/index.jsp匹配所有的虚拟主机Host。 4、Engine匹配到名为localhost的Host即使匹配不到也把请求交给该Host处理因为该Host被定义为该Engine的默认主机名为localhost的Host获得请求/test/index.jsp匹配它所拥有的所有的Context。Host匹配到路径为/test的Context如果匹配不到就把该请求交给路径名为“ ”的Context去处理。 5、path“/test”的Context获得请求/index.jsp在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。 6、构造HttpServletRequest对象和HttpServletResponse对象作为参数调用JspServlet的doGet或doPost.执行业务逻辑、数据存储等程序。 7、Context把执行完之后的HttpServletResponse对象返回给Host。 8、Host把HttpServletResponse对象返回给Engine。 9、Engine把HttpServletResponse对象返回Connector。 10、Connector把HttpServletResponse对象返回给客户Browser。