欢迎光临
我们一直在努力

asp简介和五大内置对象

建站超值云服务器,限时71元/月

目次

1.asp基础

2.asp的五大对象

3.request对象

4.response对象

5.server对象

6.application对象

7.session对象

1.asp基础

microsoft active server pages,即读者朋友们所称的asp,是一套微软开发的服务器端脚本环境,asp内含于iis之中,最新版的asp 3.0内含于iis 5.0之中。通过asp大家可以结合html网页、asp指令和activex控件建立动态、交互且高效的web服务器应用程序。有了asp你就不必担心客户的浏览器是否能运行你所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通html中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。

asp总结起来有以下特点:

ø 使用vbscript、jscript等简单易懂的脚本语言,结合html代码,即可快速地完成网站的应用程序。

ø 无须编译,容易编写,可在服务器端直接执行。

ø 使用普通的文本编辑器就可编写,为了更好地进行团队开发,微软特别开发一套开发工具visual interdev,它是一个集成的web应用软件开发系统,包括开发、发行、以及管理数据库驱动的web应用软件所需的所有功能。

ø asp所使用的脚本vbscript、jscript均在web服务端执行,用户端的浏览器不需要能够执行这些脚本语言。

ø asp的源程序不会被传到客户浏览器,因而可以避免所写的程序被他人剽窃,从而提高了网站的安全性。

ø activex server components具有无限的可扩充性。可以使用visual basic、java、visual c++、cobol等编程语言来编写你所需要的activex server component。

asp程序中可以包含纯文本、html标记以及脚本命令。你只需将.asp程序放在web服务器的虚拟目录下(该目录必须要有可执行的权限),就可以通过www的方式访问asp程序了。

学习asp要掌握的基础知识:

ø 学会microsoft visual interdev软件的使用。

ø asp服务器的安装和使用。

ø asp是内含于iis,象nt 4.0的iis 4.0就含iis 2.0,windows 2000的iis 5.0就含iis 3.0。如果是普通windows 98用户也没关系,微软也开发了一个专为学习asp的服务器personal web server,它一般包含在windows 98正式版的add-ins/pws目录下,只要装了personal web server,windows 98用户照样可以学习asp编程。

ø 熟练掌握http和html。

ø 熟练掌握vbscript或javascript。

ø 熟练掌握数据库知识。如:microsoft sql server,要熟悉ado和odbc,熟悉transact-sql语言。

2.asp的五大对象

request object

集合:querystring、form、cookies、servervariable

主要作用:读取提交表单中的数据或cookies中的数据。

response object

属性:buffer、cookies、contenttype、expires、expiresabsolute、status、isclientconnected、cachecontrol

方法:write、redirect、end、flush、cookies、binarywrite、addheader、appendtolog

主要作用:向浏览器输出文本、数据和cookies以及控制在传送网页过程中的每一个阶段。

server object

属性:scripttimeout

方法:createobject、mappath、urlencode、htmlencode

主要作用:创建com对象和scripting组件等。

application object

属性:lock和unlock

主要作用:application对象被用于放在同一个应用中多个用户之间的共享信息。

session object

属性:sessionid和timeout

方法:abandon

主要作用:为单个用户保持数据。

3.request对象

resquest对象代表由各客户程序发往http的请求报文。事实上,request对象的功能是单向的,它只能接收客户端web页面提交的数据,与response对象的功能刚好相反。

resquest接收数据时通过两个集合querystring和form来检索表单的数据,具体用哪一个集合,取决于web页面提交数据的http表单的method属性,当method属性值为“get”时以querystring,而method属性值为“post”时以form。当省略了具体的集合名称时,asp将以下面的顺序来搜索集合:querystring -> form -> cookie ->servervariables。

<html>

<head>

</head>

<body>

<form aciton="log.asp" method="get" name="login">

<input type=text name=logid>

<input type=text name=password>

<input type=submit name=submit1 value="提交">

</form>

</body>

</html>

当数据提交到服务器端的log.asp文件后,在log.asp中使用request对象得到用户提交的数据,加以判断用户是否合法。log.asp文件如下:

<%

dim user

dim passwd

user=request.querystring("logid")

passwd=request.querystring("password")

if user="jeff" then

if passwd="123456" then

response.write "登录成功!"

else

response.write "密码错误!"

end if

else

response.write "用户名错误!"

end if

%>

上面这个例子中method属性使用了get方法,所以使用request.querystring接收数据,相反若method属性使用了post方法,则使用request.form接收数据。

而servervariables集合可用于提供有关随http请求一起传递的头信息,它的引用格式为:

request.servervariables("关键字")

其中的“关键字有:

remote_addr -> 可以知道客户端的ip

url -> 得到系统的url路径

path_translated -> 当前active server page的真实地址

