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
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BETTER LATE THAN NEVER!
评论