為WEB應用配置資料來源設計修改context.xml和web.xml檔案。在context.xml檔案中加入定義資料來源的<Resource>元素;在web.xml中加入<resource-ref>元素,該元素宣告web應用引用了特定資料來源。此外還要把MySql的jdbc磁碟機類庫mysqldriver.jar檔案複製到<CATALINA_HOME>/lib目錄下。
- 在contex.xml中加入<Resource>元素:
<Resource>元素用來定義JNDI資源。在tomcat中,資料來源是JNDI資源的一種。在工程/META-INF/建立一個context.xml檔案,該檔案為工程應用定義了一個名為jdbc/DatabaseName的資料來源。
用於定義資料來源的context.xml檔案
1 <?xml version="1.0" encoding="UTF-8"?>2 <Context reloadable="true">3 <Resource name="jdbc/DatabaseName" auth="Container" type="javax.sql.DataSource"4 maxActive="100" maxIdle="30" maxWait="1000"5 username="username" password="userpassword"6 driverClassName="com.mysql.jdbc.Driver"7 url="jdbc:mysql://localhost:3306/DatabaseName?autoReconnect=true"/>8 </Context>
2.在web.xml中加入<resource-ref>元素
表示資源引用的元素為<resource-ref>,以下是聲明引用jdbc/databasename資料來源的代碼:
web.xml的增加內容
1 <web-app>2 <resource-ref>3 <description>DB Connection</description>4 <res-ref-name>jdbc/DatabaseName</res-ref-name>5 <res-type>javax.sql.DataSource</res-type>6 <res-auth>Container</res-auth>7 </resource-ref>8 </web-app>
3.通過資料來源串連資料庫的jsp範常式序
Datasource與通過JDBC api 訪問的區別就是:在於擷取資料庫連接的方式不一樣(就是19行-22行)
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 <%@ page import="java.io.*" %> 4 <%@ page import="java.util.*" %> 5 <%@ page import="java.sql.*" %> 6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 7 <html> 8 <head> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">10 <title>TestJDBCAPI</title>11 </head>12 <body>13 <%14 try{15 Connection con;16 Statement stmt;17 ResultSet rs;18 19 //從資料來源中後的database串連20 Context ctx = new InitialContext();21 DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/DatabseName");22 con = ds.getConnection();23 24 //Create SQL 申明25 stmt = con.createStatement();26 //add data27 stmt.executeUpdate("插入具體的insert語句");28 29 //select data30 rs = stmt.executeQuery("select 語句");31 32 //Out select result33 out.println("<table border=1 width=400>");34 while(rs.next()){35 String col1 = rs.getString(1);36 String col2 = rs.getString(2);37 String col3 = rs.getString(3);38 float col4 = rs.getFloat(4);39 40 //Print datas41 out.println("<tr><td>"+col1+"</td>"42 +"<td>"+col2+"</td>"43 +"<td>"+col3+"</td>"44 +"<td>"+col4+"</td></tr>");45 }46 out.println("</table>");47 48 //Delete datas49 stmt.executeUpdate("Delete 語句");50 51 //CLose52 rs.close();53 stmt.close();54 con.close();55 56 }catch(Exception e){57 out.println(e.getMessage());58 }59 %>60 </body>61 </html>