王朝网络
分享
 
 
 

用VB实现WEB交互式应用

王朝厨房·作者佚名  2007-01-04
宽屏版  字体: |||超大  

摘要 本文介绍了Internet应用程序及相关概念,并通过一个示例,介绍了使用VB创建IIS应用程序来构建交互式WEB应用的方法。

关键字 Internet应用程序,IIS,HTML

Microsoft Visual Basic 6.0增强了创建Internet应用程序的功能。Internet应用程序是一种编译好的交互式应用程序,通过Internet或intranet能够访问这种应用程序。在VB中有两种类型的Internet应用程序:基于服务器的IIS应用程序和基于客户的DHTML应用程序。基于服务器的IIS应用程序驻留在WEB服务器上,应用程序使用HTTP Internet协议接受从客户端(如WEB浏览器)来的请求,处理相关的代码,然后向浏览器返回数据。IIS应用程序是一个VB应用程序,它在一个动态的、基于浏览器的应用程序中使用HTML和已编译VB代码的组合。对开发者来说,一个IIS应用程序是由一些被称为WebClass的特殊类型对象组成,而WebClass包含一系列称为Webitems的资源。WebClass是一个驻留在WEB服务器上并响应浏览器输入的VB部件,它作为应用程序的中央功能单元,处理来自浏览器的数据并向用户发送响应信息。

本文通过示例一个WEB应用--电话号码查询,说明创建IIS应用程序的一般过程。运行此程序需要IIS3.0、IIS4.0 或 PWS。用户在查询界面输入要查询部门相应的汉语拼音缩写或名称缩写,如为空,则提示输入部门名称;系统以表格形式返回模糊查询结果。

一、创建工程及模板

电话查询界面模板文件的代码如下:

<html>

<body bgcolor="#F6FAFF">

<p align="center"><font size="6" face="幼圆"><strong>办公电话号码查询</strong></font></p>

<p><font size="4" face="黑体">查询说明:</font>

您可以直接输入各部门的全名或主要名称,也可输入各部门汉语拼音首字符缩写串;查询结果将模糊匹配您所输入的关键字.如输入’网络中心’或’wlzx’.</p>

<hr size="1" color="#008080">

<form method="POST">

<wc@error></wc@error>

<p align="center"><font size="4">请输入要查询的部门:</font></p>

<wc@FullName></wc@FullName>

<p align="center">

<font size="4">

<input type="submit" name="submit" value="发送" style="font-size: 15pt; font-family: 幼圆"> <input type="reset" name="reset" value="重设" style="font-family: 幼圆; font-size: 15pt"></font></p>

</form>

<hr size="1" color="#008080">

</body>

</html>

可以看到,界面文件除了基本的HTML元素外,没有用于数据输入的元素,但多了"wc@error"等标记。Wc@标记是模板中使用的替换指示符。替换指示符是标记要用特定内容替换的位置,以备在用户请求时执行文本替换过程。这些标记具有标记前缀和标记名,标记前缀用于指示WebClass必须进行一个替换操作。通过设置每一个模板的TagPrefix属性定义标记前缀。Wc@是VB的缺省标记前缀。标记名可以识别替换的区域。执行文本替换是在一个WebClass模板文件中扫描特殊的指示符标记,然后用自定义的内容替换指示符或它们的内容。当WebClass在一个事件过程中响应WriteTemplate方法时,它自动处理这些指示符。替换完成后,响应用户一个替换过的HTML文件。

对含有标记前缀文件的处理顺序是:VB处理用户的代码,并从应用程序的一个事件处理程序中调用WriteTemplate方法。WebClass根据ProcessTag事件的代码处理并替换文件中所有前缀标记,然后将模板文件写到Response对象,WriteTemplate方法再发送模板文件到浏览器。

启动VB6,在新建工程中选择IIS应用程序。首先看到WebClass设计器,包含"HTML模板WebItems"和"自定义WebItems"。右击WebClass设计器的"HTML模板WebItems",选择"添加HTML模板",导入上述界面模板文件,然后将其命名为Phone_Search。

二、实现代码

双击WebClass设计器右边窗格的Form1标记,为表单提交动作定义一个自定义事件。该事件主要任务是接收用户输入的要查询数据,并把查询数据提交到数据库。具体代码见清单。

IIS应用程序应该指定用户首次访问时显示的内容,因此,在WebClass_Start事件中将WebClass的NextItem属性设置为Phone_Search,然后在Phone_Search_Respond事件中用模板的WriteTemplate方法将页面发送到客户端浏览器。在将页面发送到浏览器时,系统会遇到模板中的wc@标记,此时它会自动调用Phone_Search的ProcessTag事件,并把标记名字作为参数传递给事件处理过程Phone_Search_Respond,在这个过程中返回插入文档内定制标记所在位置的HTML代码。当在表单中输入数据并提交表单时,则执行Phone_Search_Form1过程,它接收表单的数据,如没有错误则调用自定义事件处理过程Searphone,该过程提交输入数据到数据源,执行查询并以表格形式返回结果集。

