首页  韩国资源  酷站加油  我的展厅  设计名站  古典元素  推荐下载  设计欣赏  每周专访  招募精英  人才专区  网页教程  平面设计  编程开发  设计竞赛
当前位置:首页 > 编程开发 > ASP教程 > ASP基础教程 > 正文
ASP的 VBScript 类学习
来源:68design.net 2007年10月13日 11:13 网友评论:0条 点击:

  关于ASP的(VBScript)类,首先ASP的(VBScript)类是由事件和方法(它们就是构成类的成员了)构成的。

  在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,只能在类内部调用) 或 Public(公有成员,可以在类内外部调用) 。被声明为 Private 的将只在 Class 块内是可见的。被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见的。没有使用 Private 或 Public 明确声明的被默认为 Public。在类的块内部被声明为 Public 的过程(Sub 或 Function)将成为类的方法。Public 变量将成为类的属性,同使用 Property Get、Property Let 和 Property Set 显式声明的属性一样。类的缺省属性和方法是在它们的声明部分用 Default 关键字指定的。

  下面我们来看一个例子


<script language=vbscript runat=server>

Class myClass
'//----声明(声明就是定义)myClass类的类内部(私有的[Private])变量
Private strAuthor
Private strVersion
Private strExample

'//---------------------------定义类的事件-------------------------------//
'//----Class_Initialize()是类的初始化事件,只要一开始使用该类,首先会触发该部分的执行,下面我们会在该成员中初始化该类的作者和版本以及在屏幕上显示一下该类已经开始了

Private Sub Class_Initialize()
strAuthor = "思源"
strVersion = "1.0"
Response.Write "<br>myClass开始了<br>"
End Sub
'//----Class_Terminate()是类的结束事件,只要一退出该类,就会触发该事件,下面我们会该事件中设定退出该类时会在屏幕上显示该类已结束了。

Private Sub Class_Terminate()
Response.Write "<br>myClass结束了<br>"
End Sub

'//---------------------------用户自己定义的方法-------------------------------//

'//----该方法返回一个版本信息

Public Sub Information()
Response.Write "<br>Coding By <a href='mailtcoder@sinobe.com'>Maxid_Zen</a> @

<a href='http://www.design60s.com'>www.design60s.com</a>.<br>"
End Sub

'//---------------------------定义类的输出属性-------------------------------//

'//----定类的属性,该属性是让用户初始化strExapmle变量

Public Property Let setExapmle(ByVal strVar)
strExapmle = strVar
End Property

'//---------------------------定义类的输出属性-------------------------------//

'//----定义类的属性,该属性是返回一个版本号

Public Property Get Version
Version = strVersion
End Property

'//----定义类的属性,该属性是返回该类的作者号

Public Property Get Author
Author = strAuthor
End Property

'//----定义类的属性,该属性是返回一个版本号

Public Property Get Exapmle
Exapmle = strExapmle
End Property

End Class

</script>
<%

'//-------这里是使用该类的例子

Dim oneNewClass

Set oneNewClass = New myClass

Response.Write "作者:" & oneNewClass.Author & "<br>"
Response.Write "版本:" & oneNewClass.Version & "<br>"

oneNewClass.setExapmle = "这是一个简单类的例子"

Response.Write "用户自定义:" & oneNewClass.Exapmle & "<br>"

oneNewClass.Information

Set oneNewClass = Nothing

%>


  ASP中的Session本身是可以储存对象的,它可以保存基本变量,数组,自动化对象(Automation Object)等,但在储存自定义类的对象时会碰到问题。

  如下面的代码:

<%
If isempty(Session("node")) Then Set Session("node")=New ListNode
Set n=Session("node")
Response.Write n.Content
%>
  还是上面的ListNode这个类,这段代码意图在一个用户会话中只保留一个ListNode的对 象。所以在用户第一次访问该网页时,会生成ListNode的一个对象,并保存在Session("node")中;后面访问该网页时,因为 Session("node")不为空了,所以不会生成一个新的对象,而是到 Session("node")中取出保存的对象。

  理论上应该也会输出100,但是问题来了,ASP一直会报错:

  Microsoft VBScript runtime error '800a01b6'

  Object doesn't support this property or method: 'n.Content'

  用n.Type也会出错。同样的代码翻译成PHP,运行却是可以通过的。为什么?

  个人分析下来,认为Session可以保存对象是没错,只是VBScript中类型转换的机制太 弱,而且没有显式的强制类型转换供用户使用,无法将 Session("node")正确转换为ListNode类型。因为是自定义的类,我们只能在每个页面中都出现类的定义语句,这样在ASP看来,每次读 取这个页面时,ListNode类都是一个新类,所以就不认得Session中的这个类的对象了。

  结论:尽量不要想到用Session或Application来存储ASP中自定义类的对象。如果 确实需要,可以考虑用COM来编写类,然后在VBScript中用:Set Session("obj") = Server.CreateObject("YourApp.YourClass")来创建一个对象,然后即可实现上面预想的功能了。

上一篇:ASP:Response.ContentType   下一篇:ASP访问Excel文件
收藏此页】【打印】【关闭
 相关文章  我要点评
·用ASP统计用户在站点的停留时间
·利用ASP实现邮箱访问
·要注意ASP编程易犯的一个错误
·ASP.NET2.0中文验证码的实现
·ASP.NET防止用户多次登录的方法
·ASP.NET中备份SQL Server数据库的方法
·ASP.NET页面间数据传递
·ASP.NET缓存的方法分析

免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:68design#163.com
转载要求:作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印。



关于我们 | 在线反馈 | 广告报价 | 友情链接 | 联系我们 | 免责声明 | 在线投稿 | 网站地图
Copyright © 2003-2007 68design.net, All Rights Reserve 【找网页设计师,当然上网页设计师联盟】