💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Servlet 的工作原理 > 原文: [https://beginnersbook.com/2013/05/working-of-servlets/](https://beginnersbook.com/2013/05/working-of-servlets/) 在我开始解释 servlet 如何工作之前,让我们熟悉这三个术语。 **Web 服务器**:它可以处理客户端发送的 HTTP 请求,并通过 HTTP 响应响应请求。 **Web 应用(webapp)**:我在本指南中将其称为 webapp。基本上该项目是您的 Web 应用,它是 servlet 的集合。 **Web 容器**:也称为 Servlet 容器和 Servlet 引擎。它是 Web Server 的一部分,与 Servlet 交互。这是管理 Servlet 生命周期的 Web Server 的主要组件。 > 您会发现本指南的某些部分已在 [servlet 生命周期指南](https://beginnersbook.com/2013/05/servlet-life-cycle/)中介绍,但本指南主要介绍 servlet 应用(webapp)的工作,而不是生命周期的步骤。我强烈建议您阅读本文,深入了解 servlet 的实际工作原理。 ## Servlet 如何工作? 1)当 Web 服务器(例如 Apache Tomcat)启动时,servlet 容器部署并加载所有 servlet。在此步骤中,Servlet 容器创建`ServletContext`对象。`ServletContex`是一个接口,它定义了可以用来与 servlet 容器**通信的方法集。 **注**:**每个 webapp** 只有一个`ServletContext`,这对所有 servlet 都是通用的。`ServletContext`有几个有用的方法,如`addListener()`,`addFilter()`等。现在我不解释它们,因为我将在一个关于`ServletContext`的单独文本中介绍它们。 2)一旦加载了 servlet,servlet 容器就会创建 servlet 类的实例。对于每个实例化的 servlet,调用其`init()`方法。 3)客户端(用户浏览器)向某个端口上的 Web 服务器发送 Http 请求。每次 Web 服务器收到请求时,servlet 容器都会创建`HttpServletRequest`和`HttpServletResponse`对象。`HttpServletRequest`对象提供对请求信息的访问,`HttpServletResponse`对象允许我们在将 http 响应发送到客户端之前对其进行格式化和更改。 servlet 容器生成一个新线程,该线程为每个客户端请求调用`service()`方法。`service()`方法根据请求类型将请求调度到正确的处理程序方法。 例如,如果服务器收到`Get`请求,则`service()`方法会通过使用请求参数调用`doGet()`方法将请求分派给`doGet()`方法。类似地,诸如`Post`,`Head`,`Put`等的请求被 servlet 的`service()`方法分派给相应的处理程序`doPost()`,`doHead()`,`doPut()`等。 ![Http Servlet](https://img.kancloud.cn/84/17/8417e60c714b7f7e05d8e8a053f45dd2_500x300.jpg) 4)当 servlet 容器关闭时,它会卸载所有 servlet 并为每个初始化的 servlet 调用`destroy()`方法。