收藏 分享(赏)

第11章 网络和分布式程序设计.ppt

上传人:tkhy51908 文档编号:6902484 上传时间:2019-04-26 格式:PPT 页数:123 大小:1.98MB
下载 相关 举报
第11章 网络和分布式程序设计.ppt_第1页
第1页 / 共123页
第11章 网络和分布式程序设计.ppt_第2页
第2页 / 共123页
第11章 网络和分布式程序设计.ppt_第3页
第3页 / 共123页
第11章 网络和分布式程序设计.ppt_第4页
第4页 / 共123页
第11章 网络和分布式程序设计.ppt_第5页
第5页 / 共123页
点击查看更多>>
资源描述

1、第11章 网络和分布式程序设计,Delphi实用教程,第11章 网络和分布式程序设计,第11章 网络和分布式程序设计,11.1 Winsock编程,Sockets最初是Unix系统中最重要的网络通信接口,后来Microsoft Windows于1992年将其移植到Windows系统中,制定了Windows Sockets规范,称为Winsock,版本为1.0。 Winsock库函数包含于Winsock.dll动态链接库中(Winsock 1.1包含于该文件中,Winsock 2.0则是文件ws2_32.dll) 基于Winsock的网络程序开发结构如下图所示。,第11章 网络和分布式程序设计,

2、11.1 Winsock编程,第11章 网络和分布式程序设计,11.1 Winsock编程,Winsock发布时是针对C和C+的,主要由winsock.h和winsock.dll组成。使用Delphi进行开发时,相应文件为winsock.pas。 Delphi 7组件面板的Internet选项卡上:选择主菜单下的ComponentInstall Packages,选择Delphi 7安装目录的Bin子目录下的dclsokets70.bpl文件,添加。被添加的ServerSocket和ClientSocket组件也位于Internet选项卡上,这样 Delphi 6或以前版本下开发的Socket

3、应用程序在Delphi 7中才能正确运行,TcpClient,TcpServer,UdpSocket,ClientSocket,ServerSocket,第11章 网络和分布式程序设计,11.1 Winsock编程,TcpServer的父类是TCustomTcpServer,该组件封装了Socket编程的服务器端操作。它的主要属性有两个:,第11章 网络和分布式程序设计,LocalHost指出服务器地址(或名字),LocalPort指出服务器端口。 TcpClient组件则封装了Socket编程的客户端操作,它也有两个主要属性: RemoteHost指出所连接服务器的地址(或名字) 和Remo

4、tePort,指出所连接服务器端口,第11章 网络和分布式程序设计,11.1 Winsock编程,【例】本例程序的功能是:服务器在端口5000上接收客户连接,连接建立后,对每个客户都以一个单独的线程执行服务器与客户机的数据传送。(1)服务器端设计 服务器界面如图11.3所示,包括一个Label、一个Memo(其Name属性设置为MemReceive)和一个TcpServer(Name属性cpServer1,LocalHost:127.0.0.1,LocalPort:5000, Active:True)组件。,服务器界面,第11章 网络和分布式程序设计,11.1 Winsock编程,服务器端定义

5、线程对象TClientThread,当有客户连接时,生成一个TClientThread对象来处理,处理的程序在TcpServer1的OnAccept事件代码中,服务器的单元文件内容如下: unit ServerUnit;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComCtrls, Sockets, StdCtrls;typeTForm1 = class(TForm)MemReceive: TMemo;Label1: TLabel;TcpServe

6、r1: TTcpServer;,第11章 网络和分布式程序设计,11.1 Winsock编程,procedure TcpServer1Accept(Sender: TObject;ClientSocket: TCustomIpClient);end;TClientThread = class(TThread) / 线程类声明privateListBuf:TStringList; / 保存客户发送的消息TargetList:TStrings; procedure synchAddData; / 添加消息constructor Create(CreateSuspended:boolean);/ 构

