配置JNDI 获取数据库连接

时间:2024-11-03 07:13:04

配置前提是:

  1. 有数据库,并且知道用户名和密码
  2. 有tomcat

配置 Tomcat 中的数据源并使用 JNDI 获取数据库连接的过程可以分为几个步骤 :

1.apache-tomcat-9.0.30\conf\content.xml中的<Context>设置

注意:

  1. username修改成自己的数据库用户名
  2. password修改成自己的数据库密码
  3. url 把这个url的端口和数据库名称修改成自己的
<Resource name="jdbc/Student"
          auth="Container"
          type="javax.sql.DataSource"
          maxActive="100"
          maxIdle="30"
          maxWait="10000"
          username="root"
          password="root"
          driverClassName="com.mysql.cj.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/myschool"/>

2. 配置数据库驱动

确保 JDBC 驱动已添加到 Tomcat 的 lib 目录中,例如 MySQL 驱动 mysql-connector-java-X.X.X.jar,

3.创建Java类以获得链接

注意:jdbc/Student要修改成自己content.xml中的

name名称一致

public class DatabaseUtil {
    public static Connection getConnection() {
        Connection connection = null;
        try {
            Context initContext = new InitialContext();
            Context envContext = (Context) initContext.lookup("java:/comp/env");
            DataSource ds = (DataSource) envContext.lookup("jdbc/Student");
            connection = ds.getConnection();
        } catch (NamingException | SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }
}

4.创建 JSP 页面以显示连接信息

<%@ page import="java.sql.Connection" %>
<%@ page import="com.hz.DatabaseUtil" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%
    Connection connection = null;
    try {
        connection = DatabaseUtil.getConnection();
        if (connection != null) {
            out.println("成功获取连接: " + connection.toString());
        } else {
            out.println("连接失败");
        }
    } catch (Exception e) {
        out.println("发生错误: " + e.getMessage());
        e.printStackTrace();
    } finally {
        if (connection != null) {
            try {
                connection.close();
            } catch (Exception e) {
                out.println("关闭连接时发生错误: " + e.getMessage());
            }
        }
    }
%>