1.servlet的实例的创建过程
- 当运行servlet项目时,服务器会扫描项目中所有包内的java文件,并将带有注解的文件放入一张表中.
- 表中以key/value的形式存储,key为注解,value是通过java的反射API来创建的Servlet实例.
- 实例调用servlet的默认构造方法,所以我们在编写servlet类时,不要在提供带参数的构造方法.
2.servlet的工作过程
- 在客户端对web服务器发送请求
- Web服务器接收到请求后发送给servlet
- servlet容器创建实例对象并调用servletAPI中的相应方法对客户端的HTTP请求进行处理,并将响应结果返回给web服务器
- web服务器将servlet实例对象中收到的响应发送给客户端
3.servlet生命周期
(1) 加载和实例化
当启动servlet容器时,容器首先查找配置文件或注解,根据记录容器会为每个自动装入选项的servlet创建一个实例
(2)初始化
实例化后,servlet容器将调用每个servlet的init方法来实例化每个实例,执行完init方法之后,Servlet处于“已初始化”状态。在servlet的整个生命周期,init方法只调用一次
(3)请求处理
初始化以后,servlet处于响应请求的就绪状态.Servlet容器调用Servlet的service()方法对请求进行处理.注:在service()方法调用之前,init()方法必须成功执行。在service()方法中,Servlet实例通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。
(4)服务终止
容器检测当servlet实例应该被移除时,容器调用destroy()方法,释放该实例.随后会被java的垃圾收集器回收.如果servlet需要再处理请求,容器会创建一个新的Servlet实例。在整个Servlet的生命周期过程中,调用实例的init()和destroy()方法都只进行一次