第7章 创建Web服务器程序
本章要点\r7.1 Internet概述\r7.2 Web服务器程序简介\r7.3 ISAPI编程\r7.4 CGI编程\r7.5 ISAPI DLL和CGI之间的相互转化
本章要点
在Internet概述的基础上,对Web服务器程序进行阐述。\r 结合实例说明了ISAPI编程。\r 结合实例说明了CGI编程。
返回本章首页
7.1 Internet概述
7.1.1 术语与标准\r7.1.2 统一资源定位器\r7.1.3 超文本标记语言\r7.1.4 HTTP服务器活动
返回本章首页
7.1.1 术语与标准
与Web服务器应用程序相关的几个重要RFC标准包括:\r?RFC822:ARPA lnternet文本报文标准,描述了报文头标的结构和内容。\r?RFC152l:MIME第一部分,描述封装和传递多种格式和多段Internet信息的方法。\r?RFCl945:超文本传输协议(HTTP协议),描述了多媒体文档的传输协议。
返回本节
7.1.2 统一资源定位器
URL对网络资源的位置提供了一种抽象的识别方法,并用这种方法给资源定位。这里的资源是指Internet上可以被访问的任何对象,包括文件、文档、图像、声音等等,以及与Internet相连的任何形式的数据。URL是一个字符串,它的一般格式如下:\r协议://主机名/脚本文件名/路径信息?查询条件。
返回本节
7.1.3 超文本标记语言
HTML文档通过标记(Tag)和属性(Attribute)对超文本的语义进行描述。HTML虽然本质上并不是编程语言,但它却是在开发HTML文档时必须遵守的一套严格而且简明易懂的语法规则。也就是说,如果一个文档是基于HTML标准的,则可以解释某些标记的含义。
返回本节
7.1.4 HTTP服务器活动
Web浏览器和Web服务器之间通过HTTP协议进行通信。 HTTP请求分为两种类型,一种是GET请求,另一种是POST请求。 Web服务器接收到客户请求之后,将根据配置信息执行一定数量的活动。当Web服务器应用程序完成客户请求之后。必须构造一个HTML页面或其他MIME内容,并传输给客户。
返回本节
7.2 Web服务器程序简介
7.2.1 Web服务器程序的种类\r7.2.2 Web服务器应用程序的逻辑结构\r7.2.3 调试服务器程序
返回本章首页
7.2.1 Web服务器程序的种类
Delphi 6中可以创建的Web服务器程序包括:\r CGI程序、Win-CGI程序和ISAPI(Microsoft Server DLL)、NSAPI(Netscape Server DLL)。
返回本节
7.2.2 Web服务器应用程序的逻辑结
图7-1 Web服务器程序的逻辑结构
返回本节
7.2.3 调试服务器程序
不同类型的Web服务器程序,需要在支持相应的服务器程序的服务器上进行。调试ISAPI或NSAPI类型的程序,则要求在支持这种服务器程序的服务器上进行。可以在服务器中编写一定的代码,作为用户请求直接调用这些服务器程序生成的DLL;而调试CGI和WinCGI类型的服务器程序就比较困难一些,需要在服务器上执行这些程序,并且需要编写代码作为用户请求的信息。
返回本节
7.3 ISAPI编程
7.3.1 返回静态页面 \r7.3.2 返回动态页面 \r7.3.3 接收用户输入的ISAPI DLL\r7.3.4 一个完整的Web数据库应用程序
返回本章首页
7.3.1 返回静态页面
其步骤(具体制作如图7-2~7-10所示):\r1.新建项目\r2.程序框架\r3.创建ActionItem\r4.为ActionItem编写代码\r5.设置服务器\r6.编译ISAPI动态链接库程序\r7.调试ISAPI动态链接库
图7-2 选择Web Server Application
图7-3 选择生成Web服务器程序的类型
图7-4 ISAPI动态链接库的框架
图7-5 Action Editor对话框
图7-6 使用对象监视器为ActionItem设置属性
图7-7 选择存放ISAPI动态链接库的目录
图7-8 设置scripts目录为可执行的
图7-9 设置编译后的文件后缀名为dll
图7-10 浏览器中显示由ISAPI动态链接库生成的静态HTML页面
返回本节
7.3.2 返回动态页面
其具体的步骤如下:\r(1)在projectl项目文件中选择Web Module部件,激活ActionEditor对话框。\r(2)在ActionEditor对话框新添加一个ActionItem。\r(3)将第二个ActionItem命名为Dynamicdll,PathInfo属性设置为DateTime。\r(4)为新建的ActionItem的OnAction事件编写代码。
图7-11 浏览器中显示由ISAPI动态链接库生成的动态HTML页面
返回本节
7.3.3 接收用户输入的ISAPI DLL
1.OnAction事件的参数(主要属性如表7-1)\r2.创建用户输入的HTML页面(创建好的HTML页面如图7-12所示)\r3.添加PageProducer控件(具体含义如表7-2)\r4.为项目文件新建一个ActionItem\r5.调试程序(如图7-13~7-15所示)
表7-1 TwebReques对象的主要属性
图7-12 创建好的用户输入界面
表7-2 MethodType方法的参数值及其含义
图7-13 在用户输入界面中输入数据
图7-14 使用GET方式得到的服务器响应信息
图7-15 使用POST方式得到的服务器响应信息
返回本节
7.3.4 一个完整的Web数据库应用程
1.将数据表作为服务器程序的响应信息(如图7-16所示)\r2.增加查询功能\r(Query控件和QueryTableProducer控件的属性设置如表7-3所示)
图7-16 作为服务器响应信息输出的数据表
表7-3 控件的属性设置
返回本节
7.4 CGI编程
7.4.1 一个时间显示程序\r7.4.2 命令行处理\r7.4.3 CGI环境变量\r7.4.4 CGI数据库编程
返回本章首页
7.4.1 一个时间显示程序
单击“Project”主菜单下的“Remove from Project”选项,将unit单元从项目文件中移走,然后按下Ctrl F12键,选择项目文件,使它在代码编辑器中显示出来。在它的Program保留字后加入一个{¥APPTYPE CONSOLE}编辑器指令,将它转换成控制台应用程序,最后删除大部分项目源代码,如果直接在Delphi环境中运行该程序,则它会打开一个终端窗口,并输出writeln语句的内容,如图7-19所示。
图7-19 在Delphi环境中执行的结果
返回本节
7.4.2 命令行处理
CGI应用程序接收用户输入的方法有两种:\r(1)使用它的命令行参数识别页面(激活应用程序)的URL,而URL通常在应用程序名后面包括附加的参数。\r(2)系统使用一系列环境变量向CGI应用程序进一步传递信息。在Win_CGI中,同样通过INI文件来传递,而没有使用环境变量。
返回本节
7.4.3 CGI环境变量
表7-4 CGI环境变量
返回本节
7.4.4 CGI数据库编程
(1)依次单击“File”→“New”→“Other”选项,然后在Business页面中选择DB Web Application Wizard,如图7-24所示。单击“OK”按钮,则出现选择Web数据库应用程序类型对话框,如图7-25所示。 \r(2)单击“Next”按钮,将出现选择数据表对话框,如图7-26所示。选择好数据表后,单击“Next”按钮,将出现选择要显示的字段对话框,如图7-27所示。
选择完需要显示的字段后,单击“Next”按钮,则出现设置Web页面对话框,如图7-28所示。 \r(3)所有的设置都完成后,则出现确认对话框,如图7-29所示。单击“Finish”按钮,就完成了创建一个Web项目文件的工作。\r 向导为我们生成了WebModule1模块,其中加入了三个控件如图7-30所示。编译并运行该程序,则在浏览器中显示的结果如图7-31所示。
图7-24 利用DB Web Application Wizard向导创建项目文件
图7-25 选择Web数据库应用程序类型
图7-26 选择数据表
图7-27 选择要显示的字段
图7-28 设置Web页面
图7-29 完成创建项目文件
图7-30 向导自动生成的WebModule1模块
图7-31 显示结果
返回本节
7.5 ISAPI DLL和CGI之间的相互转
(1)将编写好并且调试成功的project5.dll创建成一个模板,以便在Win_CGI中使用(如图7-32所示)。 \r(2)关闭project5项目,在主菜单中选择“New”选项,创建一个新的项目,指定为Win_CGI。\r(3)新建项目后,Delphi将自动产生一个缺省的Web Module控件,在加入模板后再将它删除(如图7-33所示)。
返回本章首页
图7-33 加入project5dll模板
图7-32 为模板设置属性
返回本节
本章到此结束,\r谢谢您的光临!
结束放映
返回本章首页
THANK YOU VERY MUCH !