荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: tang (独孤九剑〖玄铁重剑〗), 信区: Homepage
标  题: [转载] ASP 中 文 简 明 教 程(7)
发信站: BBS 荔园晨风站 (Sun Apr 11 20:57:10 1999), 站内信件

【 以下文字转载自 Program 讨论区 】
【 原文由 zzt 所发表 】
向浏览器发送内容

在处理 ASP 脚本时,任何没有包含在 ASP 定界符或 <SCRIPT> 标记中的文本或
图形都将被简单地返回给浏览器。可以通过使用 Response 对象显示地把内容发
送给浏览器。

发送内容

要将内容从 ASP 定界符内部或过程发送给浏览器,可以使用 Response 对象的
Write 方法。例如,下面的语句可以根据用户是否访问过此页而发送不同的问候
语:

<%

If FirstTime = True Then

Response.Write "<H3 ALIGN=CENTER>Welcome to the Overview Page</H3>"

Else

Response.Write "<H3 ALIGN=CENTER>Welcome Back to the Overview Page</H3
>"

End If

%>

在过程外部,不必使用 Response.Write 将内容送回用户。不在脚本定界符内部
的内容被直接发送给浏览器,浏览器将其格式化和显示。例如,下面的脚本过程
与上面的脚本输出相同:

<H3 ALIGN=CENTER>

<% If FirstTime Then %>

Welcome to the Overview Page.

<% Else %>

Welcome Back to the Overview Page.

<% End If %>

</H3>

当您只需要将输出返回一次或很方便地向现有 HTML 文本中加入语句时,可使用
混合脚本命令和 HTML。当您不想用定界符分隔一条语句或当您想创建返回给浏览
器的字符串时,可使用 Response.Write。例如,可构建一个文本的字符串,用从
一个 HTML 表送回的值创建表格的一行:

Response.Write "<TR><TD>" & Request.Form("FirstName") _

& "</TD><TD>" & Request.Form("LastName") & "</TD></TR>"

Request.Form 返回从 HTML 表格(参阅 使用 HTML 表格)发送的值。(&) 字符
是 VBScript 字符串连接字符。

设置内容的类型

当 Web 服务器将文件返回给浏览器时,会同时告诉浏览器文件中包含的内容的类
型。这使浏览器能够决定是否它能自己显示文件或必须调用另一个应用程序。例
如,如果网络服务器返回 Microsoft Excel 表格,则浏览器必须调用 Microsof
t Excel 的副本显示此页。Web 服务器通过将文件的扩展名映射到 MIME 类型表
来识别文件类型。

可以使用 Response 对象的 ContentType 属性为发送给用户的内容设置 HTTP 内
容类型字符串。例如,下面的命令为通道定义设置内容类型:

<% Response.ContentType = "application/x-cdf" %>

有关通道的详细信息,请参阅本主题中的“创建动态通道”。

其他的通用内容类型是 text/plain(用于作为文本内容返回而不是已解释的 HT
ML 语句)、text/gif(用于 GIF 图像)和 video/quicktime(用于 Apple Qui
ckTime? 格式的电影)。一套标准的 MIME 类型已经定义,另外,Web 服务器或
 Web 浏览器都支持 MIME 类型。要想查看您的 Microsoft Web 服务器支持哪些
内容类型,可使用 Internet 服务管理器打开您的 Web 站点的属性页,单击“H
TTP 标题”选项卡,然后单击“文件类型”选项卡。

重定向浏览器

用 Redirect 方法可将浏览器重定向到另一个 URL,而不是将内容发送给用户。
例如,如果您想确认用户是否已从主页进入了您的应用程序,以便能收到一个客
户 ID,则可以检验他们是否有客户 ID 号;如果没有,就可以将其重定向到主页


<%

If Session("CustomerID") = 0 Then

Response.Redirect "homepage.asp"

End If

%>

除非缓冲区已经打开,否则,在任何内容或标题返回给浏览器之前,您必须重定
向浏览器。将 Response.Redirect 语句放在页的顶部和<HTML> 标记之前可确保
没有任何内容返回给浏览器。如果在返回给浏览器的内容或标题后使用 Respons
e.Redirect,将看到一个错误信息。

如果在页的中间使用 Response.Redirect,请将其与 Response.Buffer 属性一起
使用,下面的部分将进行解释。

缓冲内容