7、造器procedure Execute;override;procedure Terminate; / 终止线程end;varForm1: TForm1;implementation$R *.dfm,第11章 网络和分布式程序设计,11.1 Winsock编程,constructor TClientDataThread.Create(CreateSuspended:Boolean);/ 线程构造器begininherited Create(CreateSuspended);FreeOnTerminate:=true;ListBuf:=TStringList.Create;end;procedu

8、re TClientDataThread.Terminate; / 终止线程beginListBuf.Free;inherited;end;,第11章 网络和分布式程序设计,11.1 Winsock编程,procedure TClientDataThread.Execute; / 执行线程beginSynchronize(synchAddData); end;procedure TClientDataThread.synchAddData; / 添加新字符串beginTargetList.AddStrings(ListBuf);end;,第11章 网络和分布式程序设计,11.1 Winsock

9、编程,/ 服务器接受连接的处理程序procedure TForm1.TcpServer1Accept(Sender: TObject;ClientSocket: TCustomIpClient);vars:string;DataThread:TClientDataThread;beginDataThread:=TClientDataThread.Create(True);/ 生成线程对象DataThread.TargetList:=MemReceive.Lines; / 取得客户端输入的内容DataThread.ListBuf.Add(*接受连接*);/ 从缓冲区取得字符串DataThread

10、.ListBuf.Add(对方主机: +ClientSocket.LookupHostName(ClientSocket.RemoteHost)+(+ClientSocket.RemoteHost+),发来消息:);s:=ClientSocket.Receiveln;,第11章 网络和分布式程序设计,11.1 Winsock编程,while s dobeginDataThread.ListBuf.Add(s);s:=ClientSocket.Receiveln;end;DataThread.ListBuf.Add(=消息结束=);DataThread.Resume;end;end.选择主菜单下

11、的ProjectBuild Server命令项,生成Server.exe。,第11章 网络和分布式程序设计,11.1 Winsock编程,(2)客户端设计 客户端界面如图所示,包括一个Label、一个Memo(Name属性设置为MemSend)、一个BitBtn(Caption属性为发送)和一个TcpClient(Name属性TcpClient1, RemoteHost:127.0.0.1,RemotePort:5000,Active:True)组件。,客户界面,第11章 网络和分布式程序设计,11.1 Winsock编程,在Memo中输入文字,单击发送,即可将Memo中的字符串传送给服务器。

12、单击发送按钮后,客户将尝试与服务器连接,连接成功后,通过TcpClient的Sendln方法发送字符串到服务器。客户端对应的单元文件内容如下: unit ClientUnit;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Sockets, StdCtrls, Buttons;typeTForm1 = class(TForm)Label1: TLabel;MemSend: TMemo;BitBtn1: TBitBtn;TcpClient1: TTcpC

13、lient;procedure BitBtn1Click(Sender: TObject);end;,第11章 网络和分布式程序设计,11.1 Winsock编程,varForm1: TForm1;implementation$R *.dfm procedure TForm1.BitBtn1Click(Sender: TObject); / 向服务器发送消息vari:integer;begintry / 尝试与服务器连接if TcpClient1.connect then / 连接成功for i:=0 to MemSend.Lines.Count-1 doTcpClient1.Sendln(M

14、emSend.Linesi); / 发送消息finallyTcpClient1.Disconnect; / 断开与服务器的连接end;end;end. 选择主菜单下的ProjectBuild Client命令项,生成Client.exe。,第11章 网络和分布式程序设计,11.1 Winsock编程,(3)执行程序 先双击Server.exe图标,启动服务器,使其在TCP的5000端口侦听;再启动客户程序执行。可同时启动多个客户程序。图就是启动了3个客户程序并发送消息之后服务器界面上的显示。,运行结果,第11章 网络和分布式程序设计,11.2 Web应用开发,Web应用包括Web服务器和Web

15、客户两部分,Web客户就是通常所说的Web浏览器,浏览器与Web服务器主要以HTTP协议通信,其模型如图所示,第11章 网络和分布式程序设计,11.2 Web应用开发,使用Web开发技术可以轻松地建立Web服务器扩展来提供自定义的、动态的网页,并能够访问各种数据源。Web开发技术,主要有: Web Broker,WebSnap是Delphi 6提供的技术,IntraWeb是Delphi 7从AtoZed软件公司引入的技术, WebSnap WebSnap可看作Web Broker的超集,它提供了更多的组件和属性,使用Web Snap方式开发的应用程序可以包括Web Broker的组件,反之则不

16、可。 IntraWeb。 IntraWeb类组件可使用户以窗体工具的形式使用IntraWeb技术来设计Web Broker、WebSnap以及Web服务器应用程序。,第11章 网络和分布式程序设计,11.2.1 Web Broker,Web Broker是一套VCL工具,用于建立Web服务器应用程序。 使用Web Broker技术可以建立5种类型的Web服务器应用程序: 微软服务器动态库(ISAPI) Netscape服务器动态库(NSAPI) Apache服务器动态库 控制台CGI应用程序 Windows CGI应用程序,五种Web服务器应用程序组件,第11章 网络和分布式程序设计,11.2

17、.1 Web Broker,Web Broker应用程序框架 Web Broker使用模块(Module,而不是Form)进行设计,有两种类型的模块: Web模块(TWebModule) TWebModule是从TDataModule继承下来的,其中包含了 处理HTTP请求和响应的所有逻辑。 TWebModule是一个 容器,在它上面只能放置非可视的组件,它还是Web服 务器应用程序的调度中心 。 数据模块(TDataModule) TDataModule则仅是一个容器,在它上面也只能放置非 可视的组件,这种模块主要用于应用程序间的组件共享。,第11章 网络和分布式程序设计,11.2.1 We

18、b Broker,Web Broker应用程序从Web服务器检索到HTTP请求后,由Web模块调度器对HTTP请求进行分析,即通过Dispatcher分发http请求,通过触发动作而使用PageProducer生成响应页面。这就是Web Broker应用程序的总体框架,第11章 网络和分布式程序设计,11.2.1 Web Broker,2. 主要组件 Web Broker套件包括TWebModule组件、TDataModule组件以 及位于组件面板的Internet选项卡上的以下组件: 在模块中可放置多种非可视组件,主要包括数据库访问组件、Internet选项卡上的组件、InternetExp

19、ress组件以及Web Service组件等。,TWebDispatcher,TPageProducer,TDataSetPageProducer,TDataSetTableProducer,TQueryTableProducer,第11章 网络和分布式程序设计,11.2.1 Web Broker,TWebDispatcher组件做一些介绍 使用Web Server Application向导创建一个新的Web应用时, 系统将自动创建一个TWebModule对象,并在其中自动添加 一个TWebDispatcher组件可以手工向已有的TDataModule组件添加WebDispatcher组件

20、TWebDispatcher组件了包含一个WebActionItem(动作项) 的集合,这个WebActionItem可认为是一个Web服务器入口。Delphi有一个专门的动作编辑器来创建和管理 ebActionItem(动作项)。有3种方法打开动作编辑器: 双击Web模块;鼠标右击Web模块,在所弹出菜单上选择ActionEditor; 在Object Inspector中,单击Action属性栏的省略号按钮。,第11章 网络和分布式程序设计,11.2.1 Web Broker,打开动作编辑器后,即可加入新的动作项。PathInfo属性 为所创建的Web应用定义路径信息,还可以指定动作项的响

21、 应类型(MethodType),类型有:mtAny类型;必须对任何请求进行响应,默认类型mtGet类型:用于获取与URL关联的信息; mtPut类型:用于替换与URL关联的信息的内容 mtPost类型:用于将请求的内容发送到服务器 mtHead类型:只返回请求的头信息 当Web Broker的Web应用程序从HTTP服务器接收到路径和 查询信息时,首先从动作项列表中查找匹配的路径和 MethodType。如果没有匹配的动作,则使用默认动作。确定 匹配动作后,就调用OnAction事件。OnAction事件处理程序 的原型为:procedure WebModule1WebActionItem1

