首页 | 免费域名 | 个人服务器 | 一流信息监控拦截系统 | 虚拟主机知识库 | ASP 空间 | ASP技术大全 | 下载中心 | 客户服务中心
  7i24 > ASP技术大全 > ASP快速入门(微软版) >
    7i24 .Com  
  将内容发送到浏览器

7i24.Com不停为您服务
将内容发送到浏览器
与在 ASP 页中处理的脚本一样,任何未包括在 ASP 分隔符或 <SCRIPT> 标记内的文本或图形仅返回到浏览器。使用 Response 对象,还可以将内容明确地发送到浏览器。

发送内容
要将 ASP 分隔符或过程中的内容发送到浏览器,可使用 Response 对象的 Write 方法。例如,根据用户此前是否访问过该页,下列语句给用户发送不同的问候:

<%
If blnFirstTime Then
Response.Write "<H3 ALIGN=CENTER>欢迎进入概述页。</H3>"
Else
Response.Write "<H3 ALIGN=CENTER>欢迎返回概述页。</H3>"
End If
%>
在过程之外,不必使用 Response.Write 将内容发回给用户。脚本分隔符以外的内容将直接发送到浏览器,浏览器于是格式化并显示该内容。例如,下面的脚本产生的输出结果与前面的脚本一样:

<H3 ALIGN=CENTER>
<% If blnFirstTime Then %>
欢迎进入概述页。
<% Else %>
欢迎返回概述页。
<% 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 表单中发送的值(请参阅处理用户输入)。

注意 “&”符号是 VBScript 的连字符。下划线 (_) 是 VBScript 的行连接字符。

设置内容类型
当 Web 服务器将某个文件返回给浏览器时,它告诉浏览器在文件中包含了什么类型的内容。这样,浏览器就可以确定是自己就能显示文件,还是必须调用其他应用程序。例如,如果 Web 服务器返回一个 Microsoft Excel 工作表,浏览器必须启动一个 Microsoft Excel 的副本来显示该页。Web 服务器通过将文件扩展名映射到 MIME(多用途网际邮件扩充协议)类型列表,从而识别文件的类型。例如,要启动 Microsoft Excel,浏览器需要识别 application/vnd.ms-excel MIME 类型。

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

<% Response.ContentType = "application/x-cdf" %>
有关频道的详细信息,请参阅本主题中的创建动态频道。

其他通用内容类型是 text/plain (用于返回文本而不是 HTML 语句的内容),image/gif (用于 GIF 图像),image/jpeg (用于 JPEG 图像),video/quicktime (用于 Apple QuickTime 格式的视频电影)以及 text/xml (用于 XML 文档)。另外,Web 服务器或 Web 浏览器还可以支持自定义的 MIME 类型。要查看已经由 Microsoft Web 服务器定义的内容类型,请使用 Internet 信息服务管理单元 来打开 Web 站点的属性表,单击“HTTP 头”选项卡,然后单击“文件类型”选项卡。这些文件类型可以在您使用 ASP 手工设置内容类型时作为参考。

重定向浏览器
并不是将内容发送到用户,您可以使用 Redirect 方法重定向浏览器到其他 URL。例如,如果想要保证用户从主页中输入应用程序从而接收到一个客户 ID 号,这样您就可以检查他们是否有一个客户 ID 号;如果没有,您可以将他们重定向到主页上。

<%
If Session("CustomerID") = "" Then
Response.Redirect "Register.asp"
End If
%>
在所有内容发送到用户之前对服务器端脚本进行处理被称为“缓冲”。ASP 允许您打开或关闭缓冲功能,并且这一配置对 Redirect 方法有很大的影响。特别是如果您将缓冲关闭,则必须在页面的 HTTP 头被送回到浏览器时重定向浏览器。

将语句 Response.Redirect 置于页面的顶部,在所有的文本或 <HTML> 标签之前,确保不向浏览器返回任何内容。如果在内容或头部返回到浏览器之后使用 Response.Redirect,就会看到一条错误消息。还需注意的是:Response.Redirect 后面并不一定需要一个 Response.End。

如果要在页面中间使用 Response.Redirect,请与 Response.Buffer 属性一起使用,具体方法参见本主题中缓冲内容部分。

在 .ASP 文件之间传输
使用 Response.Redirect 重定向请求 round-trip 的浏览器,这意味着服务器将一个 HTTP 响应发送给浏览器指示新 URL 的地址。浏览器自动保留服务器的请求队列并为该 URL 发送一个新的 HTTP 请求。然后,服务器将该请求连同一起到达的其他客户端的请求添加到请求队列。对于工作繁忙的 Web 站点,来回往返既浪费带宽又降低服务器的性能,特别是在将浏览器重定向到位于同一个服务器上的文件时。

可以使用 Server.Transfer 方法而不是 Response.Redirect 方法从一个 .asp 文件传输到位于同一服务器上的另一个文件中。使用 Server.Transfer 可以直接传输 .asp 文件请求而不必离开服务器队列,这样可以节省昂贵的往返费用。

