servlet 中init()方法具有什么功能呢?

欢喜 Servlet 发布时间:2025-05-26 14:47:03 阅读数:4932 1

`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>
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/Servlet/202505/299.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者