默认情况下,Web 服务器返回 HTML 和在处理 ASP 页时的脚本处理结果。但是,
您可以设置 Response 对象的 Buffer 属性以便在向用户发送任何内容之前,先
处理页上的所有的服务器脚本命令。

可以使用缓冲技术来确定在页处理过程中的某个点,而您并不想将该点之前的内
容发送给用户。也可以用 Response 对象的 Redirect 方法将用户重定向到另一
页,或者用 Response 对象的 Clear 方法清除缓冲区并将不同的内容发送给用户
。下面的例子使用了以上两种方法。

<%

'Turn on buffering. This statement must appear before the <HTML> tag.


Response.Buffer = True %>

<html>

<body>

.

.

.

<%

If Request("FName") = "" Then

Response.Clear

Response.Redirect "/samples/test.html"

Else

Response.Write Request("FName")

End If

%>

</body>

</html>

也可以使用 Response.Buffer 避免 Web 服务器在脚本修改 HTTP 标题之前将其
返回。有些属性和方法,例如 Response.Expires 和 Response.Redirect 可修改
 HTTP 标题。

当在脚本中设置 Buffer 属性并且没有调用 Flush 方法时,服务器将保持用户发
出的 Keep-Alive 请求。养成这样的脚本编写习惯有益于提高服务器的性能,因
为,服务器不必为每一个用户请求创建新的连接(假定服务器、用户和任何代理
服务器都支持 Keep-Alive 要求)。但是,这种方法的一个潜在的不利因素是:
在用户处理完当前的 asp 文件的所有的脚本之前,缓冲区不显示任何响应给用户
。对于较长的和较复杂的脚本,用户可能要被迫等待很长一段时间才能看到这一
页。

默认情况下,缓冲区对于 ASP 应用程序是关闭的。可以使用 Internet 服务管理
器为整个 ASP 应用程序打开缓冲区。详细信息,请参阅 配置 ASP 应用程序。


允许代理服务器缓存页

通过代理服务器,应用程序可以发送页给用户。代理服务器 代替用户浏览器从
Web 站点请求网页。代理服务器缓存 HTML 页以便相同页的重复请求能够快速有
效地返回给浏览器。代理服务器执行请求并缓存网页,并减轻网络和 Web 服务器
的负荷。

尽管缓存对 HTML 页都能很好运行,但对包含动态生成信息的 ASP 页则不尽人意
。例如,报告股市行情或显示大量业务的存货清单需要提供即时信息。一小时前
的信息对目前来讲是很不准确的。如果应用程序返回个人的信息,例如,自定义
的主页,希望用户不能看到另一个用户的个人信息。

默认情况下,ASP 命令代理服务器自己不能缓存 ASP 页(尽管缓存图像、位图、
小型应用程序,和其他缓存页上的参考项)。可以使用 Response.CacheControl
 属性设置缓存控制 HTTP 标题字段允许缓存某一页。Response.CacheControl 的
默认值是字符串 "Private",它避免代理服务器缓存此页。要允许缓存,可将缓
存控制标题字段设置为 Public:

<% Response.CacheControl = "Public" %>

因为在任何页的内容被发送之前,HTTP 标题必须被送给浏览器或代理服务器,所
以,可在任何 HTML 标记之前设置 Response.CacheControl 属性或使用 Respon
se.Buffer 缓存此页。

缓存控制标题字段是 HTTP 1.1 规格的一部分。在只支持 HTTP 1.0 的代理服务
器上不能缓存 ASP 页,因为没有到期的标题字段发送。

避免浏览器缓存页

每一个浏览器版本都有它自己的规格来规定是否缓存页。要避免浏览器缓存 ASP
 页,可使用 Response.Expires 设置到期标题:

<% Response.Expires = 0 %>

值为 0 强迫缓存页到期。因为在任何页被发送之前,HTTP 标题必须被送给浏览
器,所以可通过将 Response.Expires 属性放在 HTML 标记之前或使用 Respons
e.Buffer 缓存该页。

创建动态通道

Internet Explorer 4.0 有一个新的特性,Web 规划人员可以使用该属性将带有
公用主题的 Web 页并入一个通道。在浏览器中,通道被显示在通道标题栏上;用
户通过单击图标访问通道。通道在后台自动更新;用户不必访问站点就可以在自
己的浏览器上下载最新的页。通道为用户提供了一条浏览一组相关的 Web 页的快
速而直接的通路,并且这些 Web 页是自动更新的。

