servlet 中init()方法具有什么功能呢?
`init()`方法简介
`init()`方法是Servlet生命周期中的第一个阶段
其作用用于初始化Servlet实例
init方法在整个Servlet生命周期中只能运行一次
通常在Web应用启动或第一次请求该Servlet时被调用
`init()`方法功能
| 功能 | 描述 |
| 初始化资源 | 加载配置文件、连接数据库、 创建缓存等准备工作 |
| 获取初始化参数 | 通过`ServletConfig`获取在`web.xml` 或注解中配置的初始化参数 |
| 一次性设置 | 因为只执行一次, 适合做耗时但只需执行一次的操作 |
init运行时机
-首次访问该Servlet时(默认行为)
- 或
在Web应用启动时
当设置了`<load-on-startup>`参数
web.xml
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
方法定义
public void init(ServletConfig config) throws ServletException {
// 初始化逻辑
}
重写这个方法
并通过`ServletConfig`获取配置信息
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
String param = config.getInitParameter("myParam");
System.out.println("初始化参数 myParam = " + param);
}
例:使用init()初始化数据库连接
public class MyServlet extends HttpServlet {
private Connection conn;
@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");
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
throw new ServletException("数据库连接失败", e);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
// 使用 conn 查询数据库...
}
@Override
public void destroy() {
try {
if (conn != null && !conn.isClosed()) {
conn.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>
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


