您可以设置 Net.Data ,使它作为一个公用网关接口 (CGI) 程序来运行,或者与 Lotus Go Webserver,Internet Connection Server (ICAPI),Netscape Server (NSAPI) 和 Microsoft Internet Server (ISAPI) 等 Web 服务器 API 来运行。 调用 Net.Data 的语法依赖于如何配置 Net.Data 。 请参阅 "改进性能" 以获取更多信息。
无论采用什么方法,Net.dat 或由 HTML 锚引用、HTML 表从 Web 浏览器被调用, 或直接作为一个 URL 被调用。在 Web 服务器接收到锚引用、表或者 URL 调用 CGI 应用程序或 API 进程,Net.Data 启动。Web 服务器把 Net.Data 宏文件的名称、Net.Data 宏中 HTML 模块的名称和任何输入变量传送给 Net.Data。
如果您的 Net.Data 宏要花很长时间才完全 (例如,它们要连接远程数据库),则考虑更 改您的脚本超时值。 通常的缺省超时是 5 秒,这对于大部分宏已足够了。 有关的特定说明,请参阅 Web 服务器文档。
下面这些例子给出了作为 CGI 应用程序来调用 Net.Data 的几种不同的方式。 字符串
cgi-bin/db2www
用于表示调用 Net.Data ,这是大部分系统中的缺省表 示。您可以象 Web 服务器文档中描述的那样定义 Web 服务器配置文件。
<A HREF="http://server/cgi-bin/db2www/filename.ext/block/ [?name=val&...]">any text</A>
<FORM METHOD=method ACTION="http://server/cgi-bin/db2www/ filename.ext/block/[?name=val&...]">any text</FORM>
http://server/cgi-bin/db2www/filename.ext/block/[?name=val&...]
ICAPI 和 CGI 使用相同的语法,ICAPI 通过 Web 服务器配置文件 httpd.conf 来管理。 如果您使用 ISAPI 或 NSAPI,则按 "使用 ISAPI" 和 "使用 NSAPI" 中 的说明调用 Net.Data 。
典型的带参数 URL 如下所示:
http://www.ibm.com/cgi-bin/db2www/queryA.mac/input?field1=custno&field2=custname
从一个锚引用发送给 Net.Data 的参数随同 QUERY_STRING 接口一起发送 ,而 HTML 表输入作为标准输入发送。
锚引用通常称为超级链,或简称为 链。使用链,可以指定调用 Net.Data 的 Web 宏和 HTML 模块名。可以在链中放置文本或图形。 当单击链接了文本或 图形时,就调用 Net.Data 宏。下面是一个便用查询的例子,您可以从 Web 页使用链来调用它。(便用查询是一种无输入要求的 SQL 查询。)
<a href="http://www.ibm.com/cgi-bin/db2www/listA.mac/report"> List all monitors</a>
链调用宏:
%DEFINE DATABASE="MNS97"
%FUNCTION(DTW_SQL) myQuery(){
SELECT MODNO, COST, DESCRIP FROM EQPTABLE
WHERE TYPE='MONITOR'
%}
%HTML(report){
@myQuery()
%}
该查询返回一个表格,内含所有监视器的型号、成本和说明。 此例子生成一个缺省报告。 请参阅 "Report 模块" 以获取关于用 REPORT 模块定制报告的信息。
通常,Net.Data 宏的每个模块以 %block_name{ 开始,以 %} 结束。请参阅 Net.Data Reference Guide (Net.Data 参考指南) 以获取语法细节。
HTML 表允许您定制 Net.Data 宏操作,这对大部分应用程序很有用。 本例类似于上面的监视器列表例,但这里允许应用程序用户选择要察看的产品。 您可以从一个链调用这个宏:
<a href="http://www.ibm.com/cgi-bin/db2www/equiplst.mac/input"> Show hardware list</a>
这个链调用的宏是:
%DEFINE DATABASE="MNS97"
%HTML(input)%{
<H1>Hardware Query Form</H1>
<HR>
<FORM METHOD=POST ACTION="cgi-bin/db2www/equiplst.mac/report">
<P>What type of hardware do you want to see?
<MENU>
<LI><INPUT TYPE="RADIO" NAME="hdware" VALUE="MON" checked> Monitors
<LI><INPUT TYPE="RADIO" NAME="hdware" VALUE="PNT"> Pointing devices
<LI><INPUT TYPE="RADIO" NAME="hdware" VALUE="PRT"> Printers
<LI><INPUT TYPE="RADIO" NAME="hdware" VALUE="SCN"> Scanners
</MENU>
<INPUT TYPE="SUBMIT" VALUE="Submit">
</FORM>
%}
%FUNCTION(DTW_SQL) myQuery(){
SELECT MODNO, COST, DESCRIP FROM EQPTABLE
WHERE TYPE='$(hdware)'
%REPORT{
<H3>Here is the list you requested</H3>
%ROW{
<HR>
$(N1): $(V1), $(N2): $(V2)
<P>$(N3): $(V3)
%}
%}
%}
%HTML(report){
@myQuery()
%}
在应用程序用户作了一个选择并且按了提交按钮之后,Web 服务器处理 FORM 所标记的 ACTION 参数,该参数调用 Net.Data 以调用 HTML 报表模块。请参阅 Net.Data 参考指南 以获取在 ROW 模块中使用的变量的细节。