WebBroker是一套VCL工具,可以帮助您建立Web服务器程序。WebBroker与Delphi企业版一同发布,也可单独购买并与Delphi专业版配合使用。WebBroker可用于建立Web服务器,支持ISAPI、NSAPI或CGI协议。ISAPI(Internet Services API)和NSAPI(Netscape Services API)通过TISAPIApplication Web应用程序组件来支持。CGI(Common Gateway Interface)通过TCGIApplication Web应用程序组件来支持。Web服务器Apache是通过新的TApacheApplication组件来支持。对于开发者来说,这意味着使用对大多数Internet服务器可用的通用协议编写Web程序更为容易。
本章我们将特别注重用于建立Web服务器的组件,它们位于Internet属性页上。所有的Web服务器都包含一个TWebModule组件,或者是一个TDataModule和一个TWebDispatcher组件。在讨论这些组件之前,我们先快速浏览一下HTML的基础知识。理解URL(Uniform Resource Locator)请求和HTML页面的基本结构是很有必要的,因为用户会调用Web服务器,而Web服务器要提供Web页面服务。
17.1 HTML基础
Web服务器是URL路径的一部分。WebBroker服务器将基于URL请求的内容和Web服务器的设计返回HTML页面。通常,这些响应都是以HTML文档的形式进行。文档可能会包括到其他Web站点或Web服务的超链接。
本节包含了对URL分解、HTML文档和可替换参数标记的简要综述,这些机制有助于返回动态Web页面。
17.1.1 URL(Uniform Resource Locator)
URL由协议标签、主机名、脚本或服务器程序、路径信息和一些由用户向服务器提供的查询信息构成。参见下面的代码和图17.1,可以看到一个URL的各个部分,该URL指向如图所示的Web服务器。
http://localhost/scripts/iserver.dll/runquery?CustNo=1645
本例中,所用协议为HTTP,即超文本传输协议(Hypertext Transfer Protocol)。HTTP可能是最常用的浏览器协议,但从第16章是可知,并非只有这一种可能(回忆第16章,可以知道有几种TCP/IP协议,像FTP和安全HTTP,都可以用作URL中的协议)。例子中的主机名是LocalHost,它代表客户机。LocalHost也是计算机名或IP地址127.0.0.1(127.0.0.1也称为回送IP地址)。主机名可以是任何IP地址或DNS表中的名字;例如www.microsoft.com、www.softconcepts.com或www.amazon.com。URL的脚本部分是可选
图17.1 URL在Web浏览器的地址栏中输入,也可
能出现在HTML文档中的HREF标记之后
的。对Web服务器而言,即包含服务器程序的文件夹。如果在Windows 2000系统下运行IIS或在PC上运行Peer Web Services,那么默认情况下脚本位于c:/inetpub/scripts目录(见图17.2)。服务管理器将虚拟路径脚本映射到物理上的目录。脚本后紧接着是服务器程序。本例的服务器程序是iserver.dll。例子中的路径信息由run-query表示。最后一部分信息示范了如何向服务器发送查询参数。在例子中,CustNo=1645将发送到服务器程序。
图17.2 Windows 2000 专业版系统中Scripts Properties对话框,
可以看到虚拟的脚本路径被映射到物理路径
注意:本例中所示的请求摘自Delphi中的例子iserver.dpr,该工程位于$(DELPHI)/Demos/WebServ/IIS文件夹中。上文中的请求是对biolife.db表发出的,该文件是Delphi附带的。
您可能已经熟悉协议标签加上主机名的请求类型。但如果您对电子商务有一定程度的了解,例如在amazon.com进行购物,您可能已经看到过另外一些URL请求类型。
注意:最熟悉的URL形如http://www.digitalblasphemy.com,在请求中不存在路径、脚本、查询和特定的页面信息。只涉及到Web服务器上的一个页面。Microsoft公司的Web服务器IIS在默认情况下返回default.asp页面,但可以进行配置以返回任何页面。http://www.softconcepts.com站点返回的页面是index.htm。默认页面是可配置的。管理和配置IIS或其他Web服务器已经超出了本书的范围;但在这方面有很多书籍可供参考。
如果给出了Web站点和路径来运行脚本(例如上文例子中的runquery)但没有找到,则Delphi的WebBroker组件允许指定默认路径。按照惯例,本章中的默认路径是/root。
17.1.2 基本的HTML结构
上一节中的请求是要求WebBroker服务器返回特定页面。如果提供查询信息,则页面内容可以由查询值来控制。可以通过设计,对用户屏蔽Web页面的细节,如CustNo,这是个好主意,把细节嵌入到HTML源文件中即可完成;而用户可通过输入URL直接发送请求。无论如何,基本的HTML页面的结构都是一致的。
提示:HTML(Hypertext Markup Language)中包括标记,标记语言的读者可以认为这些标记是指令。
注意:请记住,页面可能会非常复杂。其中可能包括Active Server Pages和JavaScript或VBScript,而且像FrontPage这样的页面设计工具可能会添加相对数量和种类的修饰。不考虑这些修饰,HTML页面包含了某些一致的元素。
基本的HTML页面由标记组成,它们定义了文档的结构。许多标记是对称的,包括开始标记和结束标记。例如,HTML文档以<html>标记开始,结束标记为</html>(请注意,/用于结束标记)。在文档标记之内是文档体标记<body>和</body>。通常所看到的文档内容是在文档体标记之内定义的。下面列出的代码使用<html>和<body>标记示范了框架性的Web页面,与本书开头的Hello World程序差不多。
<html>
<body>
Welcome to Valhalla Tower Material Defender!
</body>
</html>
上述Web页面是无法得到任何“本年度××Web站点”奖励的,但它确实示范了HTML的简单的和基本的特性。作为练习,打开notepad.exe并输入上面的代码。将文件保存为hello.htm。然后打开Web浏览器。单击File | Open并浏览hello.htm的位置,再单击OK。可以看到,浏览器中显示了文档体标记之间的文本(五、六年前这可是件了不起的事情)。还有许多标记以及使得这些标记易于使用的工具,但你还是可以使用简单的文本编辑器。下面示范了常用的其他标记,可以帮助您入门。
定制文档体
可以向文档体添加额外的特征。使用<bgcolor>标记,可以将页面的背景颜色指定为颜色名或十六进制数字。在文档体标记中,还可以指定背景图像。下面对文档体标记进行了修改,示范了背景颜色和背景图像的使用。
注意:本章中的HTML文档使用Notepad.exe生成,并在Internet Explorer 5.5上进行了测试。无法保证其他的特定Web浏览器或早期版本是否能够对这些超文本标记进行渲染。
<body bgcolor=#00FFFF>
<body background="bubbles.bmp">
背景颜色由颜色名或48比特的RGB(红、绿、蓝各16比特)颜色表示。颜色数字由三个十六进制数组成,各16比特。这里没有设置红色的比特位,而设置了所有的绿色和蓝色比特位。可以用颜色名cyan或blue-green来替换上述的颜色值。Background属性指向一个图形文件,该文件将在文档的背景上绘出。
有许多标记,一些标记有各种属性,特定的浏览器可能支持其中的全部或一部分。由于标记的种类和属性很多,因此需要使用Web页面设计程序如FrontPage或Hot Metal等(该程序与某些版本的Delphi捆绑发行)。
使用水平规则
具有3D效果的线由水平规则标记<hr>表示,该标记指示浏览器在HTML文档体中绘出一条具有浮雕效果的线。
行结束和段落标记
在HTML文档体中文本结束处的<br>将向文本插入一个硬回车。如果在文档体中使用<p> </p>标记,浏览器会在该位置创建段落。例如,
<html>
<body>
This is <p>some</p> text.
</body>
</html>
在Web页面中显示如下:
This is
Some
Text.
可以使用<br>、<p></p>以及<pre></pre>标记格式化文档中的文本。最后一对标记是预格式化标记,它表示文本块在Web页面中的显示方式与其书写方式相同。
使用标题
<title></title>标记可以为页面指定标题。标题标记通常位于<body>标记之前,在<html>开始标记之后。下面的代码示范了标题标记。
<html>
<title>Hello World!<title>
<body>
Welcome to Valhalla Tower Material Defender!
</body>
</html>
上述HTML文档将在浏览器的标题栏显示文本“Hello World!”。
添加超链接
<A HREF="path">页面上显示的文本</A>标记用于向HTML文档体中添加超链接。例如,