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>
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。