JSP中数据库访问的性能优化研究

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:BigWrist
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:在简要介绍了JSP数据库连接技术的基本原理和实现方法的基础上,提出了在数据存储、正确选择驱动程序、使用连接池技术及代码优化等方面改进数据访问效率的措施。
  关键词:JSP;数据库;连接池
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)24-1283-02
  Research on Performance Optimization of Database Accessing Technologies in JSP
  SHENG Zhong-biao
  (Department of Computer Science, Weinan Teachers College, Weinan 714000, China)
  Abstract: The article first introduces the basic principle and the way how to use the database connection technology of JSP. And then put forward the method of database access based on data storage, the correct choice of JDBC, the technology of connection pool and the optimization about code.
  Key words: JSP; database; connection pool.
  
  1 前言
  
  目前,基于B/S模式的三层或多层开发模式,已成为开发Web应用普遍采用的方法。在B/S架构的系统中,应用系统要频繁访问数据库,连接数据库需要用户验证,使用以后又要确保它们被正确关闭。因此连接数据库是一种耗时的操作,对数据库的高效访问成为Web应用的关键所在[1]。
  
  2 JSP中数据库访问技术
  
  2.1 JDBC数据库访问机制
  JSP中对数据库的访问是通过JDBC实现的。JDBC是由SUN 公司制定的Java数据库连接技术的简称。用来支持独立于任何特定SQL实现的基本SQL功能,提供数据库访问的基本功能。JDBC的一个主要特点就是数据库的互操作性。即就是通过使用JDBC API来进行数据库访问,可以在不修改应用程序的情况下,改变所使用的数据库驱动程序(或数据库引擎)。
  2.2 JDBC的功能结构
  图1为JDBC功能结构图。JDBC的结构分为两层:面向开发人员的JDBC API和面向底层的JDBC Driver API。
  
  
  2.3 JDBC驱动程序的类型[2]
  1)JDBC-ODBC桥和ODBC驱动程序。
  2)JDBC网络驱动,为适应应用服务器与数据库服务器分离的结构而提供的方式。
  3)数据库协议驱动程序,该方式将JDBC与一种通用数据库协议驱动程序相连,利用中间件和协议解释器将该协议驱动程序与某种具体的数据库系统相连。
  4)本地数据库专用驱动程序。
  
  3 性能优化方法
  
  3.1 数据存储方面
  在数据的存取方面,采用JSP/Servlet JDBC的技术。Web服务器主要负责接收本地或远程浏览器的HTTP数据请求,中间层的Servlet收到请求,利用JDBC提供的标准API对数据库进行访问和相应的操作处理。Servlet再将查询的数据传给JSP,最后生成标准的JSP页面将结果返回给提出请求的浏览器。这样,不仅将客户端与数据库服务器端分开,同时提高了数据库的访问效率。
  3.2 正确选择JDBC驱动程序
  3.2.1 JDBC驱动程序分析
  驱动程序1:这种方式借用了现成的ODBC驱动程序,方便了开发人员。但是这种方式增加了一个中间层次,使得访问数据库的效率和可靠性有所下降,而且有些驱动程序不是多线程的,不适合在要求并行访问数据库和数据库驱动程序的情况下使用。
  驱动程序2:这种类型的驱动程序把对JDBC的调用转化成对DBMS直接使用的网络协议,从而允许Java客户端直接访问DBMS。这类驱动程序性能最好,但是只能访问一种数据库。
  驱动程序3:这种类型的驱动程序使用不依赖于具体DBMS的网络协议而是与中间服务器通信。
  驱动程序4:这种类型的驱动程序不是纯JAVA驱动程序,此类驱动程序也必须在本地计算机上先安装好特定的驱动程序,然后通过JDBC-NativeAPI Bridge 的转换,把Java程序中使用的JDBC API 转换成Native API,进而存取数据库。这种方法效率比第一类驱动程序效率虽然高一些,但仍然需要在每台客户机上预先安装本地API库,因此不利于维护和使用。
  3.2.2 JDBC驱动程序选择
  综上所述最佳的JDBC驱动程序类型是第二类,它不会增加任何额外的开销,并且由纯Java语言开发而成,拥有最佳的兼容性。第三类JDBC驱动程序也是不错的选择,它也是由纯Java 语言开发而成的,并且中间件也仅需要在服务器上安装。因此,建议最好以第二类和第三类JDBC驱动程序为主要选择。
  3.3 使用连接池技术
  3.3.1 建立连结池的必要性
  Web应用程序的访问,要面对并发问题。随着用户数量的增加,当前面的用户请求尚未处理完毕时,后面的请求已经到来的可能性就会大大增加。让应用程序在某一时刻只接受一条数据库请求是不现实的。
  通常采用的方法有两个:1)为每一个请求建立新的数据库链接;2)在JSP初始化时,创建一个单独的数据库连接。但是这两种方法都可能导致系统内存不足,资源耗尽。
  连接池技术是目前被认为最合适的解决数据库连接问题的方法,它在设计上是一种互相冲突的需求的折衷。这里复杂性和资源,性能和效率得到了很好的均衡。
  3.3.2 连接池实现
  连接池技术最基本的思想就是预先建立一些连接放置于内存对象中以备使用。当程序中需要建立连接时,只需从内存中取一个来用而不用新建[4]。同样,使用完毕后,只需放回内存即可。
  在实际应用中,通过连接池管理程序设置连接的最大数目,控制着同一时刻有多少并发请求可以被同时处理。所有当前的请求都被连接池管理程序按顺序锁定。这些请求线程的锁定时通过高层应用程序代码进行的。一旦某个JSP将连接交还给了连接池,那么管理程序就会立刻将其分配给锁定队列中的下一个请求。这样就需要建立一个好的连接池管理程序,在编写死锁-释放、并发访问等管理代码时必须考虑所有可能的并发问题。
  下面给出实现connectionPool的JavaBean如下:
   //查询完整的SQL语句
  public ResultSet query(String strquery){
   try{
  con = poolConn.getConnection();
  stat = con.createStatement();
  ResultSet result = stat.executeQuery(strquery);
  return result;
   }catch(SQLException e){
  e.printStackTrace();
   return null;
  }finally{
  poolConn.returnConnection(con);
  }
  }
   //提交数据库的更改请求
   public int update(String strquery){
  try{
  con = poolConn.getConnection();
  stat = con.createStatement();
  stat.executeUpdate(strquery);
  return 1;
  }catch(SQLException e){
   return 0;
   }
   finally{
  poolConn.returnConnection(con);
  } }
  通过这样的封装,内部模块的耦合性得到了降低,用户只需要根据sql语句的性质,分别调用query(sql)和update(sql)两个函数即可完成数据库的操作,而无需考虑如何建立和释放连接,以及是否使用连接池等等细节。
  3.4 程序中SQL语句格式的优化
  JSP中访问数据库时,如果多次在普通Statement 对象执行SQL语句,命令每次都要被数据库进行解析和编译。而使用PreparedStatement对象时,由于PreparedStatement对象不仅包含了SQL语句,而且大多数情况下这个语句已经编译。因而当其执行时,只需DBMS运行SQL语句,而不必先编译。因而,可大大降低运行时间,当然也加快了数据库访问的速度。
  3.5 JavaBeans封装对数据库的操作
  JavaBean是一种可以重用的Java组件,它的最大优点是可以实现代码的重复利用,并且当更换后台数据库时,不必修改JSP 页面,只需要在JavaBean 中改变驱动程序以及连接方法,有利于程序的维护。JavaBean的工作原理是将数据库基本的处理逻辑封装在JavaBean包中,通过JSP调用JavaBean实现数据库的连接。
  
  4 结论
  
  数据库访问的性能优化对提高系统可用性和效率有着非常重要的意义。在实际开发中针对不同的客户需求和应用环境选取合适JDBC驱动程序;在编码过程中使用连接池技术;优化SQL 查询语句;以及数据库结构的优化都会提升应用程序的效率。当然实际操作中的经验积累也是提高JSP数据库访问性能的重要方面,只有针对具体的开发要求和开发环境,进而采取相应的措施,才能得到较为满意的数据访问效率。
  
  参考文献:
  [1] Kevin M,Todd L,Jhon C.Java数据库应用程序编程指南[M].北京:电子工业出版社,2002。
  [2] 吴兴兴,高保禄,董志锋,等.网络数据库应用实例[M].北京:人民邮电出版社,2000:155-157.
  [3] 宋善德,郭飞.基于Java的Web数据库连接池技术的研究[J].计算机工程与应用,2002,(8):201-206.
  [4] 杨绍方.深入掌握J2EE编程技术[M].北京:科学出版社,2002.
  [5] Annunziato J.JSP速成教程[M].北京:机械工业出版社,2002.
  [6] 耿祥义,张跃平.JSP基础教程[M].北京:清华大学出版社,2004.