22、Action(Sender:TObject;Request: TWebRequest; Response: TWebResponse; var Handled:Boolean);,第11章 网络和分布式程序设计,11.2.1 Web Broker,【例】在Delphi 7中用Web Broker技术创建一个显示当前日期和 时间的网页,在浏览器中显示该网页。(1)创建一个Web Service Application项目;方法是:使用主菜单上的FileNew Others命令,打开New Items对话框, 选择New选项页内的Web Server Application图标,如图所示, 将打开

23、一个向导,在其中选择一种Web服务器扩展的类型,如 图所示。可根据需要进行选择,如使用IIS或PWS,一般选择“ISAPI/NSAPI Dynamic Link Library”。本例也选择该项。选择 了Web应用程序的类型后,Delphi就基于TWebModule新建一 个项目,新项目是一个DLL,它的主单元声明了一个 TWebModule。,第11章 网络和分布式程序设计,11.2.1 Web Broker,创建Web应用界面图:,选择服务器扩展类型,创建Web应用界面图,第11章 网络和分布式程序设计,11.2.1 Web Broker,(2)打开新建Web模块的动作编辑器,单击动作编辑

24、器的按钮,添加一个新的动作项WebActionItem1,在Object Inspector中,将该动作项的PathInfo属性置为“/DT”,如图所示。,第11章 网络和分布式程序设计,11.2.1 Web Broker,(3)编写事件代码。在Object Inspector中Actions的OnAction事件上右击,输入该事件处理的程序代码,本程序将页面的 HTML源代码用Response对象送到浏览器显示,程序中利用Delphi的运行期函数DateTimeToStr()取得当前日期时间串。 程序代码如下: unit Unit1;interfaceusesSysUtils, Classe

25、s, HTTPApp;typeTWebModule1 = class(TWebModule)procedure WebModule1WebActionItem1Action(Sender: TObject;Request: TWebRequest; Response: TWebResponse; var Handled:Boolean);varWebModule1: TWebModule1;implementation$R *.dfm,第11章 网络和分布式程序设计,11.2.1 Web Broker,procedure TWebModule1.WebModule1WebActionItem1

