Tomcat

参考https://www.cnblogs.com/jeacebolgs/p/6580428.html
https://www.cnblogs.com/zhouyuqin/p/5143121.html
https://blog.csdn.net/xlgen157387/article/details/79006434

说实话 tomcat 用了这么久其实都没好好去了解一下它

官网下载后解压的目录结构如下:


web应用的基本机构目录


tomcat 的配置文件 (conf) 构成:

server.xml:主配置文件;

web.xml:每个 webapp 只有“部署”后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的 webapps 提供默认部署相关的配置;

context.xml:每个 webapp 都可以专用的配置文件,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中;此文件为所有的 webapps 提供默认配置;

tomcat-users.xml:用户认证的账号和密码文件;

catalina.policy:当使用-security 选项启动 tomcat 时,用于为 tomcat 设置安全策略,一般不使用;

catalina.properties:Java 属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数;

logging.properties:日志系统相关的配置;


server.xml配置结构

        <Server> 
            <Service>
                <Connector>
                    <Engine>
                        <Host>
                            <Context/>
                            <Context/>
                            ...
                        </Host>
                        <Host>
                            ...
                        </Host>
                        ...
                    </Engine>
				</Connector>
            </Service>
        </Server>

1、Server 元素:代表整个 Servlet 容器组件,是Tomcat的顶层元素。在 Server 元素中可以包含一个或者多个 Service 元素。

2、Service元素:包含一个 Engine 元素,以及一个或多个 Connector 元素,这些Connector 原先共享一个 Engine 元素。

3、Connector 元素:代表和客户程序时间交互的组件,负责接收客户请求,以及想客户返回响应结果。

4、Engine 元素:每个 Service 只能有一个 Engine 元素。 Engine 元素处理在同一个 Service 中所有 Contector 元素接收到的客户请求。

5、 Host 元素:在一个 Engine 元素中可以包含多个 Host 元素。每个 Host 元素定义了一个虚拟主机,他可以包含一个或多个 Web 应用。

6、 Context 元素:使用最频繁的元素。每个 Context 元素代表了运行在虚拟主机上的单个Web应用。在一个元素中可以包含多个 Context 元素。


处理一个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。

posted @ 2018-06-12 10:10  罗贱人  阅读(203)  评论(0编辑  收藏  举报