其他文献
摘 要:计算机的诞生与互联网的兴起,使人们的工作、学习、生活与交往发生了天翻地覆的变化。有人说这是第三次工业革命,也有人说这是信息的革命。文章简述信息技术对教育具有革命性作用的背景下,如何构建新型的“主动”学习模式,突破传统教育的“瓶颈”,培养个性鲜明和创新力强的人才,使每一个学生都能获得同等的学习机会。展现信息技术在教育中的积极革命性与决定性作用,实现学习由“被动”到“主动”的伟大变革,意义深远
我有一只可爱的小白兔,叫“欢欢”,是妈妈从姑姑家抱来的。它可好玩了,下面我给大家介绍一下欢欢吧!  欢欢有红红的眼睛,三瓣嘴,雪白的毛,小鼻子一努一努的可有意思了。它还有一对长长的耳朵,这样是不是比别的小动物听得更清楚呢?它的胃口可好了,青菜、萝卜、小白菜……什么都吃。欢欢喝水的时候,小舌头一舔一舔的,样子还挺优雅呢!它睡觉不是趴着,也不是躺着,而是缩成一团,远远看去像个雪白的棉花团。  每次出门
君不见一望屏山黛色时,  江舟系岸欲归之。  君不见几重青柳旧曾识,  四散芦花无人知。  他乡久作飘零客,  世外物华不堪奇。  月挂高枝乌啼处,  人随鸟心无肯栖。  千回梦醒披衣看,  一朝追来已嫌迟。  值春暮,正佳期。  晴晚照,影參差。  一捧花红落,  东风袭人晚来急。  寒云空锁杜工祠,  张家海棠坠入泥。  孤飞雁影南津渡,  榆立栏边马啸溪。  巷末秦院深门闭,  女墙斜出一树
小兔子躺在大树下休息时,忽然看到天空中有一朵云蘑菇。小兔子想,哇,自己还没吃过云蘑菇呢。云蘑菇咬在嘴里一定是松松軟软的,至于是什么味道还不知道。  小兔子想摘一朵云蘑菇尝尝,它登上了最高的山,又爬上了山上最高的一棵树,小兔子一看,呀,云蘑菇看起来近多了。小兔子又架起了梯子,爬上了天空。  到了天空,小兔子这才发现那朵云蘑菇好大啊,可不是普通蘑菇那样的大小,它简直惊呆了,那朵云蘑菇有自己的一张床那么
“不吃,我不吃!”我跑出屋,躲到小黃人玩偶的后面做着鬼脸,冲着外婆耍赖撒娇。外婆拿我没办法,只好不再勉强我。不吃啥?不吃菠菜呗!这不,今天中午又做了菠菜汤,我哪能随便屈服,坚决不吃!  午饭后,外婆开车带我去沙石场。“来这儿干什么?”我迷惑地问。“建个菠菜试验田。”外婆笑着对我说。她买了100块红砖,一大卷塑料薄膜,4立方黄土……小货车一会儿就把东西运到了外婆家的院子里。  我撅着屁股铺地膜,外婆
语言学是对语言的表达方式、蕴含价值及情感思想等进行研究的理论。要进入语言学的世界,体会语言的精妙之处,探寻语言的形成发展历程,就要从基础的课程展开,循序渐进,在语言学的知识学习中,感受语言的魅力,体会语言所传递的丰富知识与多元信息。《语言学基础教程》由苗兴伟主编,胡壮麟主审,2018年由北京大学出版社出版。本书属于语言学方面的系列教材,围绕着语言学的基础知识展开,对语言学理论进行了全面解读与深度阐
世界上最近的距离是母与子脐带相连,只有神奇的血脉解释出天地的奥秘。  今生 ,我穷极一生也无法丈量运河宽度,一条河早已跨越了人心。  我敬仰中華民族悠久灿烂的文明,只因河不曾断流,中华民族不曾更改信仰。  运河帆影,古道幽幽,你转漕的岂止是江南的米粮,塞北的乌金。儒家的中庸,法家的正道顺着运河水生生不息的奔流。  你是一条连接南来北往,纵贯古今的脐带,你把中华儿女紧紧相系,你让中华文明永不断流。
摘要:作为对欧美文学影响深远的拉丁美洲作家,博尔赫斯用奇特的叙述方式,将传说或是见诸记载的人物、事件进行“重述”和“改写”。在内容上,他“篡改”和“歪曲”他人作品中所叙述的故事,用近乎抄袭的创作方法表现故事和人物命运的多样性可能,及现实生活的丰富多彩。在形式上,作者从时空的多重维度和现实生活的多重组合中构建文本,将夸张的艺术形式与哲理般的思想内容结合起来,用零散性、互文见义、模糊性体裁、迷宫现象和
摘要:软件复用是提高软件生产力和软件质量的重要途径。本文提出了一种用面向对象的UML方法来分析并从中提取可复用构件的方法,并提出了ERP领域构件的一种提取及分类方法。  关键词:统一建模语言;构件;企业资源计划;构件分类  中图分类号:TP31 文献标识码:A 文章编号:1009-3044(2008)18-20ppp-0c    Extraction and classify component
摘要:系统基于C/S、B/S结构,采用C#为程序设计语言,SQLServer2000为后台数据库。该系统实现了进销存的信息化管理,方便了经营者日常经营管理,减少了额外开销,降低成本。  关键词:进销存;C#;SQLServer2000  中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)18-2pppp-0c  Abstract:System is based on C/