26、Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled:Boolean);varPage:TStringList;beginPage:=TStringList.Create;trywith Page dobeginAdd();Add();Add(由DELPHI创建的网页);Add();Add();Add(由DELPHI创建的网页);,第11章 网络和分布式程序设计,11.2.1 Web Broker,Add(当前时间是: );Add(DateTimeToStr(Now);Add();Ad

27、d();end;response.Content:=Page.Text;finallyPage.Free;end;Handled:=true; end; end.,第11章 网络和分布式程序设计,11.2.1 Web Broker,(4)保存单元文件为Unit1.pas,项目文件为DateTm.dpr,编译此项目为DateTm.dll。(5)在IIS中创建虚拟目录DelphiTest,其路径指向DateTm.dll所在的目录。(6)在浏览器地址栏键入http:/localhost/DelphiTest/DateTm.dll/DT,即可浏览所创 建的页面,如图所示。,浏览用Web Broker创

28、建的网页,第11章 网络和分布式程序设计,11.2.1 Web Broker,3. 页面模板和TPageProducer组件 HTML页面模板,就是由HTML语言中的标记(Tag)和HTML 透明标记组成的文件。HTML透明标记的格式为:Delphi预定义透明标记 TPageProducer组件能够基于一个事先设计好的HTML页面模 板,分析客户输入,自动生成HTML页面。,对大小写敏感,第11章 网络和分布式程序设计,11.2.1 Web Broker,页面模板有两种保存方式:保存为页面文件形式(.html或.htm)保存为TStrings对象(直接编辑)使用组件TPageProducer生

29、成页面时,用TPageProducer的HTMLFile属性和HTMLDoc属性用于指定页面模板,它们分别对应文件方式的模板和TStrings对象方式的模板。这两者是互斥的。 TPageProducer的OnHTMLTag事件处理程序,在其中对透明标记进行替换。TPageProducer提供了多种替换方式,常用的有以下两种:调用Content函数,逐一替换HTML模板的透明标记,返回一个仅 含HTML标记的HTML文档。 调用ContentFromString函数,将页面模板作为参数传递给该函数, 返回一个仅含HTML标记的HTML文档。 当调用Content或ContentFromStrin

30、g函数进行页面转换时,若遇到 HTML透 明标记,就将触发onHTMLTag事件。,第11章 网络和分布式程序设计,11.2.1 Web Broker,【例】使用页面模板和TPageProducer组件实现动态HTML页面。首先通过一个页面接收用户输入的信息,创建一个Web应用程序处理用户提交的信息,该程序通过替换HTML模板生成返回给用户的HTML页面。以下是详细步骤:(1)编写以下HTML文件,将该文件保存为home.html。输入资料请输入您的个人资料姓名:地址:电话:电子邮件:,第11章 网络和分布式程序设计,11.2.1 Web Broker,(2)编写一个HTML页面模板文件inf

31、o.html,内容如下:会员资料欢迎成为本会会员您的资料是:姓名:地址:电话:电子邮件:(3)使用向导创建一个“ISAPI/NSAPI Dynamic Link Library”类型的 Web Service Application项目。,第11章 网络和分布式程序设计,11.2.1 Web Broker,(4)向WebModule1中加入一个TProducer组件,如图所示。设置Producer1组件的HTMLFile属性为模板文件info.html。,第11章 网络和分布式程序设计,11.2.1 Web Broker,( 5)打开WebModual1的动作编辑器,添加一个新的动作项WebA

32、ctionItem1,在Object Inspector中将该动作项的 PathInfo属性置为“/Modual”,MethodType属性设为 mtGet,Producer属性设为PageProducer1,如图所示。,第11章 网络和分布式程序设计,11.2.1 Web Broker,(7)编写TPageProducer组件的onHTMLTag事件处理代码,该事件处理程序首先根据TWebRequest的MethodType属性,判断 客户请求类型(Get或Post),分别用ContentFields和 QueryFields获得URL中传来的参数值,将其保存到Data这个 TStrings

33、对象,最后将Data对象中串赋给ReplaceText,即用 用户输入的信息替换模板中的透明标记。(8)将转换后得到的HTML页面传回浏览器。这通过动作项result的onAction事件处理程序实现,该程序将Producer1生成的页 面通过TWebResponse对象送回浏览器。该应用程序的单元文件内容如下:,第11章 网络和分布式程序设计,11.2.1 Web Broker,unit Unit1;interfaceusesSysUtils, Classes, HTTPApp, HTTPProd;typeTWebModule1 = class(TWebModule)PageProducer

34、1: TPageProducer;procedure PageProducer1HTMLTag(Sender: TObject; Tag: TTag;const TagString: String; TagParams: TStrings;var ReplaceText: String);procedure WebModule1resultAction(Sender: TObject; Request: TWebRequest;Response: TWebResponse; var Handled: Boolean);end;varWebModule1: TWebModule1;impleme

35、ntation$R *.dfm,第11章 网络和分布式程序设计,11.2.1 Web Broker,procedure TWebModule1.PageProducer1HTMLTag(Sender: TObject; Tag: TTag;const TagString: String; TagParams: TStrings; var ReplaceText: String); vardata:TStrings;begindata:=nil; with Request do begincase MethodType of / 根据MethodType进行处理mtPost: data:=Con

36、tentFields;mtGet: data:=QueryFields;end;end;ReplaceText:=data.ValuesTagString; end;,第11章 网络和分布式程序设计,11.2.1 Web Broker,procedure TWebModule1.WebModule1resultAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled:Boolean);beginResponse.Content:=PageProducer1.Content;end;end.

