Servlet 容器:
Servlet 容器可以自己创建 Servlet
并且可以调用 Servlet 相关的生命周期方法
注意:普通的 Java 类实例化一个对象时,需要自己手动创建,通过对象调用方法
JSP,Filter,Listener,Tag等都在 Servlet 容器中进行
Servlet 生命周期的相关方法:
以下方法都是由 Servlet 容器负责调用
构造器:
只被调用一次;只有第一次请求 Servlet 时,创建 Servlet 的实例。调用构造器。
这说明 Servlet 是单实例的,说明就会有单线程的问题,不推荐在 Servlet 中写一个全局变量。
init()方法:
只被调用一次,在创建好 Servlet 实例后立即被调用,用于初始化当前 Servlet。
service()方法:
被多次调用,每次请求都会调用 Service 方法,实际用于响应请求。
destroy()方法:
只被调用一次,在当前 Servlet 所在 web 应用被卸载(关闭)前调用,用于释放 Servlet 所占用的资源。
架构图
下图显示了一个典型的 Servlet 生命周期方案。
第一个到达服务器的 HTTP 请求被委派到 Servlet 容器。
Servlet 容器在调用 service()方法之前加载 Servlet。
然后 Servlet 容器处理由多个线程产生的多个请求,每个线程执行一个单一的 Servlet 实例的 service() 方法。
图片来自:https://www.runoob.com/
Servlet 的生命周期中的方法,但是在使用不常用,到后边关于 GenericServlet 类会实现 Servlet 接口和 ServletConfig 接口,HttpServlet进而继承GenericServlet类,会继续说明。
领取专属 10元无门槛券
私享最新 技术干货