asp心得感受_ASP编程心得

学好一门编程语言有两个条件是必不可少之,一是理论与实践结合,在实际例程去验证书本上之理论能加深你对理论之理解;二是学会总结,把学习、运用中之心得体会记下来,当成一种经验或者教训加以提炼并在日后之应用中加以改进,一定能提高你对这门编程语言之认识。以下是笔者在学习与运用ASP编程中之两点经验,希望能对大家有所帮助。

ASP页面内VBScript和JScript之交互

ASP具备管理不同语言脚本程序之能力,能够自动调用合适之脚本引擎以解释脚本代码和执行内置函数。ASP开发环境提供了两种脚本引擎,即VBScript(缺省)和JScript。不过,开发者并没有被限制于只能使用这两种语言,只要能够提供合适之ActiveX脚本引擎就能使用任何脚本语言。

脚本语言之选择往往基于许多不同原因:它可能是开发者最为熟悉之语言,可能是对给定工程来说能够提供最多特色支持之,也有可能是最具效率之。不同之环境和要求使得我们在选择脚本语言时注重不同之因素,同时也使得我们在某些时候面临选定之脚本语言不能直接提供其它语言固有之函数这一问题,或某个脚本已经写成但用之却是另外一种脚本语言。

此时应该怎么办?是否需要用当前所用之脚本语言重写这些脚本?或者说,是否有可能在一种脚本语言中调用其它脚本语言之内置函数?本文要说明之就是在ASP应用中如何让VBScript脚本和JScript脚本交互以最大限度之获得两种脚本语言之特色支持。

一、VBScript和JScript之内置函数

在VBScript和JScript中,有大量之内置函数功能是相同或类似之。然而,在一种脚本语言中内置之函数并非总是在另外一种脚本语言中也有对应之函数。例如,VBScript提供了许多用于操作字符串和格式化数据之函数,这些函数在JScript中并不存在。这些函数包括StrReverse()、Filter()以及FormatCurrency()等。在另一方面,JScript所提供之用于管理数组、字符串编码等之函数在VBScript中也没有定义,如join()、reverse()、pow()、位操作、escape()和unescape()等。

那么,如果在JScript程序中需要一个VBscript函数该怎么办呢?

二、异种脚本之互相调用

如果需要在JScript脚本中调用一个VBScript中内置之函数,则应该写一个VBScript用户定义函数(在这里调用VBScript内置函数),然后在JScript脚本中象调用公用JScript函数一样调用这个用户定义函数。

例如,如果要调用之VBSCript内置函数是FormatCurrency(),则可以声明如下自定义函数:

< SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER">

Function FormatValue(Value)

FormatValue = FormatCurrency(Value)

End Function

< /SCRIPT>

接下来在JScript代码中就可以象普通JScript函数一样调用FormatValue()了。用类似之方法也可以实现VBScript代码调用JScript函数。

应用同样之规则,我们可以在任何脚本内调用任何用户定义函数。不过,从JScript脚本内调用一个不带参数之VBScript过程(Sub)时应略加注意,此时在JScript中应该象调用一个不带参数之JScript函数一样调用它,如用foo()调用VBScript Sub foo过程。

三、数据共享

在某些情形下混合运用VBScript和JScript函数是非常有用之,但在不同语言脚本之间共享数据也可能很有用。实现这种共享之方法很简单:不管使用之是什么语言,只要是在页面级声明之变量就可以任意引用。

对象之使用方法也相似,可以任意选用合适之语言读取、修改属性或调用对象之方法。当然给定对象之属性和方法是由创建该对象实例之语言所定义之。正如上例VBScript之过程调用,当从JScript中调用一个不带参数之VBScript对象之方法时,其调用方法也遵从JScript之调用规则,反之亦然。

四、数组管理

数组共享问题稍微复杂一点。虽然数组也象其它变量一样可以在不同语言脚本之间共享,但必须注意兼容方面之问题。

VBScript数组在JScript下可以用VBScript之符号引用,即用myArray(2)引用数组元素而不是JScript之数组元素引用符号myArray[2]。此外,还可以使用一个特殊之JScript对象——VBArray对象将VBScript数组转换为JScript数组。下面之代码从VBScript数组myVBArray创建JScript数组myJSArray:

var Temp = new VBArray(myVBArray)

var myJSArray

myJSArray = Temp.toArray()

上述代码首先创建一个临时之VBArray对象,然后使用它之toArray()方法将自己转换为JScript数组。此后就可以象普通JScript数组一样使用myJSArray,如myJSArray[1]。但应当注意之是,toArray()方法将把一个多维之VBArray转换为一维之JScript数组。

