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="***.asp?user=abc">,这时可通过Request.QueryString("user")读取传输的信息;如果出现多个重名的参数,如:<A href="***.asp?user=abc&user=bcd&user=cde">,则第一次Resquest.QueryString("user")=abc,第二次Resquest.QueryString("user")=bcd,第三次Resquest.QueryString("user")=cde。
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图形文件,所以每次传输前,我们都必须告知客户端将要传输的文件类型,一般默认情况下为“Text/Html”类型。例如<% Response.ContentType="IMAGE/JPEG" %>。
4)Response.Cookies 用于设置Cookies的值,语法为:Response.cookies(变量名称)[(key)|属性]=写入的信息。(key的用法前面已作说明,这里不在叙述)cookies系统默认有五个属性,包括Expires(时间)、Domain(域名)、Path(路径)、Secure(安全性)、Haskeys(判断cookies下是否还有其它cookies文本)。如:<% Response.Cookies("type").Expires="Sep 9,1998" %>。
5)Response.Buffer用于确定是否把信息传输到缓冲区。因为有时候我们希望把部分中间信息送到缓冲区,然后继续工作。当所有处理工作都完成后,才把信息输出到客户端。但当在处理过程中Flush或End方法被调用,则缓冲区内容将被输出。
Response的其它属性:
Expires:设定网页保留在客户端浏览器的时间长度。
ExpiresAbsolute:设定网页保留在客户端浏览器的日期与时间。
Response的其它方法:
AddHeader:设定HTML文件的HTTP报头。
AppendToLog:在Web Server记录档案末尾,添加字串。
Clear:清除在缓冲区中的HTML输出资料。
End:停止处理asp档案,并回传当时状态。
Flush:立刻送出缓冲区的HTML资料。
1.3 Server
Server对象会为你提供一些固定的server端的方法和属性,包括ScriptTimeout、MapPath和URLEncode等。其中ScriptTimeout是server的属性,可规定一个asp程序执行的最长时间,如:server.scripttimeout=200(计数单位为秒,缺省时为90秒)。
MapPath是server的一个方法,用于把web server的虚拟路径转换为实际路径。如server.mappath("/")=c:\inetpub\wwwroot,对于路径参数“/”和“\”,Asp都会视为一样。在这里有一点要注意的是,系统只是对应web server的真实根目录输出结果,而不会去检查文件系统中是否真的存在这样一个目录。
URLEncode是server的另外一个方法,该方法会根据URL编码原则,把源字符串编
码为目标字符串,其中空白的字符用“+”代替。
1.4 Session
Session是asp中一个非常重要的对象,在用一些传统的语言编程时,都会涉及到变量是定义为全局变量还是局部变量这个问题。但在Internet上的开发却很少提及这个问题(Java除外),因为每一个html页面都是非相关的,传输完毕后,全部链接都会断开。在asp中则不一样,我们可以定义一些全局变量,这里的全局是指在当前浏览器没有被关闭前都可以被使用。这些变量可以在Global.asa中进行定义。如果你的Web应用程序是用InterDev自动创建的,则会在根目录找到该文件;如果不是则可自行创建。
语法:session.属性|方法
一般建立新的session对象都是采用set关键字,如<%set session("变量名称")=要赋的值。如果赋给session变量的是一个数组,则读取时需存放到数组中,因为系统是将其视为一个对象(object)。
1.5 Application
Global.asa是用于定义session、application和object对象的一个文件,客户端是不能看到该文件的。但该文件一定要放在程序的根目录上,而且文本中不能有html标记并且文件名不能改动。下面是一个Global.asa文本的范例。
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
'==Visual InterDev Generated - DataConnection startspan==
'--Project Data Connection
Session("nnb_ConnectionString") = "DSN=***;UID=zyr;APP=Microsoft (R) Developer
Studio;WSID=ZYR;DATABASE=***"
Session("nnb_ConnectionTimeout") = 15
Session("nnb_CommandTimeout") = 30
Session("nnb_RuntimeUserName") = "zyr"
Session("nnb_RuntimePassword") = "******"
'==Visual InterDev Generated - DataConnection endspan==
End Sub
</SCRIPT>
Application与session的区别在于,网上的用户都可以使用Application的对象,因而是需要加锁的;而session只是针对一个客户而已。如定义一个Application变量为Application("name")="1234"。
Asp的功能仅此而已?当然不是,Asp更高级的应用还包括它内建有一些ActiveX控件和可调用其它的控件等功能,暂不在本文讨论。如果希望获取更多的信息,可以访问下面的站点:
http://www.microsoft.com/asp
http://zyr.yeah.net
http://www.kj.com.tw
2.Asp的编程实例
为了使大家对上面提到的功能有一个感性的认识,下面我们将以一个非常简单的用asp编写的chatroom(交谈室)作为例子。为了尽量简化,我们这里只采用四个文件,一个是主文件main.asp和enter.asp(让用户输入用户名),一个是资料输入文件input.asp,一个是显示文件show.asp。原理是定义一个application变量show,然后每次有人说话,我们都把它加到前面;另外显示文件show.asp每三秒钟刷新一次,用于显示show变量.全部工作仅此而已,用其它语言或方法可能需要更复杂的工作,在这里则变得非常简单和明了。(这里没有使用Global.asa文件。)
2.1 main.asp文件
<%
if session("sname")="" then
response.redirect "enter.asp"
end if
;如果用户没有输入名字,则将重新回到名字输入界面
%>
<html>
<frameset rows="80%,20%">
<frame name="show" src="show.asp">
<frame name="input" src="input.asp">
<noframes>
<body>
<p>This page uses frames, but your browser doesn't support them.</p>
</body>
</noframes>
</frameset>
</html>
2.2 enter.asp文件
<%
nickname=request.form("nickname")
;读取用户输入的名字
if nickname="" then
msg=msg+"<font color='ff0000'>请输入您的名称</font><br>"
else
response.cookies("whoami")=nickname
;把用户名字写到cookies中
application.lock
application("show")="<table border=0 bgcolor='ccffcc' width='500'>" _
&"<td><font color='5555ff'><b>来至" & request.servervariables("remote_addr") _
& "的" & request.cookies("whoami") & "大驾光临...</b></font></td></table>" _
& application("show")
; _是分隔符,与VB一样
application.unlock
session("sname")=nickname
response.redirect "main.asp"
end if
%>
<html>
<body>
<form method="POST" action="enter.asp">
你的姓名:
<input type="text" name="nickname" size="20" maxlength="10">
<input type="submit" value="进入聊天室" name="B1">
</form>
</body>
</html>
2.3 show.asp文件
<html>
<head>
<meta http-equiv="refresh" content="3">
;设置每三秒钟刷新一次
<meta name="Microsoft Border" content="none">
<title>聊天的内容</title>
</head>
<body bgcolor="#FFFFFF">
<%=application("show")%>
</body>
</html>
2.4 input.asp文件
<%
mytalk=trim(request.form("txtbox"))
;读取用户写的信息,trim用于去掉后面的空格
application.lock
application("show")="<font color=ff0000 ><b>" & request.cookies("whoami") & _
"</b></font>:" & mytalk & "<br>" & application("show")
;把新的信息添加到application变量show的前面,其中request.cookies("whoami")是从
;cookies中读出该用户的名字。
application.unlock
%>
<html>
<head>
<meta name="Microsoft Border" content="none">
<base target="input">
<title>输入界面</title>
</head>
<body bgcolor="#FFFFFF">
<form method="POST" action="input.asp" target="input">
<p><font color="red"><%=request.cookies("whoami")%></font>
输入:<input type="text" name="txtbox" size="30">
<input type="submit" value="发送" name="go">
</form>
</body>
</html>
|
相关推荐
### Active Server Page (ASP) 基础教程详解 #### 一、Active Server Page (ASP) 概览 Microsoft Active Server Pages(ASP)是一种服务器端的脚本编写环境,允许开发者创建动态、交互式的Web服务器应用程序。通过...
Active Server Pages(ASP)是一种由Microsoft开发的服务器端脚本环境,用于构建动态、交互式的Web应用程序。ASP的核心特性在于它允许开发者结合HTML、脚本命令和ActiveX组件,以创建高度定制化的Web页面和功能强大...
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境,可用来创建动态交互式网页并建立强大的web应用程序。当服务器收到对ASP文件的请求时,它会处理包含在用于构建发送给浏览器的HTML(Hyper Text ...
ASP,全称Active Server Page,是由微软公司推出的一种服务器端脚本环境,专门用于构建动态网页和Web应用程序。它的核心优势在于能够与数据库和其他程序进行交互,为用户提供丰富的交互式内容,突破了传统静态HTML...
软件介绍 Microsoft Active Server Pages(ASP)是服务器端脚本编写 环境,使用它可以创建和运行动态、交互的 Web 服务器应用程序。使用 ASP 可以组合 HTML 页、脚本命令和 ActiveX 组件以创建交互的 Web 页和基于 ...
这个"Active Server Page使用手册"很显然是一个针对初学者的教程,旨在帮助他们理解并掌握ASP的核心概念和实践技能。下面我们将深入探讨ASP的基础知识、主要特点以及如何开始学习和使用它。 1. **ASP基础概念**: ...
ASP.NET 是微软公司推出的Web应用程序开发框架,它不仅是一个Active Server Page (ASP) 的升级版,更是一个全新的、基于.NET Framework的平台。ASP.NET提供了一种统一的开发模型,允许开发者构建高性能、高安全性的...
Microsoft Active Server Pages(ASP)是服务器端脚本编写 环境,使用它可以创建和运行动态、交互的 Web 服务器应用程序。使用 ASP 可以组合 HTML 页、脚本命令和 ActiveX 组件以创建交互的 Web 页和基于 Web 的功能...
ASP,全称Active Server Pages,是微软开发的一种服务器端脚本环境,用于创建动态网页或Web应用程序。在本文中,我们将深入探讨ASP的基础知识,帮助初学者快速入门。 一、ASP的基本概念 ASP是一个基于服务器的技术...
### Active Service Page (ASP) 基础教材精要解析 #### 一、ASP概览与历史背景 Active Server Pages(ASP),即活动服务器页面,是微软开发的一种服务器端脚本环境,在HTML网页中嵌入脚本来创建动态网页。自1996年...
安装Active ServerPage的准备工作 .第一章 安装和使用 WINDOWS NT Server 第二章 安装和使用 IIS 第三章 安装和使用 SQL Server .第四章 Exchage Active Server, Index Server NetShow 第二部分 标记及...
本文结合《 城市公交在线查询系统》的实际需要,通过对ASP(Active Server Page)服务器端脚本编写环境、HTML语言、IIS (Internet Information Services)信息服务、Access数据库以及SQL语言的深入学习及实践,主要...
本文结合《抚顺城市公交在线查询系统》的实际需要,通过对ASP(Active Server Page)服务器端脚本编写环境、HTML语言、IIS (Internet Information Services)信息服务、Access数据库以及SQL语言的深入学习及实践,...
ASP(Active Server Page)是一种服务器端脚本编写环境,可以用来创建和运行动态网页或 Web 应用程序。ASP 网页可以包含 HTML 标记、普通文本、脚本命令以及 COM 组件等。利用 ASP 可以向网页中添加交互式内容(如...
Microsoft Active Server Pages 即我们所称的ASP,其实是一套微软开发的服务器端脚本环境.Active Server Page 是创建动态网页的一个很好的工具,它起一种编程语言的作用,可以利用它编写动态产生HTML的程序代码....