**
Servlet工作原理:
**
当客户端浏览器向服务器请求一个Servlet时,服务器收到该请求后,首先到容器中检索与请求匹配的Servlet实例是否存在,如果不存在,则Servlet容器负责加载并实例化出该类Servlet的一个实例对象,接着容器框架负责调用该实例的init()方法对实例做一些实例化工作,然后Servlet容器运行该实例的service()方法(httprequest,httpresponse)。
如果Servlet实例已经存在,则容器框架直接调用该实例的service()方法。
Service()方法在运行时,自动派遣运行与用户请求相对应的doXX()方法来响应用户发起的请求。通常,每一个Servlet类在容器中只有一个实例,每当请求到来时,则分配一条线程来处理该请求
Servlet没有main方法,不能够独立的运行,它的运行需要容器的支持,tomcat是最常用的jsp/servlet容器;servlet运行在Servlet容器中,并由容器管理从创建到销毁的整个过程
生命周期:
1、 加载和实例化
Servlet容器装载和实例化一个Servlet。创建出该Servlet类的一个实例
2、 初始化
在Servlet实例化完成后,容器负责调用该servlet实例的init()方法,在处理用户请求之前,来做一些额外工作的初始化
3、 处理请求
当Servlet容器接收到一个Servlet请求时,便运行与之对应的Servlet实例的service()方法,service()方法再派遣运行与请求相对应的doGet/doPost方法来处理用户请求。
4、 销毁
当servlet容器决定将一个Servlet从服务器中移除时(如servlet文件被更新),便调用servlet实例的destroy()方法,在销毁之前做一些其它的工作
其中加载、实例化、初始化、销毁在整个生命周期中只会被执行一次