通过datasource与数据库交互的jsp范例

  • 配置数据源

为WEB应用配置数据源设计修改context.xml和web.xml文件。在context.xml文件中加入定义数据源的<Resource>元素;在web.xml中加入<resource-ref>元素,该元素声明web应用引用了特定数据源。此外还要把MySql的jdbc驱动器类库mysqldriver.jar文件复制到<CATALINA_HOME>/lib目录下。

  1. 在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>

 

 

posted @ 2013-01-10 14:16  茶陵后  阅读(1003)  评论(0编辑  收藏  举报