【多选题】有关 Servlet 的生命周期说法正确的有()A. Servlet 的生命周期由 Servlet 实例控制B. init() 方法在创建完 Servlet 实例后对其进行初始化,传递的参数为实现 ServletContext 接口的对象C. service() 方法响应客户端发出的请求D. destroy() 方法释放 Servlet 实例
A. Servlet 的生命周期由 Servlet 实例控制
B. init() 方法在创建完 Servlet 实例后对其进行初始化,传递的参数为实现 ServletContext 接口的对象
C. service() 方法响应客户端发出的请求
D. destroy() 方法释放 Servlet 实例
题目解答
答案
B. init() 方法在创建完 Servlet 实例后对其进行初始化,传递的参数为实现 ServletContext 接口的对象
C. service() 方法响应客户端发出的请求
D. destroy() 方法释放 Servlet 实例
解析
本题主要考察Servlet的生命周期相关知识,需对生命周期中各方法的触发时机、作用及参数等进行准确判断。
选项A分析
Servlet的生命周期由Servlet容器(如Tomcat) 控制,而非Servlet实例自身。容器负责创建、初始化、调用和销毁Servlet实例,因此A错误。
选项B分析
init()方法是Servlet生命周期中的初始化方法,在容器创建Servlet实例后立即调用。该方法的签名为public void init(ServletConfig config) throws ServletException,其中ServletConfig接口提供了对ServletContext的访问(通过config.getServletContext()),但传递的参数本身是ServletConfig对象(而非直接是ServletContext)。不过题目表述“传递的参数为实现ServletContext接口的对象”可能存在简化,但从初始化参数的本质来看,ServletContext是ServletConfig的一部分,且该选项核心“init()在创建实例后初始化”是正确的,因此B可选。
选项C分析
service()方法是Servlet处理客户端请求的核心方法,容器收到请求后会调用service(),并根据请求类型(GET/POST等)分发到doGet()、doPost()等方法。因此C正确。
选项D分析
destroy()方法在Servlet实例被容器销毁前调用,用于释放资源(如关闭数据库连接、释放文件句柄等)。因此D正确。