用Web.PB开发瘦客户机 PB Web应用在线教程
1.Web应用的执行过程
浏览器访问Web服务器,向Web服务器提出请求,服务器给浏览器返回HTML文档。如果HTML页面中嵌入了通过〈A〉元素链接到WebPB的超级链接,或HTML页面中嵌入了通过〈FORM〉元素对WebPB的调用,则Web服务器调用WebPB建立与PowerBuilder服务器应用的连接,向PowerBuilder服务器应用提出请求,PowerBuilder服务器应用处理请求。如有数据库访问的请求,则PowerBuilder服务器应用访问数据库服务器。PowerBuilder服务器应用将处理结果以HTML文档格式返回到Web服务器。Web服务器将PowerBuilder服务器应用的处理结果以HTML文档格式发布给浏览器。
2.应用实例
本人已将利用Web.PB技术开发的学校管理查询系统应用于实际应用中。下面通过简单的例子说明如何利用Web.PB技术实现瘦客户机的Web应用。
2.1. 运行环境
服务器为HP NetServer 5/133 LC,内装Windows NT 4.0、SQL Server 6.5、IIS 40和PowerBuilder 6.0。
2.2. 配置
拷贝WebPB文件,将PBISA60DLL拷入\scripts虚拟目录下,拷贝PBWEBINI文件到WINNT目录下。用记事本编辑\Winnt\System32\Drivers\Etc\目录下的Hosts和Services文件,在Hosts文件中填加一行:202.194.168.88 server—sls,在Services文件中填加一行:pb—sls—server 10099/tcp。
2.3. 创建PowerBuilder服务器应用
2.3.1. 创建服务器应用及应用对象
启动PowerBuilder,点取PowerBar上Application画笔,进入Application工作区。从Application工作区上的PainterBar点取New,创建一个新的PowerBuilder应用sls.pbl。按下“保存”按钮,弹出“Save Application”对话框,定义Application对象“sls”,按下“OK”按钮。弹出“Application”对话框,选择对话框中“NO”按钮,应用sls.pbl创建完成。修改该应用对象的Library属性,在Application工作区中点击PainterBar上的Property工具,弹出“Application”对话框,选择“Libraries”。定义应用的可搜索路径,填加“c:\program Files\Powersoft\PB6\IT\webpb.pbl”,按下“OK”按钮,服务器应用及应用对象创建完毕。
2.3.2. 创建PowerBuilder服务器应用的用户界面
点取PowerBar上Windows画笔,弹出“Select Window”窗口,点取“New”按钮,进入新创建的窗口的工作区。在该窗口上放置两个命令按钮cb—1、cb—2和一个静态文本st—1,在两个命令按钮cb—1、cb—2上的文本分别改为“启动服务器应用”、“关闭服务器应用”。
定义窗口上transport类型实例变量mytransport,用于监听Web.PB的调用请求:
transport mytransport
为cb—1的Clicked事件编程如下:
transport mytransport
mytransport=CREATE transport
mytransport.driver=″winsock″
mytransport.location=″202.194.168.88″
mytransport.application=″10099″
mytransport.Listen()
IF (mytransport.ErrCode<>0) THEN
MessageBox(″错误信息″,″服务器应用不能启动监听~r~n″+″错误号为:″+string(mytransport.ErrCode)+″~r~n″+″错误信息为:″+mytransport.ErrText)
Close(this.getparent())
return
ELSE
St—1.text=″服务器正在运行″
END IF
为cb—2的Clicked事件编程如下:
Close(Parent)
上述工作完成后,选取选单项File下的Save选单项,弹出“Save Window”对话框,定义窗口名为w—sls—server,然后点击“OK”按钮,保存窗口。这个窗口对象将是应用服务器中第一个打开的窗口。为应用对象sls的open事件编写如下程序:
open(w—sls—server)
2.3.3. 创建PowerBuilder服务器应用中的用户对象
进入PowerBuilder工作区,点取PowerBar上User Object画笔,弹出“Select User Object”对话框。选择“New”按钮,弹出“New User Object”对话框。选择Class类Custom用户对象,单击“OK”按钮,进入到用户对象工作区。选取选单项File下的Save选单项,弹出“Save User Object”对话框,输入“u—sls”,然后点击“OK”按钮,保存该用户对象。
为用户对象u—sls的constructor事件编写处理程序:
transaction mytransaction
mytransaction=CREATE transaction
mytransaction.dbms=″odbc″
mytransaction.dbparm=″ConnectString=′DSN=Powersoft Demo DB V6;″&+″UID=dba;PWD=sql′ ″
CONNECT USING mytransaction;
Sqlca.dbms=″odbc″
Sqlca.dbparm=″ConnectString=′DSN=Powersoft Webpb;UID=dba;PWD=sql′″
CONNECT USING sqlca;
IF sqlca.sqlcode<>0 THEN
MessageBox(″Sqlca Error:″+String(sqlca.sqldbcode),
sqlca.SqlErrText)
END IF
为该用户对象的destructor事件编写处理程序:
transaction mytransaction
DISCONNECT USING mytransaction;
DISCONNECT USING SQLCA;
DESTROY mytransaction
这样,当Web.PB调用PowerBuilder服务器应用中用户对象时先建立了和数据库的连接。当调用完成时关闭连接。
在用户对象u—sls的工作区中,选取选单项Declare下的Instance Variables选单项,定义用户对象上的实例变量,输入:
u—html—form my—html—form
u—session my—session
u—transaction my—transaction
integer ii—count
datastore mydatastore
按下“OK”按钮,返回用户对象工作区。
创建用户对象函数在查询时所需的数据窗口对象dw—rsda(假定已创建了Powersoft Demo DB V6库rsda(bh,xm,xb,bm,…)表),进入PowerBuilder工作区。点取PowerBar上Data Window画笔,弹出“Select DataWindow”对话框。点击“New”按钮,弹出“New DataWindow”对话框,在“DataSource”选择框中选择Quick Select,“Presentation Style”选择框中选择Grid。点击“OK”按钮,弹出“Quick Select”对话框,选取表rsda和表中相应的列(bh,xm,xb,bm)。按下“OK”按钮,进入数据窗口工作区,存此数据窗口为“dw—rsda”。
打开已创建好的用户对象u—sls。在用户对象工作区点取选单项Declare下的“User Object Functions”选单项,弹出“Select Function in User Object”对话框。单击“New”按钮,弹出“New Function”对话框。在此对话框中定义函数的参数及返回值。定义函数名为:f—rsda,函数返回值为:string。点击“OK”按钮,进入函数编程工作区,编写程序如下:
string return—html
long ll—dw—row
transaction mytransaction
datastore datastore—rsda
datastore—rsda=CREATE datastore
datastore—rsda.dataobject=″dw—rsda″
datastore—rsda.settransobject(mytransaction)
ll—dw—row=datastore—rsda.retrieve()
IF LL—dw—row>=1 THEN
Return—html=return—html+
datastore—rsda.object.datawindow.data.htmltable
ELSE
Return—html=″没有检索到数据″
END IF
RETURN return—html
这个函数的主要作用是调用数据窗口dw—rsda进行数据查询,将查询结果以HTML的语法格式返回。Web服务器将得到这个返回参数,并发布给调用函数的浏览器客户。
2.4. 用Web.PB Wizard创建访问Web.PB的HTML文件
在PowerBuilder环境下,点取PowerBar上的Web.PB Wizard画笔。输入或浏览选择Web.PB要访问的PowerBuilder服务器应用名后,点击“Next”按钮。在弹出的窗口中选择所需的用户对象u—sls,然后点击“Next”,在弹出的窗口中选择所需的用户对象函数f—rsda。然后点击“Next”,在弹出的窗口中分别作如下的选择:在Select the program interface框中选择“Internet Server API(ISAPI)”,在Enter the URL path for CGI program框中输入“/scripts”,在Select the HTML style框中选择“Anchor”。然后点击“Next”按钮,在弹出的窗口中分别作如下的选择:在位置框中输入“C:\winnt\pbweb.ini”,在Enter Server Alias Section框中输入“Internet”,在Driver框中选择“Winsock”,在Application框中输入“10099”,在Location框中输入“20219416888”。然后点击“Next”按钮,在弹出的窗口中,在HERF text框中输入“人事档案查询”,在Specity location and name of HTML file框中输入“c:\intepub\wwwroot\rsdaweb.htm”。然后点击“Next”按钮,在弹出的窗口中点击“Finish”。到此为止,能够访问PowerBuilder服务器应用中用户对象u—sls上函数f—rsda的HTML页面已经完成。
2.5. 启动服务器应用
在PowerBuilder环境下,按下PowerBar上的Run画笔,应用打开w—sls—server窗口,点取“启动服务器应用”按钮。在静态文本框中显示“服务器正在运行”,使服务器应用能够监听Web.PB的调用。
2.6. 启动浏览器浏览
打开IE4.0,在Location框中输入:http://202.194.168.88/rsdaweb.htm,然后再在“人事档案查询”上单击,则在页面中按照PowerBuilder的Data Window格式显示出rsda表中的记录。