标签:客户端 tom blog 帮助 解析 nec 程序 理解 读取
Servlet通常指我们继承了Servlet接口的类,我们开发Servlet时一般就是继承HttpServlet重写它的doGet、doPost方法达到提供服务的目的。Servlet不仅仅是这些,我们用的JSP在编译器也会被编译成Servlet类,JSP是一种页面渲染更为方便的Servlet。
Servlet是一个提供服务的类,那它是如何发挥作用呢?要了解Servlet,我们有必要了解一下它的容器比如Tomcat。想象一下在一栋大楼里有非常多特殊服务者Servlet,这栋大楼有一套智能系统帮助接待顾客引导他们去所需的服务提供者那接受服务。这里顾客就是一个个请求,特殊服务者就是Servlet,而这套智能系统就是Tomcat容器。
Tomcat服务器本质是通过ServerSocket与客户端进行通信,有两个核心组件,Connecter和Container。
Connecter将在指定端口上侦听客户请求,接收浏览器的发过来的 tcp 连接请求,创建一个 Request 和 Response 对象分别用于和请求端交换数据。Request包含客户端的请求信息,Response包含服务器的应答信息。
然后会产生一个线程来处理这个请求并把产生的 Request 和 Response 对象传给Container处理。
Connector 的核心功能是接收连接请求,并分配线程让 Container 来处理请求,所以它的核心是多线程处理。
当Connector处理完后会调用Container的invoke()方法,我们可以想象Container容器里有一条管道,管道上有很多阀门,每个阀门都会根据request进行一些操作,request和response会依次经过这些阀门,而Servlet就是管道的最后一道阀门,之前的阀门就是filter。
Tomcat容器的上下层级关系如下图。
Tomcat的四层容器不都是必须的,简单的容器只有Context和Wrapper两层。
Contenxt负责管理多个Wrapper,把映射转发到对应Wrapper,期间还要经过filter过滤。
Wrapper是最低层的容器,它只包裹着一个Servlet,Wrapper负责加载并管理调用Servlet服务。
只有Context和Wrapper的tomcat服务器处理请求的流程如下:
Servlet会提供以下服务:
《How Tomcat Works》
IBM Developer上的文章——Servlet工作原理解析
IBM Developer上的文章——Tomcat系统架构与设计模式, 第1部分, 工作原理
https://www.cnblogs.com/llsblog/p/10634099.html
标签:客户端 tom blog 帮助 解析 nec 程序 理解 读取
原文地址:https://www.cnblogs.com/ChengzhiYang/p/12529881.html