从VBScript中引用JScript数组更为复杂。虽然在VBScript中我们可以直接访问JScript数组相关之方法和属性,但没有直接访问JScript数组之单个元素之方法。也就是说,我们可以在VBScript脚本中读取JScript数组之长度属性,如下所示:

x = myJSArray.length

但无法直接读取该数组之单个元素,下面之VBScript代码是不正确之:

x = myJSArray(3)

解决该问题之一个可行之方法是执行一个转换过程,如下面之代码所示,此处假定VBScript是缺省之脚本语言:

< %

Dim Temp

Dim myVBArray

Temp = myJSArray.join(", ")

myVBArray = Split(Temp, ", ")

%>

此处之JScript join()方法将数组myJSArray元素转换到一个以逗号为分割符之字符串,VBScript Split()函数将字符串转换为VBScript数组。注意这里我们是在VBScript环境下调用JScript之join方法。依照此例,我们可以通过自定义VBScript函数来模拟JScript之VBArray对象之toArray()方法以实现JScript数组到VBScript数组之转换。

用模板建立动态ASP页

对于模板,我想大家可能都有一些概念,在word中很多模板,设计好了大概之版面,你只要用你自己之话填充那些占位字符就好了。这儿之模板大概也就是这个意思,页面中相对稳定之部分固定下来,其他之部分根不同之情况在输入不同之内容。其实在DreamWeaver中也有模板之功能,不过那个静态之,只能手动填充内容,而这儿讲之是动态之自动之内容填充。

首先,我先来解释一下为什么要用到模板文件。有时候,模板能够带给你对网页功能和布局更为完整之概念。当你看到Word之模板格式之后,就知道最后版面是个什么样子之了,在这儿也是如此。例如,你可以保留ASP语句,而使用不同之模板来建立不同之页面风格。

这样,你就不用为每种不同风格之网页分别来写不同之ASP页面了,这显然可以为我们节省很多时间和精力。而且,模板文件能够让你更容易之浏览页面代码,不用担心ASP和HTML之混杂搞之你头昏脑胀。你可以只用把注意力集中在HTML上,而完全不用去管ASP了。再有就是,摸板很简单,你绝对很快就能搞懂搞定。在这篇文章中,将会用到一个数据库——一个用之很广泛之雇员表。包括雇员ID,姓名,照片,以及工作摘要和照片之注脚。下面是这个Access数据库之结构:

文件名 - myDatabase.mdb

表名 - Employees

ID

自动计数(Autonumber)

FullName

文本 - 最多100个字符

PicURL

文本 - 最多255个字符

Duties

注释类型

PicCaption

文本 - 最多50个字符

一个很简单之数据库,是吧。当然你可以按要求来扩展它,那就是你自己之事了。我假设你已了解数据库之基本操作,这样我不用在这上面花太多之笔墨,其实这儿之代码都是很简单之,只要你知道一些基本之东西,就能把它看懂。建立了数据库之后,我们可以开始建立模板文件了。这个文件是每个页面之骨架。我没有用到表格,那样有些麻烦,而我很懒,而且,也不用加入,标签,因为那是要加在ASP页面中之。所以到最后,它之样子就是这样了:

Full Name:

%name% < br>Description of duties:

%duties%

This picture was taken: %date%

Employee ID: %empID%

就是这样了!这就是一个简单之模板。把它存为template.tmp,在后面之ASP页面中将要引用到它。要注意之是:我们可以在模板中加入各种HTML标签,你完全可以在摸版中定义好网页之结构和样式,就像实际写一个网页一样,只是要把关键之之方标出来——注意到了那些%围着之东西了吗?那就是模板之精髓了。或许你已经注意到,那些%围着之是和数据库中之字段意义对应之。看看下面之ASP代码,是如何读入模板和数据库文件,把他们揉和在一起,然后输出我们想要之HTML页面。

这就是所有之代码了,很简单,不是吗?它所作之只是打开模板文件,按顺序读入每一行,然后用冲数据库中读入之实际之字段值来代替模版中那些%img%,%name%标记。而且,它还把在“Duties”字段内大段文本中之回车解释成HTML之回车 ,这样就不至于打乱整个之排版格式了。怎么样?轻松搞定吧。模板在某些应用上真之是可以发挥奇效,省时省力。理论上,你还可以修改这段代码,用FileSystemObject来读写文本,这样数据就不一定要存储在数据库中了。在一些应用中,比如即时之新闻发布,这样也许更为方便一些。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值