这一章的主要内容是讲解如何构造自己的Servlet 容器。
我们首先看一个servlet 容器需要做什么工作来为一个servlet 来提供HTTP请求。
Servlet 编程是通过 javax.servlet 和 javax.servlet.http 这两个包的类和接口来实现的。这里面最重要的就是 javax.servlet.Servlet 接口。所有的servlet 实现类必须实现这个接口。
这个接口主要有5个方法:
其中,init,service 和 destory 是servlet 的生命周期方法。在servlet 已经初始化后,init 方法将会被servlet 容器所调用。而且只会被调用一次,以此表明servlet 已经被加载到服务之中。
init 方法必须在任何请求调用之前运行完毕。
servlet 容器为 servlet 请求调用它的service 方法,这个方法传递一个ServletRequest 请求和一个ServletResponse 响应。前者包含请求信息,后者封装servlet 的响应。在整个Servlet周期中,service 方法会被多次调用。
当从服务中移除一个servlet 实例的时候,servlet 容器调用destory 方法。这个方法的调用通常发生在 servlet 容器正在关闭或者servlet 容器需要一些空闲内存的时候。
一个简单的Servlet 容器
一个复杂的Servlet 容器