使用 ASP,可以编写脚本来收集用户的首选项,然后动态地创建通道。通道定义
文件 (.cdf) 建立了通道内容的组织和顺序。在 .cdf 文件中的命令使用与 HTM
L 标记相同的语法,以便于掌握和从脚本中生成。在编写 ASP 脚本来创建通道定
义文件时,脚本用 .cdx 扩展名。当 ASP 读取一个以 .cdx 为扩展名的文件时,
将自动发送 application/x-cdf 内容类型,它告诉浏览器用通道定义来解释字节
。如果不使用 .cdx 作扩展名,则脚本必须用 Response.ContentType 手工将内
容类型设置为 application/x-cdf。

下面是一个有关如何使用通道的示例。下面的 HTML 表格要求用户选择通道。提
交时,该表格调用 .cdx 文件的脚本去创建通道的定义。

<P> Choose the channels you want. </P>

<FORM METHOD="POST" ACTION="chan.cdx">

<P><INPUT TYPE=CHECKBOX NAME=Movies> Movies

<P><INPUT TYPE=CHECKBOX NAME=Sports> Sports

<P><INPUT TYPE="SUBMIT" VALUE="SUBMIT">

</FORM>

Chan.cdx 中的脚本根据与请求一起提交的表格的值创建通道定义。

<% If Request.Form("Movies") <> "" Then %>

<CHANNEL>

channel definition statements for the movie pages

</CHANNEL>

<% End If %>

<% If Request.Form("Sports") <> "" Then %>

<CHANNEL>

channel definition statements for the sports pages

</CHANNEL>

<% End If %>

有关通道和通道定义文件的信息,请参阅 Exploration Air 范例站点。

向服务器发送文件

浏览器可以使用 Posting Acceptor 应用程序将文件发送给 Web 服务器。当 Po
sting Acceptor 上载文件时,将发送列出每一个收到的文件名称和位置的 URL-
encoded 表格字段。可以将邮递处理的 URL 添加到脚本中,此脚本上载文件去调
用 ASP 脚本来处理这些字段名。例如,可以编写一个脚本,自动地通过文件的名
称和位置发送 e-mail 给系统管理员。有关 Posting Acceptor 的详细信息,包
括 ASP 脚本示例,请参阅 Posting Acceptor。



----------------------------------------------------------------------
----------

向浏览器传送脚本

尽管 ASP 主要用来创建和处理服务器端脚本,还是可以使用它生成由客户浏览器
处理的客户端脚本来扩展其效用。通过组合传送到浏览器的脚本命令可以编写服
务器端脚本。

通过组合由 HTML 注释括起来的客户端脚本和由定界符括起来的服务器端脚本可
以做到这一点:

<SCRIPT LANGUAGE="VBScript">

<!--

client script

<% server script %>

client script

<% server script %>

client script

...

-->

</SCRIPT>

使用脚本语言的这个功能,您能够创建令人兴奋的应用程序。举例来说,下面的
脚本将生成在用户的 Web 浏览器上运行的客户脚本的子程序。

<%

ServerTime = Time

ServerDate = Date

For i = 1 to 4

Randomize

GreetCondition = int(rnd * 3)

%>

<SCRIPT LANGUAGE="VBScript">

<!--

Sub ServeInfo<%= i %>()

Select Case <%= GreetCondition%>

Case 0

Msg = "Hello, the time is <%= ServerTime %>."

Case 1

Msg = "Welcome! Today's date is <%= ServerDate %>."

Case 2

Msg = "Hi, the time is <%= ServerTime %> and the date is <%= ServerDat
e %>.

End Select

Document.Write Msg

End Sub

ServeInfo<%= i %>()

//-->

</SCRIPT>

<br>

<%

Next

%>

在以上的脚本中,ASP 在服务器上检索时间和日期信息,然后通过几次循环生成
在用户的 Web 服务器上运行的子程序。每个客户端子程序提出随机选择的问候,
显示时间和日期信息。

这种脚本可扩展,例如,将配置信息检索并提交到指定的客户端脚本或组件,如
 ActiveX 控件。灵活地使用这种脚本的编写技巧,同样可以加快 Web 服务器处
理和返回用户信息请求的速度。


--



日出东方,唯我不败;
    天上地下,唯我独尊。

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.72]
--
※ 转载:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.4]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店