37、,第11章 网络和分布式程序设计,11.2.1 Web Broker,(9)保存单元文件为Unit1.pas,保存项目文件为Project1.dpr。编译生成Project1.dll。(10)在IIS缺省Web站点下创建虚拟目录WebBrokerTest,其指向的路径为home.html、Project1.dll及info.html所在的目录。(11)启动IE,在地址栏中输入:http:/localhost/WebBrokerTest/home.html,浏览器将显示指 定的网页(home.html),在其中输入信息(如图所示), 单击提交按钮,服务器处理后将返回如图所示的页面。,第11章 网

38、络和分布式程序设计,11.2.1 Web Broker,资料输入页面,服务器处理后返回的页面,第11章 网络和分布式程序设计,11.2.1 Web Broker,4. 访问数据库 Web应用程序对数据库的访问通过TDataSetPageProducer、TDataSetTableProducer组件或TQueryTableProducer组件实现 TDataSetPageProducer的作用有两个,与数据库连接,这通过设置该组件的DataSet属性实现作为页面生成器,能自动生成一个HTML页面 TDataSetTableProducer组件的作用与TDataSetPageProducer相

39、同,也是作为与数据库连接的桥梁和页面生成器。不同的是它用于返回多行数据,返回的行数由该组件的MaxRows属性决定,返回的数据以一个表格显示 TQueryTableProducer组件与TDataSetTableProducer组件的用法基本相同,主要区别在于TQueryTableProducer是建立在查询的基础上,第11章 网络和分布式程序设计,11.2.1 Web Broker,【例】本例说明使用TDataSetTableProducer组件使Web应用程序访问数据库。使用Delphi所带的DBDEMOS数据库,以网页的形式显示orders.db表中的字段值。 (1) 使用向导新建一个“

40、ISAPI/NSAPI Dynamic Link Library”类型 的Web Service Application项目。 (2) 向Web模块加入一个TTable组件,其Name属性使用缺省值Table1,再设置它的DatabaseName属性值为DBDEMOS,TableName值为ordesr.db。,第11章 网络和分布式程序设计,11.2.1 Web Broker,(3) 向Web模块加入一个TDataSetTableProducer组件DataSetTableProducer1,设置它的Caption属性为“客户订单信息”,DataSet属性为Table1。该程序的Web模块如

41、图所示。(4) 右击DataSetTableProducer1组件,选择快捷菜单的Response Editor菜单项,打开列编辑器,如下图所示。设置Border为1,Cellpadding和Cellspacing均为2。单击 按钮添加列,在ObjectInspector的FieldName中选择CustomNo,通过列的Title子属性Caption设置其显示标题为“客户号”(如下图),按此方法依次添加OrderNo、SaleDate、AmountPaid和ShipDate字段,显示标题分别为订单号、预定日期、金额、到货日期。,第11章 网络和分布式程序设计,11.2.1 Web Broke

42、r,列编辑器,设置字段的显示标题,第11章 网络和分布式程序设计,11.2.1 Web Broker,(5) 在WebModual1中双击,打开动作项编辑器,添加一个新动作项WebActionItem1,设置其PathInfo为/GetOrder,Producer为DataSetTableProducer1。(6) 保存单元文件为Unit1.pas,保存项目文件为Project1.dpr,编译生成Project1.dll。(7) 在IIS缺省Web站点下创建虚拟目录WebDB,其指向的路径为Project1.dll所在的目录。启动IE,在地址栏中输入:http:/localhost/WebDB

43、/GetOrder,浏览器将显示如图所示页面。,第11章 网络和分布式程序设计,11.2.1 Web Broker,运行结果图,第11章 网络和分布式程序设计,11.2.2 WebSnap,主要特点是: 支持多模块(Multi-Module),可以使用多个Web module将应用分成单元,从而支持多人合作开发。 允许使用多个Dispatchers以处理不同类型的请求。Dispatcher能够自动响应大量请求,简化了Web应用开发。 支持会话管理(Session) 支持服务器端脚本(JavaScript和VBScript),以便划分业务逻辑与HTML生成逻辑,允许直接在组件中加入脚本程序。 支

