avatar

servlet学习笔记

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

文章作者: Frosro
文章链接: https://frosro.github.io/2020/05/04/servlet%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BETTER LATE THAN NEVER
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论