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()方法就可连接数据库