用Web.PB开发瘦客户机 PB Web应用在线教程

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 22:39:57
Powersoft的Web.PB技术可以将分布式PowerBuilder的客户端应用分布到Web服务器上,由Web服务器调用PowerBuilder应用。用户可以用WebPB技术实现完全瘦客户机的PB Web应用。

  1.Web应用的执行过程

  浏览器访问Web服务器,向Web服务器提出请求,服务器给浏览器返回HTML文档。如果HTML页面中嵌入了通过〈A〉元素链接到WebPB的超级链接,或HTML页面中嵌入了通过〈FORM〉元素对WebPB的调用,则Web服务器调用WebPB建立与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 40和PowerBuilder 6.0。

  2.2. 配置

  拷贝WebPB文件,将PBISA60DLL拷入\scripts虚拟目录下,拷贝PBWEBINI文件到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框中输入“20219416888”。然后点击“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表中的记录。

Tags:

作者:佚名
分享到: 微信 更多