什么是servlet?
servlet是sun(Oracle)公司制定的一种用来拓展web服务器端功能的组件规范(因此servlet是一种规范)
Servlet组件
符合相应的规范,具有部分功能,并且需要部署到相应的容器(比如Tomcat)里面才能运行的软件模块。比如servlet就是一个组件,需要符合servlet规范,并且需要部署到servlet容器里面才能运行。
注: 容器:符合相应的规范,提供组件运行环境的程序。比如:Tomcat就是比较有名的servlet容器。jetty jboos weblogic都是servlet容器。这些servlet把网络相关的问题已经全部处理好,我们写servlet只需要关注我们想要关注的业务逻辑就可以了。
Servlet的生命周期
从出生到死亡的过程就是生命周期,这其中对应了servlet中的三个方法:init(),service(),destory()。
- 默认情况下:第一次接收请求时,这个servlet会进行实例化(调用构造方法)、初始化(调用init())、然后服务(调用service()),最后销毁(调用destory()方法)。
- 从第二次请求开始,每一次都是服务,当容器关闭时,其中所有的servlet实例就会被销毁。
默认情况下,第一次请求时tomcat才会去实例化、初始化,然后再服务。这样做有好有坏,那么这样做的好处和坏处分别是什么?
好处就是提高了系统的启动速度;坏处就是第一次请求时耗时比较长。
所以,如果需要提高响应速度,我们需要设置一下servlet的初始化时机。
注:需要注意的是servlet在容器中是单例的、线程不安全的,因此我们要注意尽量不要在servlet中定义成员变量,如果不得不定义成员变量,那么我们就不要修改定义的成员变量。