例如,下面的脚本演示了如何使用 Server.Transfer 在依赖于状态信息的应用程序页面之间跳转:

<%
If Session("blnSaleCompleted") Then
Server.Transfer("/Order/ThankYou.asp")
Else
Server.Transfer("/Order/MoreInfo.asp")
End if
%>

Server.Transfer 将请求从一个正在执行的 .asp 文件发送到另一个文件中。在传输过程中,原来请求的 .asp 文件立即终止执行,但并不清除输出缓冲(详细信息,请参阅缓冲内容部分)。请求信息然后在目标文件中变得可用并开始执行。在执行过程中,该文件与原来请求的文件访问同一组内部对象(Request、Response、Server、Session 和 Application)。

还可以使用 Server.Transfer 在位于不同应用程序的 .asp 文件之间传输。然而,当传输到位于其他应用程序的 .asp 文件时,从该文件的运行方式来看,似乎该文件就是启动该传输过程的应用程序的一部分(也就是说,该文件只访问作用于初始应用程序的变量,而不是访问文件实际上所处的应用程序的变量)。例如,如果从位于 Sales 应用程序的文件中传输到位于 Personnel 应用程序的一个文件中,则 Sales 应用程序将有效地从 Personnel 应用程序中借用和运行该文件,从运行方式来看,仿佛该文件就是 Sales 应用程序的一部分。

ASP 还提供 Server.Execute 命令,可以用来传输给文件、执行其内容,然后再返回到启动传输的文件。如果熟悉 VBScript,这样就有助于将 Server.Execute 与过程调用进行类比,只不过是过程调用执行一个过程,而 Server.Execute 则是执行一个完整的 .asp 文件。

例如,下面的脚本演示了如何使用 Server.Execute 来进行 .asp 文件的动态包含:

<%
 .
 .
 .
If blnUseDHTML Then
Server.Execute("DHTML.asp")
Else
Server.Execute("HTML.asp")
End If
 .
 .
 .
%>

只要目标文件属于同一服务器上的某个应用程序,原始应用程序将转到该文件并执行它的内容,然后继续执行启动转换的那个文件。正象 Server.Transfer 一样,被执行的 .asp 文件的行为就象它是原始应用程序的一部分。但是,Server.Execute “无法”通过服务器工作。详细信息,请参阅 Server.Execute。

缓冲的内容
默认情况下,Web 服务器在所有内容被发送到用户之前先处理页上所有的脚本命令。这个处理过程被称为“缓冲”。您可以使用“Response”对象的“Buffer”属性来禁用缓冲,这样 Web 服务器将在处理页面的时候随时返回 HTML 和脚本结果。

缓冲 .asp 文件的优势在于您可以在可能的情况下(如脚本处理不正确或用户没有适当的安全证书)中止发送 Web 页。这时候,您可以使用 Server.Transfer 将用户转移到其他页上,或者使用“Response”对象的“Clear”方法清除缓冲区,以便向用户发送不同的内容。根据应用程序的不同,可能需要在进行转移之前使用“Clear”方法。下面的示例使用了这两种方法:

<HTML>
<BODY>
 .
 .
 .
 <%
If Request("CustomerStatus") = "" Then
Response.Clear
Server.Transfer("/CustomerInfo/Register.asp")
Else
Response.Write "欢迎" & Request("FirstName") & "归来!"
  .
  .
  .
End If
 %>
</BODY>
</HTML>
您还可以使用“Response.Buffer”以防止 Web 服务器在脚本修改 HTTP 头之前返回该头部。某些属性和方法,例如“Response.Expires”和“Response.Redirect”,可以用来修改 HTTP 头。

如果脚本的“Buffer”属性设置为“TRUE”,并且没有调用“Flush”方法将缓冲的内容立即发送到浏览器,那么服务器将保留客户端发出的“保持”请求。用这种方法编写脚本的好处在于服务器的性能得到了提高,这是因为服务器不必为每一个客户端请求都创建新连接(假定服务器、客户端和代理服务器都支持“保持”请求。)然而,这种方法的一个潜在的缺点是,缓冲阻止了服务器的响应发送给用户,直到服务器完成整个脚本的处理。对于又长又复杂的脚本,用户在看见页面之前可能会经历漫长的等待过程。

默认情况下,对 ASP 应用程序开启缓冲功能。当然,您可以用 Internet 信息服务管理单元 对整个 ASP 应用程序关闭缓冲功能。详细信息,请参阅配置 ASP 应用程序。

允许代理服务器高速缓存页
您的应用程序可能会通过“代理服务器”将页面发送到客户。代理服务器代表客户端浏览器向 Web 服务器请求页面。代理服务器高速缓存 HTML 页,这样对同一页的重复请求就会迅速高效地返回到浏览器。用代理服务器处理请求并高速缓存页面可以减少网络和 Web 服务器的负载。

