用JSP访问电子商务网站数据库(一)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用JSP访问电子商务网站数据库(一)
摘要]高效的Web数据库访问技术是电子商务网站成功的重要保证之一。本文通过实例着重介绍了JSP中用连接池技术访问Web数据库的方法,该方法可以高效地实现多用户并发对Web数据库的访问。
关键词]JSP;JDBC;连接池
电子商务网站具有信息交流量大、信息交流快捷的特点,电子商务网站与一般网站相比,具有3个特点:一是信息量大;二是在同一时刻访问者繁多;三是它应具有商品规范的实施和数据处理能力。因此,电子商务网站建设的着重点是信息量的丰富和流通的快捷。电子商务网站中的信息是存储在数据库中的,采用JSP访问数据库,应用连接池技术可以极大地减少连接和关闭数据库的操作,提高系统性能。
一、JSP简介
JSP(JavaServerPages)是一种开发Web后台程序的技术,是由Sun公司推出的基于Java的新一代站点开发语言。它可以在JavaBean和Servlet的支持下,完成功能强大的站点程序开发,尤其是对Web数据库的访问操作。JSP作为站点开发语言,具有运行速度快、安全性高、易于扩展等独特优点,这是其他站点开发语言(如ASP)无法比拟的。另外,几乎所有的平台都支持Java、JSP以及JavaBean。
利用先进的Java技术:JSP,JavaServlets和JavaBean,能高效地解决前端信息安全以及后台大量数据接口等一系列大型电子商务网站所面临的问题。JSP技术进行数据访问有几个特点:将内容的生成和显示进行分离;强调组件的重用,提高软件开发的效率;采用标识简化页面开发,设置内置对象和应用组件,降低开发难度。现在,JSPServletJDBCJavaBean已经成为开发电子商务平台的主流技术。
二、JSP对Web数据库的访问
JSP访问Web数据库有两种主流技术,分别是JDBC(JavaBean)技术和连接池技术。1.JDBC(JavaBean)技术
JSP借助Java语言的数据库连接技术JDBC(JavaDatabaseConnectivity),即通过JDBC驱动程序与数据库相联,执行查询、修改、增加、删除等操作。JDBC作为一种数据库访问技术,具有使用简单、可移植性强、易于编写和维护等优点,可高效地实现数据库的连接。
利用JDBC-ODBC转换,Java程序就可以访问带有ODBC驱动程序的数据库,从而方便地实现数据库的跨平台访问。目前,大多数数据库系统都带有ODBC驱动程序,所以JSP能访问Oracle,Sybase,MicrosoftSQLServer,MySQL和MSAccess等各种数据库。
JavaBean技术是一种可重复使用且跨平台的软件组件,它为软件开发者提供了一种极佳的解决方案,使他们可以利用JavaBean技术封装事务逻辑,很好地实现业务逻辑和客户端操作的分离,使系统具有更好的灵活性和适用性。其工作原理是将数据库的基本操作逻辑封装在JavaBean包中,通过JSP调用JavaBean来实现数据库的连接。首先将用Java编写的数据库连接和对数据库的基本操作的程序编译,生成*.class文件,然后就可以通过JSP调用JavaBean 来实现数据库的操作。使用JavaBean提高了代码的重用程度,简化了程序设计的复杂度。2.连接池技术
虽然JDBC(JavaBean)作为一种数据库访问技术具有诸多优点,但在电子商务网站中,当有大量的用户同时访问时,采用此种技术反而会使系统性能下降。为了解决这一问题,在JSP 中,把连接池技术和JDBC(JavaBean)结合起来使用。
连接池(ConnectionPool)就是众多连接对象的“缓冲存储池”,也就是连接对象的集合体。连接池负责管理数据库连接的建立、释放和调度。事前连接池先建立若干个连接,放置在内存对象中,当有数据库访问请求时,不需要执行连接数据库的操作,只需从连接池的空闲队列中取用连接;数据库访问完成后,将连接放回连接池中,供其他数据库操作时复用连接池中的
连接。应用连接池技术极大地减少了连接和关闭数据库的操作,非常显著地提高了系统性能。
三、连接池实例
本例建立的数据库连接池,可以高效地实现多用户并发对数据库的访问,数据库使用的是Oracle。
publicclassMyConPool{
privateStringdriver="oracle.jdbc.driver.OracleDriver";
privateStringurl="jdbc:oracle:thin:@DBServer:1521:OraDB";
privateStringuser="";
privateStringpassword="";
privateintConMax=1000;//连接池的最大连接数
privateintinitiateConNum=3;//连接池初始化时的连接数
privateintincrementConNum=2;
publicintActiveCon=0;//当前正使用的连接数
publicVectorPool=newVector();//保存数据库连接
java.text.SimpleDateFormatformatter=newjava.text.SimpleDateFormat("yyyy-MM-ddHH:mm:ss"); java.util.DatecurrentTime-1=newjava.util.Date();publicStringtime=formatter.format(currentTime-1);
//初始化initiateConNum个数据库连接
publicsynchronizedvoidinitiatePool(){
addConnection(initiateConNum);
}