仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1273|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网页设计一种完成数据库毗连池的办法(2)

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:39:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
但是一些大型开发或者是保密型比较高的项目都会用java,原因有2点,一:java是开源的,不怕别人留后门,偷我工具,.net就不一样了,保持微软的一向风格,源代码不公开数据|数据库|数据库毗连其次是毗连池的工场类ConnectionFactory,经由过程该类来将一个毗连池对象与一个称号对应起来,利用者经由过程该称号就能够猎取指定的毗连池对象,详细代码以下:


/**
*毗连池类厂,该类经常使用来保留多个数据源称号合数据库毗连池对应的哈希
*@authorliusoft
*/
publicclassConnectionFactory
{
//该哈希表用来保留数据源名和毗连池对象的干系表
staticHashtableconnectionPools=null;
static{
connectionPools=newHashtable(2,0.75F);
}
/**
*从毗连池工场中猎取指命名称对应的毗连池对象
*@paramdataSource毗连池对象对应的称号
*@returnDataSource前往称号对应的毗连池对象
*@throwsNameNotFoundException没法找到指定的毗连池
*/
publicstaticDataSourcelookup(StringdataSource)
throwsNameNotFoundException
{
Objectds=null;
ds=connectionPools.get(dataSource);
if(ds==null||!(dsinstanceofDataSource))
thrownewNameNotFoundException(dataSource);
return(DataSource)ds;
}

/**
*将指定的名字和数据库毗连设置绑定在一同并初始化数据库毗连池
*@paramname对应毗连池的称号
*@paramparam毗连池的设置参数,详细请见类ConnectionParam
*@returnDataSource假如绑定乐成后前往毗连池对象
*@throwsNameAlreadyBoundException必定名字name已绑定章抛出该非常
*@throwsClassNotFoundException没法找到毗连池的设置中的驱动程序类
*@throwsIllegalAccessException毗连池设置中的驱动程序类有误
*@throwsInstantiationException没法实例化驱动程序类
*@throwsSQLException没法一般毗连指定的数据库
*/
publicstaticDataSourcebind(Stringname,ConnectionParamparam)
throwsNameAlreadyBoundException,ClassNotFoundException,
IllegalAccessException,InstantiationException,SQLException
{
DataSourceImplsource=null;
try{
lookup(name);
thrownewNameAlreadyBoundException(name);
}catch(NameNotFoundExceptione){
source=newDataSourceImpl(param);
source.initConnection();
connectionPools.put(name,source);
}
returnsource;
}
/**
*从头绑定命据库毗连池
*@paramname对应毗连池的称号
*@paramparam毗连池的设置参数,详细请见类ConnectionParam
*@returnDataSource假如绑定乐成后前往毗连池对象
*@throwsNameAlreadyBoundException必定名字name已绑定章抛出该非常
*@throwsClassNotFoundException没法找到毗连池的设置中的驱动程序类
*@throwsIllegalAccessException毗连池设置中的驱动程序类有误
*@throwsInstantiationException没法实例化驱动程序类
*@throwsSQLException没法一般毗连指定的数据库
*/
publicstaticDataSourcerebind(Stringname,ConnectionParamparam)
throwsNameAlreadyBoundException,ClassNotFoundException,
IllegalAccessException,InstantiationException,SQLException
{
try{
unbind(name);
}catch(Exceptione){}
returnbind(name,param);
}
/**
*删除一个数据库毗连池对象
*@paramname
*@throwsNameNotFoundException
*/
publicstaticvoidunbind(Stringname)throwsNameNotFoundException
{
DataSourcedataSource=lookup(name);
if(dataSourceinstanceofDataSourceImpl){
DataSourceImpldsi=(DataSourceImpl)dataSource;
try{
dsi.stop();
dsi.close();
}catch(Exceptione){
}finally{
dsi=null;
}
}
connectionPools.remove(name);
}

}




ConnectionFactory次要供应了用户将将毗连池绑定到一个详细的称号上和作废绑定的操纵。利用者只必要体贴这两个类便可利用数据库毗连池的功效。上面我们给出一段怎样利用毗连池的代码:


Stringname="pool";
Stringdriver="sun.jdbc.odbc.JdbcOdbcDriver";
Stringurl="jdbc:odbc:datasource";
ConnectionParamparam=newConnectionParam(driver,url,null,null);
param.setMinConnection(1);
param.setMaxConnection(5);
param.setTimeoutValue(20000);
ConnectionFactory.bind(name,param);
System.out.println("binddatasourceok.");
//以上代码是用来挂号一个毗连池对象,该操纵能够在程序初始化只做一次便可
//以下入手下手就是利用者真正必要写的代码
DataSourceds=ConnectionFactory.lookup(name);
try{
for(inti=0;i<10;i++){
Connectionconn=ds.getConnection();
try{
testSQL(conn,sql);
}finally{
try{
conn.close();
}catch(Exceptione){}
}
}
}catch(Exceptione){
e.printStackTrace();
}finally{
ConnectionFactory.unbind(name);
System.out.println("unbinddatasourceok.");
System.exit(0);
}




从利用者的示例代码就能够看出,我们已办理了惯例毗连池发生的两个成绩。可是我们最最体贴的是怎样办理接受close办法的举措。接受事情次要在ConnectionFactory中的两句代码:


source=newDataSourceImpl(param);
source.initConnection();
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。
乐观 该用户已被删除
沙发
发表于 2015-1-21 12:20:19 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
愤怒的大鸟 该用户已被删除
板凳
 楼主| 发表于 2015-1-24 19:01:14 来自手机 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
深爱那片海 该用户已被删除
地板
发表于 2015-1-29 06:35:57 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
若天明 该用户已被删除
5#
发表于 2015-2-5 20:49:45 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
兰色精灵 该用户已被删除
6#
发表于 2015-2-10 07:25:15 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
简单生活 该用户已被删除
7#
发表于 2015-2-16 13:46:11 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
蒙在股里 该用户已被删除
8#
发表于 2015-3-4 01:25:32 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
柔情似水 该用户已被删除
9#
发表于 2015-3-6 13:25:46 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
飘飘悠悠 该用户已被删除
10#
发表于 2015-3-7 13:20:57 | 只看该作者
是一种突破用户端机器环境和CPU
灵魂腐蚀 该用户已被删除
11#
发表于 2015-3-14 21:46:59 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
金色的骷髅 该用户已被删除
12#
发表于 2015-3-21 14:17:28 | 只看该作者
是一种使用者不需花费很多时间学习的语言
山那边是海 该用户已被删除
13#
发表于 2015-3-26 02:43:20 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
小魔女 该用户已被删除
14#
发表于 2015-4-1 05:10:24 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
老尸 该用户已被删除
15#
发表于 2015-4-1 13:47:53 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
透明 该用户已被删除
16#
发表于 2015-4-1 17:42:18 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
小妖女 该用户已被删除
17#
发表于 2015-4-21 15:15:01 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
分手快乐 该用户已被删除
18#
发表于 2015-4-21 20:47:48 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
莫相离 该用户已被删除
19#
发表于 2015-4-21 21:11:44 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
小女巫 该用户已被删除
20#
发表于 2015-4-23 19:22:26 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 07:50

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表