程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP入門教程 >> ASP系列講座(十二)向浏覽器發送內容

ASP系列講座(十二)向浏覽器發送內容

編輯:ASP入門教程
在處理 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>"

設置內容的類型
當 Web 服務器將文件返回給浏覽器時,會同時告訴浏覽器文件中包含的內容的類型。這使浏覽器能夠決定是否它能自己顯示文件或必須調用另一個應用程序。例如,如果網絡服務器返回 Microsoft Excel 表格,則浏覽器必須調用 Microsoft Excel 的副本顯示此頁。Web 服務器通過將文件的擴展名映射到 MIME 類型表來識別文件類型。

可以使用 Response 對象的 ContentType 屬性為發送給用戶的內容設置 HTTP 內容類型字符串。例如,下面的命令為通道定義設置內容類型:

<% Response.ContentType = "application/x-cdf" %> 
有關通道的詳細信息,請參閱本主題中的“創建動態通道”。

其他的通用內容類型是 text/plain(用於作為文本內容返回而不是已解釋的 Html 語句)、text/gif(用於 GIF 圖像)和 video/quicktime(用於 Apple QuickTime&reg; 格式的電影)。一套標准的 MIME 類型已經定義,另外,Web 服務器或 Web 浏覽器都支持 MIME 類型。要想查看您的 Microsoft Web 服務器支持哪些內容類型,可使用 Internet 服務管理器打開您的 Web 站點的屬性頁,單擊“HTTP 標題”選項卡,然後單擊“文件類型”選項卡。

重定向浏覽器
用 Redirect 方法可將浏覽器重定向到另一個 URL,而不是將內容發送給用戶。例如,如果您想確認用戶是否已從主頁進入了您的應用程序,以便能收到一個客戶 ID,則可以檢驗他們是否有客戶 ID 號;如果沒有,就可以將其重定向到主頁。

<%
If session("CustomerID") = 0 Then
  Response.Redirect "homepage.ASP" 
End If
%> 
除非緩沖區已經打開,否則,在任何內容或標題返回給浏覽器之前,您必須重定向浏覽器。將 Response.Redirect 語句放在頁的頂部和<Html> 標記之前可確保沒有任何內容返回給浏覽器。如果在返回給浏覽器的內容或標題後使用 Response.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 應用程序打開緩沖區。

允許代理服務器緩存頁
通過代理服務器,應用程序可以發送頁給用戶。代理服務器代替用戶浏覽器從 Web 站點請求網頁。代理服務器緩存 Html 頁以便相同頁的重復請求能夠快速有效地返回給浏覽器。代理服務器執行請求並緩存網頁,並減輕網絡和 Web 服務器的負荷。

盡管緩存對 Html 頁都能很好運行,但對包含動態生成信息的 ASP 頁則不盡人意。例如,報告股市行情或顯示大量業務的存貨清單需要提供即時信息。一小時前的信息對目前來講是很不准確的。如果應用程序返回個人的信息,例如,自定義的主頁,希望用戶不能看到另一個用戶的個人信息。

默認情況下,ASP 命令代理服務器自己不能緩存 ASP 頁(盡管緩存圖像、位圖、小型應用程序,和其他緩存頁上的參考項)。可以使用 Response.CacheControl 屬性設置緩存控制 HTTP 標題字段允許緩存某一頁。Response.CacheControl 的默認值是字符串 "PRivate",它避免代理服務器緩存此頁。要允許緩存,可將緩存控制標題字段設置為 Public:

<% Response.CacheControl = "Public" %>
因為在任何頁的內容被發送之前,HTTP 標題必須被送給浏覽器或代理服務器,所以,可在任何 Html 標記之前設置 Response.CacheControl 屬性或使用 Response.Buffer 緩存此頁。

緩存控制標題字段是 HTTP 1.1 規格的一部分。在只支持 HTTP 1.0 的代理服務器上不能緩存 ASP 頁,因為沒有到期的標題字段發送。

避免浏覽器緩存頁
每一個浏覽器版本都有它自己的規格來規定是否緩存頁。要避免浏覽器緩存 ASP 頁,可使用 Response.Expires 設置到期標題:

<% Response.Expires = 0 %>
值為 0 強迫緩存頁到期。因為在任何頁被發送之前,HTTP 標題必須被送給浏覽器,所以可通過將 Response.Expires 屬性放在 Html 標記之前或使用 Response.Buffer 緩存該頁。

創建動態通道
Internet Explorer 4.0 有一個新的特性,Web 規劃人員可以使用該屬性將帶有公用主題的 Web 頁並入一個通道。在浏覽器中,通道被顯示在通道標題欄上;用戶通過單擊圖標訪問通道。通道在後台自動更新;用戶不必訪問站點就可以在自己的浏覽器上下載最新的頁。通道為用戶提供了一條浏覽一組相關的 Web 頁的快速而直接的通路,並且這些 Web 頁是自動更新的。

使用 ASP,可以編寫腳本來收集用戶的首選項,然後動態地創建通道。通道定義文件 (.cdf) 建立了通道內容的組織和順序。在 .cdf 文件中的命令使用與 Html 標記相同的語法,以便於掌握和從腳本中生成。在編寫 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 %>
向服務器發送文件
浏覽器可以使用 Posting Acceptor 應用程序將文件發送給 Web 服務器。當 Posting Acceptor 上載文件時,將發送列出每一個收到的文件名稱和位置的 URL-encoded 表格字段。可以將郵遞處理的 URL 添加到腳本中,此腳本上載文件去調用 ASP 腳本來處理這些字段名。例如,可以編寫一個腳本,自動地通過文件的名稱和位置發送 e-mail 給系統管理員。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved