源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
查看: 429|回复: 13

[JSP编程] 加快JDBC设计中JSP访问数据库

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2006-10-13 00:00:00 | 显示全部楼层 |阅读模式

    以前,我们已经提到,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 (MySQL AB)
  • 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)之间的数据传递。

    回复

    使用道具 举报

    12

    主题

    1万

    回帖

    431

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    431
    发表于 2022-8-8 23:05:38 | 显示全部楼层
    啊,数码撒飒飒飒飒
    回复 支持 反对

    使用道具 举报

    0

    主题

    1万

    回帖

    68

    积分

    注册会员

    Rank: 2

    积分
    68
    发表于 2023-1-1 13:12:48 | 显示全部楼层
    啊,数码撒飒飒飒飒
    回复 支持 反对

    使用道具 举报

    9

    主题

    1万

    回帖

    420

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    420
    发表于 2023-3-14 14:59:56 | 显示全部楼层
    的谁vdvdsvdsvdsdsv
    回复 支持 反对

    使用道具 举报

    4

    主题

    1万

    回帖

    60

    积分

    注册会员

    Rank: 2

    积分
    60
    发表于 2023-4-9 02:30:27 | 显示全部楼层
    逛逛看看瞧瞧
    回复 支持 反对

    使用道具 举报

    2

    主题

    1万

    回帖

    221

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    221
    发表于 2023-8-15 11:34:20 | 显示全部楼层
    天天源码论坛
    回复 支持 反对

    使用道具 举报

    0

    主题

    1万

    回帖

    0

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    0
    发表于 2023-8-22 09:37:12 | 显示全部楼层
    哈哈哈哈哈哈哈
    回复 支持 反对

    使用道具 举报

    0

    主题

    1万

    回帖

    0

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    0
    发表于 2023-10-24 02:07:37 | 显示全部楼层
    老大你好你好好你好
    回复 支持 反对

    使用道具 举报

    5

    主题

    1万

    回帖

    69

    积分

    注册会员

    Rank: 2

    积分
    69
    发表于 2024-1-25 04:44:15 | 显示全部楼层
    而非为吾问无为谓娃娃
    回复 支持 反对

    使用道具 举报

    4

    主题

    1万

    回帖

    60

    积分

    注册会员

    Rank: 2

    积分
    60
    发表于 2024-6-5 06:18:31 | 显示全部楼层
    数据库了多久撒快乐的健身卡啦
    回复 支持 反对

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

    GMT+8, 2024-9-20 22:44 , Processed in 0.082708 second(s), 26 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表