老师说过连接池只能在servlet中使用,不能写一个main()方法来实现,因为JNDI是tomcat内置的,
使用连接池需要配置context.xml文件
context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!--
注意标签的大小写 context.xml用小写,<Context>首字母用大写
name: jndi中的名字,servlet中,就通过该名字获取数据源
type: 对象的类型
maxActive: 最大活动连接数(没有被使用的连接数)
maxIdle: 最大连接数
maxWait: 如果没有连接,等待连接的时间,-1表示无限等待
....
-->
<Resource
name="myDataSource"
auth="Container"
type="javax.sql.DataSource"
maxActive="5"
maxIdle="10"
maxWait="-1"
driverClassName="oracle.jdbc.driver.OracleDriver"
username="scott"
password="sinstar"
url="jdbc:oracle:thin:@localhost:1521:orcl"
/>
</Context>
DataS.java
package com.bright;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import com.sun.xml.internal.bind.CycleRecoverable.Context;
public class dataS extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
int i=0;
ResultSet rs=null;
try {
//使用tomcat连接池 JNDI
//1.获取InitialContext (JNDI入口
InitialContext initialContext=new InitialContext();
//2.根据名称获取配置的数据源对象
// Context ctx=(Context)initialContext.lookup("java:comp/env");
// DataSource ds=(DataSource)ctx.lookup("myDataSource");
//上面两句可以结合成下面一句,但是使用上面的两句会报错,用下面的不会
DataSource ds2=(DataSource) initialContext.lookup("java:comp/env/myDataSource");
//3.开始你的JDBC了
Connection conn=ds2.getConnection();
Statement st=conn.createStatement();
rs=st.executeQuery("select * from regdit");
while(rs.next()){
System.out.println(rs.getString("name"));
}
//到了最后记住一定要释放资源,一定 一定 一定 不然由于设置了连接数,当一直连接达到了最大连接数后 会死机
rs.close();
st.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这样就可以使用了