目录
1.数据库连接池
连接池是一个可以存储多个数据库连接对象的容器,当程序需要连接数据库时,可直接从连接池中获取一个连接,使用结束时将连接还给连接池。这样一个连接可以被很多程序共享,无需每次与数据库交互都进行一次连接与断开操作。
2.配置Tomcat数据库连接池
由于数据库连接池是采用Tomcat来访问数据库,所以在程序中不用写访问数据库的信息,但需先配置Tomcat这些信息。(我的Tomcat版本是7.1,JDBC驱动包版本为mysql-connector-java-8.0.26.jar)
①打开Tomcat安装目录下的"conf\context.xml"配置文件,在标签<context>中加入以下内容:
<Resource
name="jdbc/booksdb"
auth="Container"
type="javax.sql.DataSource"
maxIdle="10"
maxWaitMillis="1000"
maxTotal="10"
username="root"
password="511511"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:MySQL://localhost:3306/books"/>
②在项目WEB-INF目录下找到web.xml配置文件,打开,在标签<web-app>中加入以下内容:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/booksdb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
③将JDBC驱动jar包放到Tomcat安装目录下的lib文件夹里
④重启Tomcat服务
配置完来测试一下
dbpooltest.jsp
<%@ page language="java" import="java.util.*,java.sql.*,javax.naming.*,javax.sql.DataSource" pageEncoding="utf-8"%>
<!DOCTYPE HTML>
<html>
<body>
<table>
<tr><td>ISBN</td><td>书名</td><td>版本</td><td>出版时间</td><td>价格</td></tr>
<%
InitialContext ctx = new InitialContext();
DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/booksdb");
Connection dbCon = ds.getConnection();
Statement stmt = dbCon.createStatement();
ResultSet rs = stmt.executeQuery("select * from titles");
while(rs.next()) {
%>
<tr bgcolor="cyan">
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getInt("editionNumber")%></td>
<td><%=rs.getInt(4)%></td>
<td><%=rs.getDouble("price")%></td>
</tr>
<%}
rs.close();
stmt.close();
dbCon.close();
%>
</table>
</body>
</html>
DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/booksdb");
这句下面如果画红线,并且报这样的错:The type java.lang.CharSequence cannot be resolved.
就把JDK的版本降成1.6试试
改完如果还有红线,注意文件有没有重新保存,或者把这句删了再重写一遍。