目录

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="xxx" //设置自己的密码
   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试试
改完如果还有红线,注意文件有没有重新保存,或者把这句删了再重写一遍。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