仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 373|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网页编程之怎样制造无形态的ASP组件 (转)

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:57:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。怎样制造无形态的ASP组件


  一样平常我们在web或别的有关的无形态使用中利用组件时,剧本运转终了后我们城市丧失组件的一切参照。固然能够复杂地将组件的参照保留在会话(session)变量中,但这华侈资本。更伶俐的办法是用会话变量或隐式表单标签保留组件的一些信息。当从头制造组件的实例时,试图用保留在会话变量中的信息恢复组件的形态。但两种办法的坏处都在于:从资本的角度来看过于高贵,乃至刚好难以完成。

  很侥幸有个好动静。我们都晓得可延续性的全部条件是可以将变量恢复到如许的形态,以致于组件晓得在前次的例示中它在哪。这有助于组件如今往做它假定要做的。这个计划的一个典范例子是网页上材料的翻页。当用户点击PageDown时,我们必要晓得我们在前一页的地位。不把变量保留在内存中(如会话变量),假如我们能将它们保留在文件中,等今后必要时检索不是会很好吗?用基本的数据情势(字符串与数字)保留数据很简单。用工具和数组会如何呢?工具和数组实质上是存储器中的二进制数据流。假如我们能读这个数据我们就可以将它写进文件以便今后的检索。关于工具有个好注重。只管数组的情形分歧。起首你不克不及用数组做组件的属性(VB6.0)。你能够用他们做变量,但今后你会碰着路障。侥幸地是我们为这类情形发明了一个事情区。

  你能够将一切或部分属性保留在一个PropertyBag工具中。PropertyBag工具把持在一个工具挪用过程当中能够保留和恢复的信息。PropertyBag工具的内容(Content)属性供应你任何存在组中的二进制数据流。由你来将这些二进制数据流写进文件中以便往后的检索。

实例:

好比你有一个类MyComp.clsMyDept,它有两个属性MyDepartment$和MyEmployees(一个ADO纪录集工具)。

以下是这个类模块的代码:

OptionExplicit
OptionCompareText

PublicMyDepartmentAsString
PublicMyEmployeesAsADODB.Recordset

DimobjBagAsNewPropertyBag

PrivateSubClass_InitProperties()
SetMyEmployees=NewADODB.Recordset
MyEmployees.Fields.Append"EmpName",adVarChar,30
MyEmployees.Fields.Append"EmpSal",adCurrency
MyEmployees.Open
EndSub

PublicSubSaveMyProperties()
DimintFile%,bytRec()AsByte
objBag.WriteProperty"MyDepartment",MyDepartment
objBag.WriteProperty"MyEmployees",MyEmployees
Savethisdatainafileforlaterretrieval
intFile=FreeFile
IfDir("C:MyData.txt",vbNormal)=""Then
Else
Kill"C:MyData.txt"
EndIf
Open"C:MyData.txt"ForBinaryAccessWriteAs#intFile
bytRec=objBag.Contents
Put#intFile,,bytRec
Close#intFile
EndSub

PublicSubRestoreMyProperties()
DimintFile%,bytRec()AsByte
Readthesaveddatafromthefile.
ReDimbytRec(FileLen("C:MyData.txt"))
intFile=FreeFile
Open"C:MyData.txt"ForBinaryAccessReadAs#intFile
Get#intFile,,bytRec
objBag.Contents=bytRec
Close#intFile
PropertBagrestored.Letsrestorethepropertiesnow.
MyDepartment=objBag.ReadProperty("MyDepartment")
SetMyEmployees=objBag.ReadProperty("MyEmployees")
EndSub


在客户使用中保留属性

PrivateSubCommand1_Click()
DimobjDeptAsNewMyComp.clsMyDept
objDept.MyDepartment="Research"
Addoneemployee
objDept.MyEmployees.AddNew
objDept.MyEmployees!EmpName="Harry"
objDept.MyEmployees!EmpSal=2500
objDept.MyEmployees.Update
Addsecondemployee
objDept.MyEmployees.AddNew
objDept.MyEmployees!EmpName="Potter"
objDept.MyEmployees!EmpSal=3000
objDept.MyEmployees.Update
Savethepropertiesbycallingthemethodfromourcomponent
objDept.SaveMyProperties
SetobjDept=Nothing
EndSub


取回保留的属性

PrivateSubCommand2_Click()
DimobjDeptAsNewMyComp.clsMyDept
Restorepropertiesbycallingthemethodfromourcomponent
objDept.RestoreMyProperties
Letsseewhatisrestored
Debug.PrintobjDept.MyDepartmentWillprintResearch

objDept.MyEmployees.MoveFirst
Debug.Print""&objDept.MyEmployees!EmpNameWillprintHarry
objDept.MyEmployees.MoveNext
Debug.Print""&objDept.MyEmployees!EmpNameWillprintPotter
SetobjDept=Nothing
EndSub

  先别冲动,你在本人的使用中运转这个酷件之前,必需懂得它的范围性。用于保留的工夫取决于属性的巨细和数据范例。注重年夜部分工夫用在ReadProperty和WriteProperty中。缘故原由很复杂,当我们处置象ADO纪录集如许的布局型数据时,历程可不象拷贝字撙节那样复杂。数据也得被注释。

保留纪录集时我察看到以下情形:

1、保留100,000行每列有25个字符的纪录集用了50秒。
2、检索一样的数据用了20秒。

  有个更好的办法保留纪录集工具。他们有本人的Save办法。用Save办法保留100,000个纪录集仅用了6秒。用Open办法检索保留的纪录集工具,从保留的纪录集工具中检索100,000行用了20秒(与PropertyBag办法的工夫一样)

选择利用数组

  延续的ADO纪录集为在你的使用中利用数组供应了一个好办法。想一想,假如你利用起来你就有一切ADO的烦琐办法可使用,象FIND,SORT,FILTER等等。实践上,假如你察看细心,会发明我们在上述实例顶用延续的纪录集完成了职工纪录的数组。纯实际化的人大概会否决,由于你不能不在你的计划中包括ADO,而这将增添你散布磁盘的大批存储。

小结

  在Web类的无形态使用中组件的可延续性长短常主要的功效。利用PropertyBag工具保留和检索属性。关于纪录集工具分离利用ADO的Save和Open办法保留和检索数据。将上述例子作为摸板,给每个实例加上变量文件名就能够制造你本人的组件。
</p>ASP最大的缺点在于网络的安全性和可靠性,企业将经营数据放在开放的平台上,最大的担忧就是如何保证这些数据不被其他人破坏。
活着的死人 该用户已被删除
沙发
发表于 2015-1-20 06:48:46 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
山那边是海 该用户已被删除
板凳
发表于 2015-1-25 22:10:26 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
再现理想 该用户已被删除
地板
发表于 2015-2-4 06:10:54 | 只看该作者
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
兰色精灵 该用户已被删除
5#
发表于 2015-2-9 17:13:28 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
透明 该用户已被删除
6#
发表于 2015-2-27 12:27:53 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
简单生活 该用户已被删除
7#
发表于 2015-3-9 03:45:25 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
不帅 该用户已被删除
8#
发表于 2015-3-16 20:17:18 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
小魔女 该用户已被删除
9#
发表于 2015-3-23 00:46:12 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 10:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表