1.Tomcat主要在程序中做了些什么?

1.1 创建socket监听在对应的端口

1.2 维护一个线程池

1.3 当有TCP连接时分配一个线程来处理

1.4 从TCP连接中读取数据

1.5 按照HTTP协议解析数据

1.6 将解析后的数据包封装到request对象中

1.7 按照web.xml的映射关系找到对应的Servlet类

1.8 将最后的执行结果response组装成HTTP协议格式的数据包

1.9 重新通过TCP返回给客户端

2.访问servlet 的过程

2.1 connector 负责监听端⼝,当有链接进来时分配线程并实例化HttpllProcessor对数据进⾏ HTTP协议解析,然后将请求交给其所在的engine即Catalina来处理,处理的是域名对应的ip和 端⼝8080 ,注意localhost任然没被使⽤

2.2 engine将从HTTP请求头中获取host参数⽤于选择⼀个匹配的Host 处理的是主机名 localhost(Host可以配置多个,即你可以在⼀台电脑上部署两个完全不相关的web项⽬例如jd 和百度),此时处理的是域名即localhost

2.3 Host将在Context中查找匹配第⼀级路径的Context(web项⽬) 处理的是第⼀级路径(ServletLesson)

2.4 读取ServletLesson项⽬的web.xml配置,查找匹配TestServlet的Servlet

2.5 实例化Servlet,调⽤Service根据请求类型执⾏对应的Get或Post ,处理的真正的客户端请求

2.6 Servlet响应⽅法执⾏完毕后,响应数据依次返回->Context->Host->engine->connector