44、持所有的WebBroker页面生成器,还提供一些已经设计好的服务组件,如处理图形、上传档案、登录和注销等,供设计者直接使用。 可以自动从Page Dispatcher中取得或从服务器端脚本中定位页面。 提供可视化的设计页面,在设计时即可查看结果,所有构件均支持预览,能预览Web应用程序的输出结果,也能预览由Web应用程序所产生的HTML程序代码。 提供了Web Application Debugger,可方便地进行集成调试。 支持XML/XSL,这是通过XSLPageProducer组件实现的。,第11章 网络和分布式程序设计,11.2.2 WebSnap,WebSnap应用程序框架 WebS

45、nap与WebBroker的核心框架基本相同,都是创建ISAPI/NSAPI或CGI应用,通过Module+Dispatcher分发http请求,使用PageProducer生成响应页面。 WebSnap中 4种模块: Application PageModule Application DataModule Generic PageModule Generic DataModule 页面模块包含了网页生成器,用于建立网页;而数据模块仅作为一个容器,用来放置用于共享的组件。 一个WebSnap应用程序中必须至少包含一个Application Module,它是应用程序的控制中心,该模块中必须包

46、含一个TWebAppComponents组件,这个组件是WebSnap的调度中心。,第11章 网络和分布式程序设计,11.2.2 WebSnap,2. 主要组件 页面生成器组件 除了继续支持Web Borker中的4个页面生成器组件外还提供了两个 新的页面生成器组件: TXSLPageProducer组件用于处理XSL网页 AdaperPageProducer组件提供可视化的方式设计网页,可以编辑脚本程序。 Dispatcher组件 TPageDispatcher组件用于分发网页请求 TAdapterDispatcher用于分发Action请求 Adapers组件 提供可视化的设计网页和脚本程

47、序的环境。 Sessions组件 用于会话管理 此外还有ValueList、Wrapper和Services组件,第11章 网络和分布式程序设计,11.2.2 WebSnap,【例】本例创建一个WebSnap应用程序。创建一个WebSnap应用程序可以使用WebSnap应用程序向导。使用主菜单上的FileNewOthers命令,将打开New Items 对话框,双击WebSnap页内的WebSnap Application图标,如图所示,第11章 网络和分布式程序设计,11.2.2 WebSnap,(1)打开向导,将出现如图所示的“New WebSnap Application” 对话框,在其

48、中选择一种Web服务器扩展的类型,并输入所 创建的页面文件名(例如本例取名WebSnapExmp),并命 名服务器(如WSrv),单击“Page Option”按钮,将出现 如图所示的对话框,选择Type为AdapterPageProducer,并 在Title框中输入“WebSnap应用示例”(这将是所生成页面的 标题)。,WebSnap应用程序向导,页面选项对话框,第11章 网络和分布式程序设计,11.2.2 WebSnap,(2)单击OK按钮,Delphi 7将创建一个应用程序框架,包括一个 标准Delphi窗体(默认名字为Form1,用于监测Web服务器 运行状态)和一个Web应用模块

49、(名字与页面文件名相同, 本例为WebSnamExmp),在该模块中已经加入了响应Web 页面请求的组件,共有5个:AdapterPageProducer、 WebAppComponent、ApplicationAdapter、PageDispatcher 和AdapterDispatcher。 (3)选择主菜单下的FileSave all,保存Unit1单元(这是系统 生成的单元,使用它的缺省名),保存Unit2单元为 WebSnapEx.pas。(4)向WebSnapExmp模块中加入一个BDE选项页中的TTable组 件Table1,一个WebSnap选项页中的TDataSetAdapter组件 DataSetAdapter 1和一个BDE选项页中的TSession组件 Session1,如下图所示。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 网络与通信

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报