通过datasource与数据库交互的jsp范例
- 配置数据源
为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 data 27 stmt.executeUpdate("插入具体的insert语句"); 28 29 //select data 30 rs = stmt.executeQuery("select 语句"); 31 32 //Out select result 33 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 datas 41 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 datas 49 stmt.executeUpdate("Delete 语句"); 50 51 //CLose 52 rs.close(); 53 stmt.close(); 54 con.close(); 55 56 }catch(Exception e){ 57 out.println(e.getMessage()); 58 } 59 %> 60 </body> 61 </html>