JNDI学习和连接数据库

JNDI:(Java Naming and Directory Interface) Java命名和目录接口

  • 是一组在Java应用中访问命名和目录服务的API

  • 通过名称将资源与服务进行关联

应用步骤:

  • 修改Tomcat/conf/context.xml

    <context>
        //tjndi查找的对象
    <Environment name="tjndi" value="hello JNDI" type="java.lang.String"/>
    </context>
  • 使用lookup()进行查找

    <%
    //初始化Context对象
        Context context = new InitialContext();
    //java:comp/env/为前缀
    //调用lookup()方法
        String lookup= (String) context.lookup("java:comp/env/tjndi");
        out.print(lookup);
    %>

修改配置Tomcat/conf/context.xml文件

<Context>
   <Resource name="jdbc/user_" 
    auth="Container" type="javax.sql.DataSource"  maxActive="100" maxIdle="30"                maxWait="10000" username="root"   password="123456" 
    driverClassName="com.mysql.jdbc.Driver"  
     url="jdbc:mysql:///user_"/>
</Context>

连接数据库

<%
Context  context=new InitialContext();
DataSource dataSource= (DataSource) context.lookup("java:comp/env/jdbc/user_");
Connection connection = dataSource.getConnection();
String sql="select * from user";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
    if(resultSet.next()){
        String uname = resultSet.getString("uname");
        out.print(uname);
        }
%>

封装JDBC

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
​
public class MyJDBC {
​
    public static Connection getConnection(){
        Connection connection=null;
​
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/user_");
            connection= dataSource.getConnection();
        } catch (NamingException | SQLException e) {
            e.printStackTrace();
        }
​
        return connection;
    }
    public static void close(ResultSet resultSet, Statement statement,Connection connection){
        if(resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
    public static void close(Statement statement,Connection connection){
        close(null,statement,connection);
    }
​
}
​

使用时调用MyJDBC.getConnection()方法就可连接数据库

Guess you like

Origin blog.csdn.net/qq_45299673/article/details/118028692