代码清单:

Option Explicit

Option Compare Text

’声明全局量

Dim FullName As String

Dim strError As String

’处理标记元素过程

Private Sub phone_search_ProcessTag(ByVal TagName As String, TagContents As String, SendTags As Boolean)

Select Case LCase(TagName)

’错误信息

Case "wc@error"

If strError <> "" Then

TagContents = "<hr><font color=""red"">"

TagContents = TagContents & "请输入要查询的部门!" & _

strError & "

<hr></font>

<hr>"

End If

’查询的部门

Case "wc@FullName"

TagContents = "<center><input type=""text"" value=""" & FullName & """

name=""FullName""></center>"

End Select

End Sub

’响应用户请求过程

Private Sub phone_search_Respond()

’响应用户请求,输出页面

phone_search.WriteTemplate

End Sub

Private Sub phone_search_Form1()

strError = ""

’获取表单值

FullName = Request("FullName")

’测试是否为空

If FullName = "" Then strError = strError & "<i>部门不能为空!</i>"

’如表单输入值为空,则提示输入数据,否则调用查询过程

If strError <> "" Then

Set NextItem = phone_search

Else

SearPhone

End If

End Sub

Private Sub WebClass_Start()

Set NextItem = phone_search

End Sub

Public Sub SearPhone()

Dim Mysql As String

Dim Dbconn As New ADODB.Connection

Dim mrd As New ADODB.Recordset

’打开数据源

Dbconn.Open "telphone"

’构造查询SQL语句

Mysql = "select * from phone where depart like ’%" & FullName & "%’" & _

" or depart_p like ’%" & FullName & "%’"

’执行SQL查询

Set mrd = Dbconn.Execute(Mysql)

’输出查询结果

With Response

.Write "<html>"

.Write "<body>"

.Write "<title>Search Results</title>"

.Write "<h1><font face=""Arial"">查询结果如下:</font></h1>"

If mrd.BOF And mrd.EOF Then ’没有符合条件的值

.Write "<center>对不起,没有相应的部门!</center>"

Else ’有符合条件的值,以表格形式输出

.Write "<center>"

.Write "<table border=""5"" wide=""50%"">"

.Write "<tr><td>部 门</td><td>电 话</td>"

Do While Not mrd.EOF

.Write "<tr><td>"

.Write mrd("depart")

.Write "</td><td>"

.Write mrd("phone_no")

.Write "</td>

"

mrd.MoveNext

Loop

End If

.Write "</table>"

.Write "<h1><font face=""Arial"">谢谢使用</font></h1>"

.Write "</body>"

.Write "</html>"

End With

’释放变量,关闭数据库连接

Set mrd=Nothing

Dbconn.close

End Sub

本例程使用了ACCESS数据库表Phone,DSN名为Telphone,表结构及部分示例数据如下。

Phone表结构:

字段名 类型 长度 说明

PhoneID 自动编号 长整形 主键

Depart 文本 20

Depart_p 文本 10

Phone_no 文本 7

示例数据:

1 网管中心 Wgzx 2419039

2 网管办 Wgb 2419187

3 计算机系办公室 Jsjxb 2419237

4 计算机系主任办公室 Jsjxb 2419236

5 计算机系实验室 Jsjxsys 2419234

如用户输入"网管"或"wg"后,程序响应其请求。

三、部署IIS应用程序

一个IIS应用程序必须作为一个进程内部件或一个DLL文件被创建。象编译其它VB工程一样,选择生成DLL文件。IIS应用程序编译时产生以下文件:一个VB用于运行工程的DLL文件;一个在浏览器中宿主应用程序并产生它的运行时部件的ASP文件;一个在编译和连接工程时由连接器产生的EXP文件;一个包含工程的窗口布局信息的VBW文件。然后使用VB的打包和展开向导来部署IIS应用程序。必须部署的应用程序包括DLL文件,与工程相关的HTML页面及被HTML页面引用的文件。

四、小结

用VB构造服务器端的IIS应用程序比其它的WEB应用开发具有减少每个用户部署费用,可重复使用部件,代码和HTML分离,高效等优点;而且由于对VB环境的熟悉,可以充分利用传统的编程方法。

参考资料:Microsoft MSDN 之Visual Basic文档

(本示例程序在Windows 98+PWS下运行成功)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有