背景:面试中很基础的一个问题,所以有必要好好整理一番。
Servlet体系结构是建立在 Java 多线程机制上的,它的生命周期由 Web 容器负责。
当客户端第一次请求某个 Servlet 时,Servlet 容器将会根据 web.xml 的配置文件实例化这个 Servlet 类。当有新的客户端请求该 Servlet 时,一般不会再实例化该 Servlet 类。
当有多个请求时,Servlet 容器会起多个线程来访问同一个 Servlet 实例的 service() 方法,如果该 Servlet 实例中有共享的实例变量,需要注意多线程安全问题。
生命周期
Servlet 生命周期定义了 Servlet 从创建到毁灭的整个过程,总共分为四个步骤。
调用 init() 方法初始化
调用 service() 方法来处理客户端的请求
调用 destroy() 方法释放资源,标记自身为可回收
被垃圾回收器回收
init() 方法
init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,用于 Servlet的初始化,初始化的数据,可以在整个生命周期中使用。
在下列时刻Servlet容器装载Servlet,共三种情况:
1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的之间添加如下代码:
1
说明:
在servlet的配置当中,5的含义是:
标记容器是否在启动的时候就加载这个servlet。
当值为0或者大于0时,表示容器在应用启