活着的死人 发表于 2015-2-3 23:34:05

ASP网页编程之ASP面向对象编程切磋及对照

缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。对照|编程|对象|对照   ASP是Microsoft于较初期推出的静态网页编程手艺,但其联合ADO对数据库便利快捷的会见、联合XML、COM/ActiveX等其它手艺 完成办事器多层布局的功效使它在明天还有着倔强的性命力,而且仍然有着必定的开展。ASP.Net固然在架构上完整分歧于ASP,但它良多内建对象也是基 于ASP停止扩大的。网上有没有数的引见ASP的文章,却鲜有引见ASP面向对象和与其它言语对照的,这也就是我下决计写这篇文章的缘由。
由于是初期的版本,ASP只供应了很弱的面向对象的接口。尽人皆知,ASP的完成言语分为VBScript和JavaScript/JScript: 在VBScript中有Class关头字,可以用来声明一个自界说类;JavaScript就对照怪,它用一个函数来“声明”类,然后在该函数里经由过程 this.prototype界说属性,this.func界说办法。这里将以VBScript为主停止会商,VBScript的类声明是如许的:
Class name
statements
End Class
这里statements里可以声明私有或公有的成员,包含函数、成员和属性。关于属性,不能不赞一下微软的get和set办法,这个在COM中呈现 的理念,直到.Net中一向被沿用上去,团体以为对法式员而言,比Java用getProp()、setProp()两个办法来完成一样后果要便利直不雅得 多。
比拟之下,VBScript中的类与PHP4中的类各有所长(固然跟最新的PHP5没法比),VBScript中的类坚持了VB的不完整面向对象的 “特征”,它仅仅完成了最根基的机关/析构函数、成员函数、变量、属性,乃至机关函数不克不及带参数。PHP4中则还完成了承继、函数重载等类的主要性质,也 只要完成了这些,才干称之为面向对象,才有能够为完成多态供应基本。但两者均没有完成类的静态(static)成员等功效。虽然可以用其它一些变灵通到同 样的功能,但从面向对象的思惟动身,这都是不完全的(因为PHP十分天真,PHP4中可以经由过程成员函数的静态变量来直接完成类的静态变量;而“::”―― 可以完成类的静态函数会见的操作符――在PHP4中没有严厉反省。换句话说,一切的成员函数都可以当做静态函数会见,只需你在该函数里不利用成员变量就不 会失足。VBScript基本没有完成static,只能用Session或Application来完成)。所以在平凡的利用中,你可使用 VBScript的自界说类来封装一些操作,但不要期望它像C++ / Java / .Net那样为你的面向对象思惟办事。
VBScript一样发扬了VB中默许的参数或变量是援用的好作风。如许,虽然Script言语中对类型不敏感,但它还可以到达C/C++里指针/援用一样的功能,完成良多工作。最根基的,好比说用它界说一个列表(List)的节点类ListNode:
<%
Class ListNode
Public Content
Public NextNode

Private Sub Class_Initialize()
Content="Node"
Set NextNode=Nothing
End Sub
End Class
%>
呵呵,就这么复杂,但不要感应鄙夷,也不要健忘对变量初始值。VB中也差不多,声明时加上类型就好了。而利用时:
<%
Set nh=new ListNode
Set nh.NextNode=new ListNode
'其它语句……
'遍历列表
Set n=nh
While Not n is Nothing
Response.Write n.Content+"<br />"
Set n=n.NextNode
Wend
%>
假如不加其它代码,下面的运转了局是两个“node”。VBScript的自界说类和对象也不过如是,只需你把握根基的概念,对它有必定懂得,就再复杂不外了。再次强调,用Set语句来对对象停止赋值,相当于Java里的赋值,都是取得一个援用。这比PHP4里默许对象赋值是挪用拷贝机关函数来创立一 个新的对象很多多少了(乃至连obj=new Obj;如许的语句城市创立两个对象!假如你想取得援用的话,要在等号后变量前显示地加上&),而仿佛PHP5也不想修正PHP4的这类做法。
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")来创立一个对象,然后便可完成下面料想的功效了。</p>ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。Apache ASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。

兰色精灵 发表于 2015-2-4 02:19:07

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

第二个灵魂 发表于 2015-2-4 13:15:04

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件

再现理想 发表于 2015-2-9 23:21:46

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。

老尸 发表于 2015-2-26 05:57:47

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了

莫相离 发表于 2015-3-8 12:14:17

虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。

谁可相欹 发表于 2015-3-9 20:58:03

作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。

admin 发表于 2015-3-10 23:01:47

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

飘灵儿 发表于 2015-3-15 16:58:14

那么,ASP.Net有哪些改进呢?

柔情似水 发表于 2015-3-19 05:41:53

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:

深爱那片海 发表于 2015-3-27 08:08:14

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

山那边是海 发表于 2015-3-27 08:08:16

那么,ASP.Net有哪些改进呢?

变相怪杰 发表于 2015-3-27 16:09:25

Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)

若天明 发表于 2015-4-6 23:11:14

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。

分手快乐 发表于 2015-4-13 15:03:11

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

爱飞 发表于 2015-4-25 02:45:11

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

飘飘悠悠 发表于 2015-4-30 14:37:57

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

小女巫 发表于 2015-5-6 13:09:45

封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。

只想知道 发表于 2015-5-7 02:41:28

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

海妖 发表于 2015-6-17 19:54:17

Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
页: [1]
查看完整版本: ASP网页编程之ASP面向对象编程切磋及对照