要想了解什么是 Servlet 容器,我们得先了解什么的 Web 服务器。
一、Web 服务器
Web 服务器是使用 HTTP 协议来传输数据的,其中最简单的一种情况就是用会在 client 中输入一个 URL ,然后通过网页进行浏览,在网页中可以看到你编写的界面,因此,服务器的工作就是发送网页到客户端。
二、Servlet 容器
单单使用 Web 服务器的话,我们会发现用户和客户端只能向服务器请求静态的网页。如果说用户想根据自己的输入来读取网页的话就不能单单需要 Web 服务器来发送网页,这个时候我们就需要用到 Servlet 容器了,Servlet 容器的基本思想是在服务器端使用 Java 来动态生成网页。因此, Servlet 容器是 Web 服务器和 servlet 进行交互的必不可少的组件。
注意:Servlet 容器是用来装 Servlet 的。
三、什么是 Servlet ?
简单来说 Servlet 是在 java.servlet 包中的一个接口,这个接口声明了 servlet 生命周期中必不可少的三种方式 —— init()、service()、destroy()。每个servlet(无论是在SDK中定义的,或是自定义的)都必须实现这三个方法,而且由服务器在特定的时刻调用。我们来讲解一下
servlet 生命周期中必不可少的三种方式:
1> init() 方法主要传递了一个实现接口 javax.servlet.ServletConfig 的对象,一般在 Servlet 生命周起初始化阶段被调用,能够让 Servlet 从 Web application 中获得初始化参数。
2> service() 方法主要是判断请求类型,并把它转发给相应的方法处理, servlet 每接受一个请求,就会调用一次 sercice() 方法,并且每个请求的处理都会在独立的线程中进行。
3> destroy() 方法是当我们需要销毁 servlet 对象的时候,调用该方法来释放占用的资源。
和所有的Java程序一样,servlet运行在JVM中。引入servlet容器是为了处理复杂的HTTP请求。Servlet容器负责servlet的创建、执行和销毁。
四、JVM
JVM 就是 Java 虚拟机,只要使用 servlet 就要允许JVM为处理每个请求分配独立的Java线程,这也是Servlet容器主要的优势之一。每一个servlet都是一个拥有能响应HTTP请求的特定元素的Java类。Servlet容器的主要作用是将请求转发给相应的servlet进行处理,并在JVM处理完请求后,将动态生成的结果返回至正确的地址。在大多数情况下,servlet容器运行在独立的JVM中,但如果容器需要多个JVM,也有相应的解决方案。