欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

加快JDBC设计中JSP访问数据库

程序员文章站 2024-02-23 16:01:46
    以前,我们已经提到,jsp程序都是模块,并且具有强大的表达-请求(presentation-request)功能。建立一个完美的数据库...

    以前,我们已经提到,jsp程序都是模块,并且具有强大的表达-请求(presentation-request)功能。建立一个完美的数据库访问是一个具有挑战的过程,而jdbc接口能够很好地完成这一过程。然而,嵌入于jsp代码中的jdbc代码,与sql命令嵌入在jdbc一样,可以充分利用jsp的功能,为客户端建立一个整洁而简便的api。为了达到这一目的,我们可以考虑到使用jsp操作来建立数据库接口组件。

 
    完美的jsp设计模式是model-view-controller (mvc)。传统三层体系为:model为程序逻辑和数据;view为查看;以及controller为请求处理。遵循这一模型,一个jsp程序包含客户端-服务器“对话框”的每一“行”的页面。在一个典型的程序中,你可以看到一个查询页面,一个验证页面,一个数据库插入页面,一个数据库更新页面,等等。

在上一篇的文章中,我们讨论到如何在每一页面中嵌入jdbc,以保证程序的结构更加合理。然而,建立可执行的sql命令,正如变量通过jdbc命令而传递一样,也有可能会增加程序的复杂性。

jdbc设计的jsp操作
jsp数据库操作的另一方法是,在不使用jdbc的情况下为数据库建立一些操作的集合。使用这种方法,你可以得到两种好处:第一,你可以消除使用jdbc的必要,这就使得很多工作得以简化;第二,你的设计和代码的组织更加合理(比如可读性,灵活性,以及可维护性)。

你仍然需要一些驱动程序,但你首先简化以上的操作。jsp程序中的操作都是一些逻辑块,通常被其它的jsp程序开发者编写和利用,但你可以把它们当成子程序来使用。使用jsp操作的意义是标准化某些功能,以及最大程度地减少嵌入在jsp的java代码数量。

jsp提供了一套标准扩展的类。通过这些类,你可以通过一个标签管理器器(tag handler)定义一个操作。这里有两个jsp定义的java接口:tag接口和bodytag接口,分别是由tagsupport类和bodytagsupport类执行。

你可以建立通用jsp用途的一个标签库,并且你也可以执行标签管理器(tag handler)以扩展类的支持。以下是实现这些过程的步骤。

首先,执行一个标签管理器的类:

packagecom.myactions;

(import statements go here)

public class myactiontag extends tagsupport {
       ...
       }

接着,编译这段代码,并将类文件放置在程序的类库中。然后,你将需要一个tag library descriptor (tld)文件,这是一个xml文件,以匹配你的操作名称和相应的标签管理器的类。

<tag>
       <name>myaction</name>
       <tagclass>com.myactions.myactiontag</tagclass>
       <bodycontent> (whatever)  </bodycontent>
       <attribute>mydata</attribute>
</tag>

</tag>

相关的trialware

  • dbutils (apache software foundation)
  • ibm informix jdbc driver (ibm)
  • mysql connector/j 3.0 (mysqlab)
  • sql4x manager j 2.2 (macosguru)
  • informix downloads (ibm red brick warehouse 32bit) (solaris) (ibm)
  • informix downloads (ibm red brick warehouse 64bit) (hpux) (ibm)
     更多trialware
  • 假设你已经建立一个名为myaction的操作,这是一个与com.myactions.myactiontag类匹配的tld。tld文件必须位于程序的tlds路径。

    当你从一个jsp页调用操作时,tld告诉jsp正确的类以使用操作。这就带来极大的方便,而且只需要少量的代码。

    但是,从何引入sql?首先,你需要建立具有连接功能的数据库访问。你可以使用javax接口来完成,而javax可见于jdbc 2.0 optional工具箱。jdbc 2.0的javax.sql.datasource类提供了你所需要的连接。

    此时,sql位于什么地方?它在bean中。你可以使用jdbccreatestatement和preparedstatement在bean中建立一个方法。将这一方法成为一个公共的vector,并正确地将你的sql声明传递到这一方法。

     

    总结
    你的数据库bean执行一个嵌入在操作体的sql语句,你可以传递一个语句给sql语句,或者使用它来执行一个预先的操作。可以通过标签管理器来执行你的操作。由于jdbc被嵌入于库代码中,你将不能在jsp程序中明确地使用它。

    初次使用这种方法会觉得它比jdbc中的嵌入sql,以及jsp中的嵌入jdbc更加复杂,但是,你建立sql操作并将它们存放在一个tld,你只需做一次,在所有的jsp程序中就可以访问这些操作。这就是这种方法的优点。

    下一次,我们将会讲述到jsp页和会话(sessions)之间的数据传递。