当前位置:编程学习 > asp >>

Asp(Active Server Page)的语言特性 (转)

答案:Web源于静态文本,现在很多站点几乎还是采用这种方式。静态文本的缺点就是维

  护难(文件数目多)、查询难、修改难。虽然可以采用FrontPage对站点进行管理,但这

  只是其中的一个办法。现在,很多的站点都会在后台采用数据库,动态生成超文本。这样,

  要改变式样,只需修改几个文件;要变更内容,只需对数据库进行操作即可,而且易于保持

  一致性;而对于全文检索等查询应用,这种方式的优越性更为突出。(经常说的“动态”

  也包括图片的动态显示,如动态GIF、Java Applet等,本文所指为资料的动态性)

   通用网关界面CGI(Common Gateway Interface)和网络服务器应用程序界面

  ISAPI(Internet Server Application Programming Interface)与其他相关技术的

  出现,使我们能够方便地与Web Server进行沟通,从而象一些计数器、留言版等CGI程

  式相继出现并蔚然成风。但这些CGI程序都有一个很大的缺点,就是CGI(可用VB、Java、

  Perl、C或Dephi等编写)与html只能分开编写、分开运行,要将两者融合在一起并不

  容易,从而导致维护与编写都相当困难。因此,一些厂商后来都推出了自己的Script语言,来增强网页开发的功能。其中Netscape推出了javascript(for client端和for Server端两种);微软则推出了VBScript和Asp(Asp的语法与VB的语法类似)两种,也用于服务器端和客户端程序的编写。对于专业开发人员而言,客户端程序的最重要的一点是通用性,而服务器端的则强调功能和效率。对于Client端程序的开发,javascript无疑是最佳的,因为当今两大主流浏览器IE和Netscape都宣称支持该标准;而VBScript则只有IE才能支持。但令我们苦恼的是对某些javascript的标记,IE或IE的某些版本并不一定会支持,这必导致我们不得不把一部分程序移到服务器端去执行,因为服务器端的程序会先解释生成html(或含ActiveX)文本,再送到客户端,故不存在兼容问题。

   livewire(javascript for Server端的编译器)和Asp一样,都是一些手稿语言(手稿是指类似client端的javascript一样的、可嵌套在html文本里面、只需用标记标明是由服务器执行的程序段),也就是类似C/C++一样的面向对象的语言。livewire的文件后缀名还是html,asp的文件后缀名则是asp,因为asp的文件在客户读取它的时候,服务器才进行解释,而livewire的文件则必须预先进行编译(每次修改后,都要重新编译)。asp有相应的辅助开发工具(InterDev),可代为生成一些控件。当然,这些并不重要,关键是你采用的是Netscape Web Server还是微软的IIS。但就一般而言,因为IIS是捆绑在NT上的,故采用IIS的用户会偏多一些。

   自从Netscape公司推出了livewire和微软推出了Active Server Page以后,程序员编写网上程序就方便和容易了很多。但这种Script类的语言有一个共同的缺点,那就是由于是解释执行的,故速度不会太快。最近,微软建议采用三层模型,中间层可以不用asp,而直接采用VB6.0生成的ActiveX控件,因为是编译执行的,故速度较快,不过这是后话。

  

  1.Asp的基本对象

  

   Asp(Active Server Page)是一种类似于VB的面向对象的程序语言。在这里并不想详述对象等一些基本概念,而是直接介绍其语言特性,以便开发人员能够熟练地对asp程序进行修改和编制(因为很多人都只是直接利用开发工具如InterDev来生成asp程序)。

   首先,Asp程序的存档名称肯定是“asp”;其次,在asp程序里面,服务器端的Script要放在<%和%>字符串中间,例如<% user=request("user") %>。如果你想在一个Asp文件中调用另一个Asp文件,则可在Asp中加上下面的声明:

  < ! -- #INCLUDE VIRTUAL|FILE="***.asp" -- >,这有些象C语言中的#include。其中,Virtual表示虚拟文件路径,File表示真实文件路径。

   Asp有五个主要的内建对象:Request、Response、Server、Session、Application,下面将分别举例对其进行说明。

  

  1.1 Request

  Asp依然遵从流行的、利用客户端的Form进行数据交换的方法。Asp内建的request对象拥有五个获取客户端资料的方法(QueryString/Form/Cookies/ServerVariables/ClientCertificate)。

  语法:request.方法名称("参数")|request("参数")

  如果采用后者,系统会自动选择相应的方法。

   1.1.1 Form

   在这里再重新强调Form的一些属性:

   <Form Action=被调用的程序的url

   Enctype=资料传送的MIME形态

   Method=传送资料的方式Get/Post

   Onrest=按下rest键调用的程序

   Onsubmit=按下sumit键调用程序

   Target=输出内容的frame窗口></Form>

   使用Form传送信息一般有三种方式:由html网页内的Form传信息给其他Asp;由Asp内的Form传信息给另外一个Asp;Asp内的信息传送给自身。

   语法:Request.Form(参数)[(索引)]

   其中参数表示Form中元素的名称,索引表示相同名称元素的顺序号。

   例:

   <%

   For I=1 To Request.Form("user").Count

   Response.Write Request.Form("user")(I)

   Next

   %>

  可循环读取名称为user的元素,其中Count是Form的系统属性,用于计算同名元素的个数,如果该元素不存在,则其值为零。如果没有指明要读取第几个同名元素,则系统会把全部同名元素的值都读取出来,并用“,”作间隔。

  例:Request.form("user")=abc,bcd,cde

  

   1.1.2 QueryString

   语法:Request.QueryString(参数)[(索引)]

  除了用Form传输资料外,还可通过在超链接后接“?”的方式传输信息,如:<A href=>
  

   1.1.3 ServerVariables

   语法:ServerVariables(参数名称)

   我们知道Web/Browse的传输协议是http,http的报头会有一些客户端的信息,如

  客户IP地址、浏览器的语言系统等。这时可通过Request.ServerVariables("***")获

  取相关信息,如Request.ServerVariables("Accept_Language")可获取客户端浏览器

  的语系。其他系统参数见下表:

   SERVER_NAME server的机器名称或IP地址。

   SERVER_PORT server正在运行的端口号。

   REQUEST_METHOD 发出request的方法(GET/POST/HEAD)。

   SCRIPT_NAME 程序被调用的路径,如:cgi-bin/a.pl。

   REMOTE_HOST 发出request请求的远端机器(client)的名称。

   REMOTE_ADDR 发出request请求的远端机器(client)的IP地址。

   REMOTE_IDENT 发出request的使用者名称(如是拨号上网,则为用户ID),

   当NCSA IdentityCheck为enabled,而且client机器支持

   RFC 931时,该变量有效。

   CONTENT_TYPE 数据的MIME类型,如:“text/html”。

   HTTP_ACCEPT client可以接受的MIME类型列表。

   HTTP_USER_AGENT client发出request的浏览器类型。

   HTTP_REFERER 在读取CGI程序之前,client所指的文本URL。

  

   1.1.4 Cookies

  在客户端,Cookies记录了客户端浏览器很多的信息,我们可通过Request.Cookies("名称")命令获取它的值,也可通过Response.Cookies("名称")="值"在客户端记录一些信息,以便控制访问者。设置多重Cookies的方法为Response.Cookies("名称")("名称")="值"。

  

   1.1.5 Cache

   我们可以在浏览器上设置从Cache中抽取已经访问过的页面的信息,同样,在Asp程序中也可进行类似的设置。其中Response.Clear为清空客户端的内存。Response.Buffer=True设置可从Cache中读取资料(缺省时为False)。

  

   1.1.6 ClientCertificate

   ClientCertificate用于获取客户端浏览器的身份确认信息(符合X.509标准),但

  客户端浏览器必须支持SSL3.0或PCT1协议。这里需做两步工作,第一步:web server必须启动用户端认证选项;第二步:对客户端浏览器进行相应设置,这样,该方法才会生效,否则,传回empty值。

  

  1.2 Response

   当要从服务器传送资料到客户端时,可通过下面的方法:

   1)Response.Write直接输出信息,如Response.write "<html>"。

   2)Response.Redirect引导客户端到另一个url位置,如Response.Redirect "http://zyr.yeah.net",但这里有一个问题需要注意,就是该语句一定要放在<html>标记前执行,也就是说在服务器未向客户端送出html文本报头前就要被执行,否则会出现传输错误信息。

  3)Response.ContentType控制输出的文件类型,服务器送给客户端的数据包类型可以是text/html文本,也可以是gif/jpeg图形文件,所以每次传输前,

上一个:关于ASP图象问题的总结
下一个:让这些恶意攻击者们见鬼去吧。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,