servlet中destroy()方法简介说明
下文笔者讲述servlet中destory()方法的简介说明,如下所示
destory()方法的简介
`destroy()`方法是Servlet生命周期中的最后一个阶段
用于释放资源、清理工作
它在整个Servlet生命周期中只运行一次
通常在Web应用关闭或重新部署时被调用
`destroy()`方法功能说明
| 功能 | 描述 |
| 资源释放 | 关闭数据库连接、关闭文件流、释放缓存等 |
| 清理后台任务 | 停止定时任务、线程池等 |
| 日志记录或统计 | 记录应用关闭前的最后状态或统计数据 |
何时运行destory()方法
- 当Web应用被关闭(如服务器 shutdown)或重新部署时
或
手动通过管理工具卸载该 Servlet 时
注意:
如果服务器异常关闭
`destroy()`方法可能不会被执行
方法定义
public void destroy()
@Override
public void destroy() {
// 清理资源,例如关闭数据库连接、停止线程等
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
例
你在`init()`中初始化一个数据库连接
在`service()`中使用它处理请求
在`destroy()`中关闭这个连接
public class MyServlet extends HttpServlet {
private Connection connection;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
try {
//初始化数据库连接
String url = config.getInitParameter("db-url");
String user = config.getInitParameter("db-user");
String password = config.getInitParameter("db-password");
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
throw new ServletException("数据库连接失败", e);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
// 使用 connection查询数据库
}
@Override
public void destroy() {
// 在应用关闭时关闭数据库连接
try {
if (connection != null && !connection.isClosed()) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
对应`web.xml`配置
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
<init-param>
<param-name>db-url</param-name>
<param-value>jdbc:mysql://localhost:3306/mydb</param-value>
</init-param>
<init-param>
<param-name>db-user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>db-password</param-name>
<param-value>password</param-value>
</init-param>
</servlet>
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


