问答题

【说明】
Web页面与数据库的连接是Web数据库的基本要求。目前基于Web数据库的连接方案主要有服务器端方案和客户端方案两种类型。服务器端方案的实现技术有ASP等,客户端方案的实现技术有JDBC、DHTML等。其中,ASP是微软开发的脚本语言技术,嵌入在 IIS中,因此,ASP成为大部分用户的首选脚本语言。图13-10给出了ASP的工作原理。


【问题2】
请至少写出ASP的5个特点。

【参考答案】

写出以下任意5点即可:①无需编译;②易于生成;③独立于浏览器;④ASP脚本在服务器端执行;⑤扩充性;⑥兼容性好;⑦源程序......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【说明】 某绘图系统存在point、line、square三种图元,它们具有Shape接口,图元的类图关系如图13-12所示。现要将circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由 Shape派生而来的,它提供的接口不能被系统直接使用。代码13-2既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码13-3根据用户指定的参数生成特定的图元实例,并对之进行显示操作。绘图系统定义的接口与XCircle提供的显示接口及其功能如表13-5所示。 表13-5接口及其功能 Shape XCircle 功能 display() DisplayIt() 显示图元 【代码13-2】class Circle (1) private (2) pxc; public Circle() pxc=new (3) ; public void display() pxc. (4) ; 【代码13-3】public class Factory public (5) getShape Instance(int tyoe) 生成特定类实例 switch(type) case 0: return new point(); case 1: return new Rectangle(); case 2: return new line(); case 3: return new Circle(); default: return null ;public class App public static viod main(String argv[) if(argv. length!=1) system. out. println( error parameters! ); Return; int type=(new Integer(argv[0)). intValue(); Factory factory=new Factory(); shape s; s=factory. (6) ; if(s==null) system.out. println( Error get instance! ); Return; s.display(); return;
问答题
【说明】在一公文处理系统中,开发者定义了一个公文结构OfficeDoc,其中定义了公文应该具有的属性。当公文的内容或状态发生变化时,与之相关联的DocExplorer结构的值都需要发生改变。一个OfficeDoc结构能够关联一组DocExplorer结构。当OfficeDoc结构的内容或状态发生变化时,所有与之相关联的DocExplorer结构都将被更新,这种应用被称为观察者模式。以下代码采用C语言实现,能够正确编译通过。【代码13-4】# include<stdio.h># define OBS_MAXNUM 20 *一个OfficeDoc变量最多能够关联的DocExplorer变量的个数* typedef void( (1) )(struc OffieeDoc*, struct DoeExplorer*)I;struct DocExplorer func update; *DocExplorer结构采用的更新函数* *其它的结构字段省略* ;struet OffieeDoc (2) myObs[OBS_MAXNUM; *存储所有与OfficeDoc相关联的DocExplorer结构指针* int index; *与OffieeDoc结构变量相关联的DoeExplorer结构变量的个数* ;void attaeh(struct OfficeDoc*doc, struct DocExplorer*ob) *关联Observer结构ob与OffieeDoe结构doe* int loop=0; if(doc->index>=OBS_MAXNUM||ob==NULL)return; for(loop=0, loop<doc->index; loop++) if(doc->myObs[loop]==ob)return; doc->myObs[doe->index]=ob; doc->index++;void detaeh(struct OfficeDoc*doc, struct DocExplorer*ob) *解除doc结构与ob结构间的关联* int loop; if(ob==NULL)return; for(loop=0;loop<doc->index; loop++) if(doe->myObs[loop]==ob) if(loop<=doc->index-2) doc->myObs[loop]=doc->myObs[ (3) ]; doc->myObs[doc->index-1]=NULL; doc->index——; breack; void updatel(struct OfficeDoe*doe, struct DoeExplorer *ob) *更新ob结构的值,更新代码省略* void update2(struct OffieeDoc*doc,struet DocExplorer *ob) *更新ob结构的值,更新代码省略* void notifyObs(struct OfficeDoc* doc) *当doc结构的值发生变化时,通知与之关联的所有DocExplorer结构变量* int loop; for(loop=0; loop<doc->index; loop++) (doc->myObs[loop)->update( (4) ); void main() struct OfficeDoc doc; *定义一了OfficeDoe变量* struct DocExplorer explorer1, explorer2; *定义两个DocExplorer变量* *初始化与OfficeDoc变量相关的DocExplorer变量个数为0* doc.index=0; explorer1.update=update1; *设置explorer1变量的更新函数* explorer2. update=update2; *设置explorer2变量的更新函数* attach(&doc, &explorer1); *关联explorer1与doc对象* attach(&doc, &explorer2); *关联explorer2与doc对象* *其它代码省略* (5) ; *通知与OfficeDoe相关的所有DoeExploer变量* return;