网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Java编程 >> 文章正文
  javabean+mysql数据库连接池            【字体:
javabean+mysql数据库连接池
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-12    

http://blog.chinaunix.net/u/20532/showart.php?id=215038

第一步:写javabean

package withouttears.jdbc.db;

import java.util.HashMap;
import java.sql.*;
//JNDI有两个核心接口Context和DirContext,
//Context中包含了基本的名字操作,而DirContext则将这些操作扩展到目录服务

正在装载数据……

import javax.naming.Context;
import javax.naming.InitialContext;
//数据库资源的连接工厂是javax.sql.DataSource对象,
//它可以创建java.sql.Connection数据库连接对象。

import javax.sql.DataSource;
//目前您可以从Java开发者连接(http://java.sun.com/products/jdbc/download.html#rowsetcobundle1_0
//下载CachedRowSet的实现。下载并解压缩安装文件后,将"rowset.jar"文件放到您的类目录下。
//CachedRowSet在sun.jdbc.rowset包中。

import sun.jdbc.rowset.CachedRowSet;

/**
 * 作者:wiThouTTears
 * 时间:2006-12-13
 * */

public class Database {
 /**************************************************************/
 /* 函数:localhost
  * 功能:建立连接池
  * */

 private static DataSource localhost(){
  DataSource ds=null;
        //在HashMap中通过get()来获取value,通过put()来插入value,
        //ContainsKey()则用来检验对象是否已经存在
        HashMap<Object,Object>  cachedDs=new HashMap<Object,Object> ();
        if(cachedDs.containsKey("ds"))//取出空闲状态的数据库连接
            {
         /* 在DataSource中事先建立了多个数据库连接,
          * 这些数据库连接保存在连接池(Connect Pool)中。
          * Java程序访问数据库时,只需要从连接池中取出空闲状态的数据库连接;
          * 当程序访问数据库结束,再将数据库连接放回连接池。
          * */
         ds = (DataSource)cachedDs.get("ds");
            }
        else
            try
            {
             /*在javax.naming包中提供了Context接口,
              * 该接口提供了将对象和名字绑定,以及通过名字检索对象的方法。
              * */
                Context initCtx = new InitialContext();
                //lookup(String name):返回与指定的名字绑定的对象,获得数据库连接工厂
                ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/testdb");
                cachedDs.put("ds", ds);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
  return ds;
 }
 /**************************************************************/
 /* 函数:getConnection
  * 功能:库的连接
  * */

 private static Connection getConnection(){
  Connection conn = null;
        try
        {
            DataSource ds = localhost();
            conn = ds.getConnection();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return conn;
 }
 /**************************************************************/
 /* 函数:close
  * 功能:关闭连接
  * */
 private static void close(Connection conn)
    {
        try
        {
            if(conn != null)
                conn.close();
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
    }
 /**************************************************************/
 /* 函数:executeQuery
  * 功能:数据查询
  * */

 public static CachedRowSet executeQuery(String sql)
    { 
     Connection conn=null;
        CachedRowSet rs=null;
     try{
    rs=new CachedRowSet();
    conn=getConnection();
    Statement stmt=conn.createStatement();
    ResultSet rs1=stmt.executeQuery(sql);  
    rs.populate(rs1);
     }
     catch(Exception e)
     {
    //System.out.println(e.toString()); 
     }
     finally{
    try
    {
     conn.close();      
    }
    catch(Exception ex)
    {}
     }  return rs;
    }   
 /**************************************************************/
 /* 函数:executeUpdate
  * 功能:数据更新(添加/更改/删除)
  * */

 public static boolean executeUpdate(String sql)
    {
        boolean bl;
        bl = false;
        Connection conn = getConnection();   
        try
        {
         Statement stmt = conn.createStatement();
            if(stmt.executeUpdate(sql) > 0)              
            stmt.close();
            bl = true;
        }
        catch(SQLException e)
        {
        }
        finally
        {
            close(conn);
        }
        return bl;
    }
 /**************************************************************/
}

编译得到withouttears/db/Database.class并放到E:\MyWorkSpace\test\WEB-INF\classes下,即E:\MyWorkSpace\test\WEB-INF\classes\withouttears\db\Database.class,注意别弄错了。

第二步:配置Tomcat(我用是Tomcat 5.5.7)

1. 在C:\Program Files\Tomcat 5.5.7\conf\Catalina\localhost下新建一个test.xml,内容如下:

<Context docBase="E:\MyWorkSpace\test" path="\test"></Context>

注:docBase为你的web文件所在地,我用的是E:\MyWorkSpace\test。path可写可不写,但在Linux下必须写上,Windows下不写我测试可以用,最好写上。这里的test.xml指定的文件夹不像我们平时用的那样在C:\Program Files\Tomcat 5.5.7\webapps\test,不过目的一样都是表示用http://localhost:8080/test/来访问,相当于IIS下的虚拟目录,可以是任意的。

2. 在C:\Program Files\Tomcat 5.5.7\conf\下建立context.xml,在E:\MyWorkSpace\test下新建WEB-INF\web.xml。

context.xml

<!-- The contents of this file will be loaded for each web application -->
<Context>

    <!-- Default set of monitored resources -->
 <WatchedResource>WEB-INF/web.xml</WatchedResource>
 <WatchedResource>META-INF/context.xml</WatchedResource>
 
 <!-- Uncomment this to disable session persistence across Tomcat restarts -->
 <!--
 <Manager pathname="" />
 -->
 <Resource name="jdbc/testdb"
 auth="Container"
 type="javax.sql.DataSource"
 driverClassName="com.mysql.jdbc.Driver"
 url="jdbc:mysql://localhost/mytestdb"
 username="root"
 password="157744375"
 maxActive="100"
 maxIdle="30"
 maxWait="10000"
 />
</Context>

注: 链接池配置文件,这样我们就可以用第一步写的Javabean类Database中的localhost()函数来读取这个content.xml中的jdbc/testdb名称

web.xml

<?xml version="1.0" encoding="gbk"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <display-name>
 test</display-name>
 <welcome-file-list>
  <welcome-file>test.jsp</welcome-file>
 </welcome-file-list>

<!-- JSPC servlet mappings start -->
<!-- JSPC servlet mappings end -->

</web-app>

注: web.xml放web的默认主页(如:test.jsp或者index.jsp)和程序中要用到servlet的映射,不管它我们这里用不到。

第三步:写test.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<%@page import="withouttears.jdbc.db.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Insert title</title>
</head>
<body>
<%
    String sql=null;
    sql="select * from table_test";
 ResultSet rs=Database.executeQuery(sql);
 try{
 while(rs.next()){
%>
姓名:<%=rs.getString("name")%><br>
电话:<%=rs.getString("mobile")%><br>
<%}}catch(Exception e){} %>
</body>
</html>

第四步:测试

在浏览器中输入:http://localhost:8080/test/,点击确定。在windows2000 proffesional sp4下测试成功。




本文来源:http://blog.csdn.net/Thomas_Chen/archive/2007/09/12/1781528.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     用java实现web服务器
     用java快速开发linux gu…
     正则表达式分解siemens交…
     [portal参考手册]目录
     jsp中调用oracle存储过程…
  • JSP中JavaBean的生命周期

  • Java Swing实现俄罗斯方块

  • 快速、简便使用AJAX技术的三…

  • java异常处理机制的深入理解

  • [转]Java堆和栈的区别 经典总…

  • HashTable和HashMap; Vecto…

  • 关于java Applet

  • java 设计工厂模式

  • Hashtable 排序

  • Core Java 之旅

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David