http_ua_os -> 浏览器所在的操作系统

4.response对象

response对象用于向客户端浏览器发送数据,用户可以使用该对象将服务器的数据以html的格式发送到用户端的浏览器,它与request组成了一对接收、发送数据的对象,这也是实现动态的基础。下面介绍它常用的属性和方法。

buffer属性

该属性用于指定页面输出时是否要用到缓冲区,默认值为false。当它为true时,直到整个active server page执行结束后才会将结果输出到浏览器上。如:

<%response.buffer=true%>

<html>

<head>

<title>buffer示例</title>

</head>

<body>

<%

for i=1 to 500

response.write(i & "<br>")

next

%>

</body>

</html>

这页执行时,整个主页的所有内容会同时显示在浏览器上,这个主页会存在缓存区中直到脚本执行结束。

expires属性

该属性用于设置浏览器缓存页面的时间长度(单位为分),必须在服务器端刷新。通过如下设置:

<%response.expires=0%>

通过在asp文件中加入这一行代码,要求每次请求是刷新页面,因为response一收到页面就会过期。

write方法

该方法把数据发送到客户端浏览器,如:

<%response.write "hello,world!"%>

redirect方法

该方法使浏览器可以重新定位到另一个url上,这样,当客户发出web请求时,客户端的浏览器类型已经确定,客户被重新定位到相应的页面。如:

<html>

<head>

<title>redirect示例</title>

</head>

<body>

<form aciton="formjump.asp" method="post">

<select name="wheretogo">

<option selected value="fun">fun</option>

<option value="news">news</option>

<option value="sample">sample</option>

</select>

<input type=submit name="jump" value="jump">

</form>

</body>

</html>

以上是提交的表单,下面是处理表单的文件formjump.asp:

<%response.buff=true%>

<html>

<head>

<title>redirect示例</title>

</head>

<body>

<%

thisurl="http://jefenet.yesky.net/"

where=request.form("wheretogo")

select case where

case "fun"

response.redirect thisurl & "/fun/default.asp"

case "news"

response.redirect thisurl & "/news/default.asp"

case "sample"

response.redirect thisurl & "/sample/default.asp"

end select

%>

</body>

<html>

这个例子当用户选择了以后,按"jump"按钮提交表单,服务器接到申请后调用formjump.asp判断后定位到相应的url。不过这里有一点要注意,http标题已经写入到客户浏览器,任何http标题的修改必须在写入页内容之前,遇到这种问题时,可以如下做:

在文件的开始<@ language=..>后写:

response.buffer=true

在结尾定:

response.flush

这里flush是response的一个方法,它必须是buffer属性设置为true时才能使用,否则会产生一个运行模式错误。另外一个clear方法也是用于清除被缓存的页面,同样要buffer属性设置为true时才能使用。

end方法

该方法用于告知active server当遇到该方法时停止处理asp文件。如果response对象的buffer属性设置为true,这时end方法即把缓存中的内容发送到客户并清除冲区。所以要取消所有向客户的输出民,可以先清除缓冲区,然后利用end方法。如:

<%

response.buffer=true

on error resume next

err.clear

if err.number<>0 then

response.clear

response.end

end if

%>

5.server对象

server对象是asp中一个很重要的对象,许多高级功能都是靠它来完成的。它提供了对active server pages和方法的使用,在这我主要介绍几个常用的方法。

mappath方法

该方法返回指定文件的相对路径或物理路径。若path以一个(/)或(\)开始,则mappath方法返回路径时将path视为完整的虚拟路径。若path不是以斜杠开始,则mappath方法返回同.asp文件中已有的路径相对的路径。

如:test.asp文件位于c:\inetpub\wwwroot\myhome下,c:\inetpub\wwwroot为服务器的宿主目录,而test.asp包含如下脚本:

<%response.write server.mappath(request.servervariables("path_info")%>

输出:c:\inetpub\wwwroot\myhome\test.asp

要得到这个结果还可以用如下方法:

<%response.write server.mappath("myhome/test.asp")%>

createobject方法

这个方法是server对象中最重要的方法,在后面可以看到,许多功能都不得不用到它。它用于创建已注册到服务器上的activex组件。这是一个非常的特性,因为通过使用activex组件能够使你扩展activex的能力。

用于创建服务器端的方法如下:server.createobject("componentname")

用来创建的组件可以是所有activex能使用的内置组件,实际上是存在于服务器的所有activex组件。

6.application对象

application对象是个应用程序级的对象,用来在所有用户间共享信息,并可以在web应用程序运行期间持久地保持数据。

application的属性:

application对象没有内置的属性,但是我们可以自行创建其属性。

<% application("属性名")=值 %>

其实大部分application变量都 存放在contents集合中,当你创建一个新的application变量时,其实就是在contents集合中添加了一项。下面两个脚本是等效的:

<%application("greeting")="hello!"%>

或<% application.contents("greeting")="hello!"

由于application变量存在集合里,所以如果想要全部显示,其方法我们已经多次使用,例如for each循环。

<%

for each item in application.contents

response.write("<br>"&item&application.contents(item))

next

%>

application的方法:

application的方法只有两个方法:一个是lock,另一个是unlock。其中lock方法用于保证同一时刻只能一个用户对application操作。unlock则用于取消lock方法的限制。如:

<%

application.lock

application("visitor_num")=application("visitor_num")+1

application.unlock

%>

application的事件:

&oslash; application_onstart(),当事件应用程序启动时触发。

&oslash; application_onend(),此事件应用程序结束时触发。

这两个事件过程都是必须定义在global.asp文件中,一般把连接数据的函数定义在这两个事件,然后放在global.asp中。例如:

sub application_onstart

application("tt18_connectionstring")="driver={sqlserver};

server=jeff;uid=sa;pwd=;database=test"

end sub

一个数组能够被定义成application对象,不过这个数组只能作为一个对象保存,而不能用application(0)取出其值。可以定义一个临时数组实现这种功能。如:

<%

dim array()

array=application("array")

for i = 0 to ubound(array)

response.write array(i)

next i

%>

同样要修改这个application对象也可以定义一个临时数组,把application对象赋给数组,然后修改这个数组的元素,最后把数组赋回application对象。如:

<%

dim array()

array=application("array")

array(0)="jeff"

array(1)="zhu"

.

.

application.lock

application("array")=array

application.unlock

%>

7.session对象

session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。每一访问者都会单独获得一个session。在web应用程序中,当一个用户访问该应用时,session类型的变量可以供这个用户在该web应用的所有页面中共享数据;如果另一个用户也同时访问该web应用,他也拥有自己的session变量,但两个用户之间无法通过session变量共享信息,而application类型的变更则可以实现站点多个用户之间在所有页面中共享信息。

a> sessionid属性

该属性返回当前会话的唯一标志,为每一个session分配不同的编号。我曾在开发过程中就遇到对用户的控制问题。它要实现的功能就是,针对某个网站的一个模块,当一个会员登录后正在看此模块时,另一个人用同样的会员名登录,就不能浏览这个模块。也就是说一个会员名同时只能一个人浏览此模块。我通过用会员名(假设为userid,唯一)和sessionid来实现了控制。当会员登录时,给这个会员一个session记录登录状态如:session("status")="logged",同时把这个会员的session.sessionid写入数据库。当他要浏览此模块时,先判断其是否登录,若已经登录再判断它的sessionid是否与数据库记录的相同,如果不同则不能访问。这样,当另一个用户用相同的会员名登录时,那么数据库中记录的就是新的sessionid,前者访问此模块时就不能通过检查。这就实现了一个会员名同时只能一个人浏览某个模块。这个功能在一些收费网站有很有特别作用,它防止了一个会员名给多个人浏览的问题,为公司保障了利益。

b>.timeout属性

该属性用来定义用户session对象的时限。如果用户在规定的时间内没有刷新网页,则session对象就会终止。一般默认为20分钟。

c>.abandon方法

该方法是session对象的唯一方法,可以清除session对象,用来消除用户的session对象并释放其所占的资源。如: <% session.abandon %>

d>.session_onstart和session_onend事件

和application一样,当对象的例程每一次启动时触发session_onstart事件,然后运行session_onstart事件的处理过程。也就是说,当服务器接收到应用程序中的url的http请求时,触发此事件,并建立一个session对象。同理,这个事件也必须定在global.asa文件中。

当调用session.abandon方法时或者在timeout的时间内没有刷新,这会触发session_onend事件,然后执行里面的脚本。session变量与特定的用户相联系,针对某一个用户赋值的session变量是和其他用户的session变量完全独立的,不会存在相互影响。

session应用一例:

与application一样,一个被定义为session类型的数组只能将整个数组作为一个对象,用户不能直接改变session数组中某个元素的值。为了创建一个session数组,需先定义一个普通的数组,并对它的每一个元素赋初值,最后把它定义为一个session数组。如:

<%

dim array()

array=array("jeff","zhu","male")

session("info")=array

response.write session("info")(0) &"-"

response.write session("info")(1) &"-"

response.write session("info")(2) &"<br>"

%>

<hr>

<%

array(0)="jun"

array(1)="li"

array(2)="female"

session("info")=array

response.write session("info")(0) & "-"

response.write session("info")(1) & "-"

response.write session("info")(2) & "<br>"

%>

以上这段程序输出结果是:

jeff-zhu-male

_____________

jun-li-female

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » asp简介和五大内置对象
分享到: 更多 (0)

相关推荐

  • 暂无文章