您好, 访客   登录/注册

基于JSP的数据库开发中的几个关键技术

来源:用户上传      作者: 叶春凤

  摘要: JSP技术是基于Java Servlet和整个Java体系的Web开发技术,利用这一技术可以建立先进、安全、快速和跨平台的动态网站。通过网站动态页面访问后台数据库,则需要JDBC(JavaBean),而要快速地访问后台数据库,就要用到数据库连接池。
  关键词: JSP技术数据库访问机制连接池B/S模式
  
  1.JSP技术
  
  JSP技术是基于Java Servlet和整个Java体系的Web开发技术,利用这一技术可以建立先进、安全、快速和跨平台的动态网站。在传统的网页HTML文件中加入Java程序段和JSP标记,就构成了JSP网页。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页、发送E-mail等,这就是建立动态网站所需要的功能[3]。
  
  1.1JSP的工作原理与技术特点。
  类似于Microsoft的ASP技术,JSP也对HTML标记集合进行了扩展。这些扩展的标记只能由支持它的服务器上的JSP的引擎来识别并负责解释执行。JSP页面以扩展名为.JSP件的形式存于服务器上,当服务器接收到客户端对某个JSP页面的请求时,如果这是对该页面创建或修改后的第一次请求,那么JSP引擎就把该JSP页面内容转换成一个纯Java语言的Server源码,然后将其编译成Servlet字节代码,最后将Servlet的执行结果返回至浏览器。JSP页面被编译成Servlet之后,其执行代码一独立线程的方式一直存在服务器的内存中,以后对该JSP页面提出请求时,不需要重新编译,知道该页面被修改或Web应用程序重新启动。Java Servlet由于在服务器端运行,并且不包括会占用大量系统资源的GUI,因此运行的速度要比Java Applet和Java独立应用程序快,同时还可以通过预编译JSP页面以加快响应客户端请求的速度。
  JSP技术是对Servlet技术的一种扩展,它为基于Java环境开发多层结构的动态Web应用程序提供一种方便、快捷的方法。JSP具有如下一些特点[4]。
  1.1.1简化的页面生成技术。
  1.1.2与Java平台有机集成。
  1.1.3硬件平台和服务器无关性。
  1.1.4功能可扩展性。
  1.1.5JSP可以通过JDBC与诸如Oracle,DB2、SQL Server这样的大型关系数据库进行连接。
  1.1.6JSP提供了一些隐含对象。
  
  1.2JSP的实现方式。
  利用JSP开发动态Web页面的方式一般有两种:一种是HTML页面中直接嵌入Java程序,相当于把Servlet的源代码直接写到HTML页面中;另一种是在JSP页面中调用Java Bean,以充分发挥Java Bean的强大功能。
  Java Bean技术是一种可重复使用且跨平台的软件组件,它为软件开发者提供了一种极佳的解决方案,使他们可以利用Java Bean技术封装事务逻辑,很好的实现业务逻辑和客户端操作的分离,使系统具有更好的灵活性和适用性。其工作原理是将数据库的基本操作逻辑封装在Java Bean包中,通过JSP调用Java Bean来实现数据库的连接。首先将用Java编写的数据库连接和对数据库的基本操作的程序编译,生成*.class文件,就可以通过JSP调用Java Bean 来实现数据库的操作。使用Java Bean提高了代码的重用程度,简化了程序设计的复杂度。但Java Bean与数据库连接时耗时较多,当有过多的并发访问时,加之数据库所支持的并发连接数量有限,反而会使数据库的运行效率下降。
  
  2.Browser/Server模式
  
  Browser/Server是由传统的二层Client/Server结构发展而来的三层结构在Web上的应用特例。Browser/Server结构极大地简化了客户机的工作,客户机只需安装,配置少量的客户软件即可,对数据库的访问和应用程序的执行将在服务器上进行。客户机无法直接对数据库操纵,能有效地防止用户的非法入侵。三层结构如下。
  
  2.1表示层:Web浏览器。
  表示层的任务是由Web浏览器向网络上的某一Web服务器提出服务请求,Web服务器对用户身份进行验证后用HTTP协议把所需的主页传送给客户端,客户机接受传来的主页文件,并把它显示在Web浏览器上。
  
  2.2功能层:具有应用程序扩展功能的Web服务器。
  功能层的任务是接受用户的请求,首先需要执行相应的扩展应用程序与数据库进行连接,通过SQL等方式向数据库提出数据处理申请,而后等数据可服务器将数据处理结果提交给Web服务器,再有Web服务器传送给客户端。
  
  2.3数据层:数据库服务器。
  数据层的任务是接受Web服务器对数据库操纵的请求,实现对数据库查询、修改、更新等功能,把运行结果提交给Web服务器。
  这种三层结构层与层之间相互独立,任何一层的改变不影响其他层的功能。由于这种模式提供一个跨平台的简单一致的应用环境,实现了开发环境与应用环境的分离,故避免了为不同操作系统开发同一应用系统的重复操作,便于用户群的扩展、变化,以及应用系统的管理。鉴于B/S模式的突出优点,本系统采用了这种模式。
  
  3.JDBC数据库访问机制
  
  JDBC(Java DataBase Connectivity)是一种“开放”的方案,它为数据库应用开发人员、数据库前台工具开发人员提供一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。
  JDBC是Java应用程序和数据库沟通的桥梁,通过JSP程序完成与数据库的连接,执行相应的数据库操作。JDBC 2.0标准扩展API可以实现具有以下特性的应用技术:
  3.1允许请求客户机透明地共享资源池的多个连接对象。
  3.2应用服务器供应商在其内存空间实现池管理器,并根据需要动态改变池的大小,从而优化资源的使用。
  JDBC技术用于访问各种数据源的数据库,它提供了不同数据库的DBMS连接。JDBC与数据库相连有两种方法,其一是通过JDBC 2ODBC来连接各种支持ODBC驱动程序的数据库;另一种方法是通过专用的JDBC驱动程序来与数据库连接。前者已被广泛使用并得到了大多数数据库的支持,后者是通过Java提供的用于各种数据库的专用驱动程序来实现数据库的连接,先把专用的驱动程序放在环境变量的ClassPath路径里,然后JSP程序中创建数据库连接就可以引用了。
  程序访问数据库时,通过JDBC Driver Manager调度取得与要访问的数据库对应JDBC Driver,建立与数据库的连接,然后传送SQL语句,数据库处理SQL语句以及返回处理结果。最后,关闭数据库的连接。
  通过JDBC提供的API,应用程序能够完成与数据库的连接和交互,JDBC作为一种数据库访问技术,具有使用简单、可移植性强、易于编写和维护等优点,可高效地实现数据库的连接。但也有其局限性,如访问速度慢,JDBC ODBC驱动桥的局限性等。因此使JDBC访问数据库受到了限制。
  
  4.连接池技术
  
  为了解决JDBC(Java Bean)数据库连接时的效率下降、耗时多的缺陷,我们可以采用连接池技术。在JSP中,把连接池技术和JDBC(JavaBean)结合起来使用,就能极大地提高数据库的访问效率。

  连接池(Connection Pool)就是众多连接对象的“缓冲存储池”,也就是连接对象的集合体。连接池内部提供了一种连接机制,能控制连接池内部连接对象的个数,对应用程序提供获取和释放连接的接口,完善的连接池还能控制连接对象的生存期。
  连接池的工作原理包括3个方面:连接池的建立、管理和关闭。
  建立一个连接池,池中的连接是在系统初始化时候就分配好的,并且不能够随意关闭的,以后所使用的连接都是从该连接池中获取的。连接池应从数据库一次性的获取预设数目的连接对象,这样就可以避免连接随意建立、关闭造成的开销。
  连接池对连接的管理是连接池的核心部分,可以使用静态管理和动态管理两种策略。静态就是使用的时候发现空闲连接不够再去检查。动态就是使用了一个线程定时检查,外部应用程序访问数据库时,不是直接向数据库新建一个连接,而是向连接池申请一个连接,若连接池有空闲的连接,则分配一个连接;若没有空闲的连接,则有两种方法获得连接。其一是等待一个连接被释放其二就是在已经分配的连接中找一个合适的连接给用户,此时该连接在多个用户间复用。复用连接非常重要,我们可以采用这样的设计模式:Reference Counting(引用记数)。该模式在复用资源方面用的非常广泛,每一个数据库连接,保留一个引用记数,用来记录该连接的使用者的个数。具体的实现上,我们可采用空闲池和使用池技术。空闲池中存放目前还没有分配出去被使用的连接,一旦一个连接被分配出去,那么就会放入到使用池中,并且增加引用记数。这样就可以高效地使用连接,因为一旦空闲池中的连接被全部分配出去,我们就可以采用复用引用记数最小的连接的方法从池中挑选出一个已经正在使用的连接用来复用。关闭连接池也就是连接池向数据库归还所有的连接对象。连接池规定了相应的方法来关闭连接。
  基于JSP和SQL Server的网上数据库系统开发技术已经相当成熟,本文介绍了网络数据库系统开发过程中的几个技术问题,如连接池技术、JDBC(Java Bean)数据库访问机制等。
  
  参考文献:
  [1]赵松涛.SQL Server 2000系统管理与应用开发.人民邮电出版社,2006.2,(1).
  [2]耿祥义,张跃平.Java程序设计(第三版)[M].北京:清华大学出版,2009.
  [3]杨志姝,李光海.SQL应用与开发,北京:清华大学出版,2006.7,(1).
  [4]石志国.JSP网络开发详解[M].电子工业出版社,2007.8,(1).


转载注明来源:https://www.xzbu.com/9/view-980474.htm