推荐期刊

用JSP访问电子商务网站数据库

时间:2015-12-20 23:41:30 所属分类:微电子 浏览量:

[摘要] 高效的Web数据库访问技术是电子商务网站成功的重要保证之一。本文通过实例着重介绍了JSP中用连接池技术访问Web数据库的方法,该方法可以高效地实现多用户并发对Web数据库的访问。 [关键词] JSP;JDBC;连接池 电子商务网站具有信息交流量大、信息交流

[摘要] 高效的Web数据库访问技术是电子商务网站成功的重要保证之一。本文通过实例着重介绍了JSP中用连接池技术访问Web数据库的方法,该方法可以高效地实现多用户并发对Web数据库的访问。
  [关键词] JSP;JDBC;连接池
   
  电子商务网站具有信息交流量大、信息交流快捷的特点,电子商务网站与一般网站相比,具有3个特点:一是信息量大;二是在同一时刻访问者繁多;三是它应具有商品规范的实施和数据处理能力。因此,电子商务网站建设的着重点是信息量的丰富和流通的快捷。电子商务网站中的信息是存储在数据库中的,采用JSP 访问数据库,应用连接池技术可以极大地减少连接和关闭数据库的操作,提高系统性能。
  
  一、JSP简介
  
  JSP(Java Server Pages)是一种开发Web 后台程序的技术,是由Sun公司推出的基于Java 的新一代站点开发语言。它可以在JavaBean 和Servlet 的支持下,完成功能强大的站点程序开发,尤其是对Web 数据库的访问操作。JSP 作为站点开发语言,具有运行速度快、安全性高、易于扩展等独特优点,这是其他站点开发语言(如ASP)无法比拟的。另外,几乎所有的平台都支持Java、JSP以及JavaBean。
  利用先进的Java 技术:JSP,Java Servlets 和Java Bean,能高效地解决前端信息安全以及后台大量数据接口等一系列大型电子商务网站所面临的问题。JSP 技术进行数据访问有几个特点:将内容的生成和显示进行分离;强调组件的重用,提高软件开发的效率;采用标识简化页面开发,设置内置对象和应用组件,降低开发难度。现在,JSP Servlet JDBC JavaBean 已经成为开发电子商务平台的主流技术。
  
  二、JSP对Web数据库的访问
  
  JSP 访问Web数据库有两种主流技术,分别是JDBC(JavaBean) 技术和连接池技术。
  
  1.JDBC(JavaBean)技术
  JSP 借助Java语言的数据库连接技术JDBC (Java Database Connectivity),即通过JDBC 驱动程序与数据库相联,执行查询、修改、增加、删除等操作。JDBC作为一种数据库访问技术,具有使用简单、可移植性强、易于编写和维护等优点,可高效地实现数据库的连接。
  利用JDBC-ODBC 转换,Java程序就可以访问带有ODBC 驱动程序的数据库,从而方便地实现数据库的跨平台访问。目前,大多数数据库系统都带有ODBC 驱动程序,所以JSP 能访问Oracle,Sybase,Microsoft SQL Server,MySQL和MS Access 等各种数据库。
  JavaBean 技术是一种可重复使用且跨平台的软件组件,它为软件开发者提供了一种极佳的解决方案,使他们可以利用JavaBean 技术封装事务逻辑,很好地实现业务逻辑和客户端操作的分离,使系统具有更好的灵活性和适用性。其工作原理是将数据库的基本操作逻辑封装在JavaBean 包中,通过JSP 调用JavaBean 来实现数据库的连接。首先将用Java 编写的数据库连接和对数据库的基本操作的程序编译,生成*. class文件,然后就可以通过JSP 调用Java Bean 来实现数据库的操作。使用JavaBean 提高了代码的重用程度,简化了程序设计的复杂度。
  
  2.连接池技术
  虽然JDBC(JavaBean)作为一种数据库访问技术具有诸多优点,但在电子商务网站中,当有大量的用户同时访问时,采用此种技术反而会使系统性能下降。为了解决这一问题,在JSP 中,把连接池技术和JDBC(JavaBean) 结合起来使用。
  连接池(Connection Pool)就是众多连接对象的“缓冲存储池”,也就是连接对象的集合体。连接池负责管理数据库连接的建立、释放和调度。事前连接池先建立若干个连接,放置在内存对象中,当有数据库访问请求时,不需要执行连接数据库的操作,只需从连接池的空闲队列中取用连接;数据库访问完成后,将连接放回连接池中,供其他数据库操作时复用连接池中的连接。应用连接池技术极大地减少了连接和关闭数据库的操作,非常显著地提高了系统性能。
  
  三、连接池实例
  
  本例建立的数据库连接池,可以高效地实现多用户并发对数据库的访问,数据库使用的是Oracle。
  public class MyConPool{
  private String driver = "oracle. jdbc. driver. OracleDriver" ;
  private String url = "jdbc :oracle :thin : @DBServer :1521 :OraDB" ;
  private String user = " " ;
  private String password = " " ;
  private int ConMax = 1000 ;//连接池的最大连接数
  private int initiateConNum= 3 ;//连接池初始化时的连接数
  private int incrementConNum= 2 ;
  public int ActiveCon = 0 ;//当前正使用的连接数
  public Vector Pool = new Vector () ;//保存数据库连接
  java. text . SimpleDateFormat formatter =new java. text . SimpleDateFormat ("yyyy-MM-dd HH:mm:ss" ) ;
  java. util . Date currentTime-1 = new java. util . Date () ; public String time =formatter. format (currentTime-1) ;
  //初始化initiateConNum 个数据库连接
  public synchronized void initiatePool () {
  addConnection(initiateConNum) ;
  }

//获得数据库连接
  public synchronized Connection getConnection() throws Exception{
  Connection conn = null ;
  if (Pool . size () > 0) {
  conn = (Connection) Pool . elementAt (0) ;
  //取连接池中空闲连接
  Pool . removeElementAt (0) ;
  …//判断连接的有效性
  }
  else if (ActiveCon ConMax) {
  addConnection(incrementConNum) ;
  conn = getConnection() ;
  }
  else if (ActiveCon == ConMax) {
  returnConnection( (Connection) Pool . firstElement () ) ;
  conn = getConnection() ;
  }
  …//判断conn 是否为空,若不空则ActiveCon 加1
  return(conn) ; }
  //创建新的数据库连接
  private Connection createConnection() {
  Connection conn = null ;
  conn = DriverManager. getConnection(url , user , password) ;
  …
  return conn ;
  }
  //连续增加connum个空闲连接
  public synchronized void addConnection(int connum) {
  …
  for (int i = 0;i connum;i ) {
  Connection conn = createConnection() ;
  if (conn ! = null)
  Pool . addElement (conn) ; }//初始化了的连接保存到连接池中
  …
  }
  //释放一个数据库连接,并把该连接保存到连接池中
  public synchronized void returnConnection(Connection conn) {
  Pool . addElement (conn) ;
  ActiveCon-;
  }
  //遍历整个Vector 对象,释放所有数据库连接
  public synchronized void emptyPool () {
  … }
  }
  
  四、结束语
  
  电子商务网站中信息量大、信息交流频繁,而且会有多用户并发访问数据库,因此高效的Web数据库访问技术是电子商务网站成功的重要保证之一。采用JSP 访问数据库,应用连接池技术极大地减少了连接和关闭数据库的操作,显著提高了数据库的访问效率,高效地解决了电子商务网站中访问Web数据库的问题。

转载请注明来自:http://www.zazhifabiao.com/lunwen/dzxx/wdz/31646.html