虽然对于许多 HTML 页来说高速缓存能很好地工作,但对于包含经常更新信息的 ASP 页来说,高速缓存常常不能很好地工作。例如,用来报告股市行情或显示大宗业务库存清单的页面必须提供实时信息。这些信息即使仅仅过去一个小时就可能变得不精确。如果应用程序返回的是个人信息,如自定义主页,您可能要确保没有用户看见其他用户的个人信息。

默认情况下,ASP 指示代理服务器不要高速缓存 ASP 页本身(虽然页中所引用的图象、图象映射、小程序和其他项目已经被缓存)。使用“Response.CacheControl”属性设置 Cache-Control HTTP 头字段,就可以允许高速缓存特定页。Response.CacheControl 的默认值是字符串“Private”,它防止代理服务器高速缓存页。要允许进行高速缓存,请将 Cache-Control 头字段设置成“Public”:

<% Response.CacheControl = "Public" %>
由于必须在发送任何页之前将 HTTP 头发送给浏览器或代理服务器,所以可以将“Response.CacheControl”属性置于所有 HTML 标记的前面,如果禁用了缓冲,还可以使用“Response.Buffer”来缓冲该页。

Cache-Control 头字段是 HTTP 1.1 规范的一部分。ASP 页不在只支持 HTTP 1.0 的代理服务器上进行高速缓存,这是因为没有发送 Expires 头字段。

防止浏览器高速缓存页
每一个浏览器版本对于是否高速缓存页都有其自己的规则。要防止浏览器高速缓存页,可使用“Response.Expires”设置 Expires 头:

<% Response.Expires = 0 %>
值 0 强制高速缓存的页立即过期。由于必须在发送任何页之前将 HTTP 头发送给浏览器,所以可以将“Response.Expires”属性置于所有 HTML 标记之前,也可以缓冲该页。

创建动态频道
“频道”是由 Microsoft Internet Explorer 4.0 或更高版本提供的一项 Web 技术,通过它您可以自动将新的或更新过的 Web 内容发送给用户。频道可以安排好用户的计算机,使之定期连接到服务器并检索更新信息。(此检索过程通常又被称为“客户端拉”,因为信息是从服务器上“拉”过来的,或说聚集起来的。)当指定的 Web 站点上提供有新的信息时,内容将下载到浏览器高速缓存中供脱机浏览用。灵活地使用频道分发基于 Web 的信息(特别在 Intranet 上)有助于集中信息并减少服务器通信量。有关频道的详细信息,请访问位于 http://www.microsoft.com/windows/ie/ 的 Microsoft Internet Explorer Web 站点。

使用 ASP,您可以编写脚本通过生成“频道定义文件”来动态创建频道。基于 XML 的频道定义文件 (.cdf) 描述了频道内容的体系结构和更新时间表。.cdf 文件中的命令使用与 HTML 标记相似的语法,因此很容易学习并从脚本中生成该文件。当编写服务器端脚本来创建频道定义文件时,文件应使用 .cdx 扩展名。当 ASP 读取带有 .cdx 扩展名的文件时,它自动发送 application/x-cdf 内容类型,以便通知浏览器将字节解释为频道定义。如果没有使用 .cdx 扩展名,您必须使用“Response.ContentType”手工将内容类型设置成 application/x-cdf。

这里是一个如何使用频道的示例。下面的 HTML 表单要求用户选择频道。提交时,该表单调用 .cdx 文件中的脚本创建频道定义。

<P>选择想要的频道。</P>
<FORM METHOD="POST" ACTION="Chan.cdx">
<P><INPUT TYPE=CHECKBOX NAME=Movies> 电影
<P><INPUT TYPE=CHECKBOX NAME=Sports> 运动
<P><INPUT TYPE="SUBMIT" VALUE="SUBMIT">
</FORM>
Chan.cdx 中的脚本根据随请求提交的表单值来构造频道定义。

<% If Request.Form("Movies") <> "" Then %>
<CHANNEL>
用于电影页面的频道定义语句
</CHANNEL>
<% End If %>

<% If Request.Form("Sports") <> "" Then %>
<CHANNEL>
用于运动页面的频道定义语句
</CHANNEL>
<% End If %>
使用 WebDAV 访问服务器资源
分布式创作与版本管理 (WebDAV) 是 HTTP 1.1 协议的一个功能强大的扩充,通过 HTTP 连接将将 Web 文件存储媒体,类似于本地文件系统。WebDAV 强烈承诺将 Web 带入一个无缝的、协作的创作环境。在 IIS 5.0 中实施 WebDAV 后,可以允许远程作者对 Web 服务器上的文件和目录进行创建、删除、移动、搜索或应用属性。详细信息,请参阅 WebDav 发布。



  2002年1月3日  阅读 2929 次  发送此页给朋友  来源:    版权争议  删除

相关文章:   近期热点:

上一篇: 置对象作用域
下一篇: 包含文件
返回上一层...
搜索:

(C)2004-2022 7i24.Com 保留所有权利