asp教程七:包含文件
SSI 指令為用戶提供在 Web 服務(wù)器處理之前將一個(gè)文件的內(nèi)容插入到另一個(gè)文件的方法。ASP 只使用這一機(jī)制的 #include 指令。要在 .asp 文件中插入一個(gè)文件,使用下面的語法:
<!--#include virtual | file ="filename"-->
virtual 和 file 關(guān)鍵字指示用來包含該文件的路徑的類型,filename 是您想包含的文件的路徑和名稱。
被包含文件不要求專門的文件擴(kuò)展名;但是,為被包含文件賦予 .inc 擴(kuò)展名以便和其他類型文件相區(qū)分是一個(gè)良好的編程習(xí)慣。
使用 Virtual 關(guān)鍵字
使用 Virtual 關(guān)鍵字指出路徑開始于虛擬目錄。例如,如果一個(gè)被命名為 Footer.inc 的文件屬于一個(gè)名為 /Myapp 的虛擬目錄,則下面的一行將把 Footer.inc 的內(nèi)容插入到包含該行的文件中:
<!--#include virtual ="/myapp/footer.inc"-->
使用 File 關(guān)鍵字
使用 file 關(guān)鍵字指示使用相對(duì)路徑。相對(duì)路徑開始于含有該包含文件的目錄。例如,如果您的文件位于目錄 Myapp 中,而文件 Header1.inc 在 Myapp\Headers 中,下面的一行將把 Header1.inc 插入到您的文件中:
<!--#include file ="headers/header1.inc"-->
注意,到被包含文件 Headers/header1.inc 的路徑是相對(duì)于包含文件的;如果包含 #include 語句的腳本不在 /Myapp 目錄中,那么該語句將不起作用。
如果在 Internet 服務(wù)管理器中的“啟用上層目錄”選項(xiàng)被選中,則也可以使用 file 關(guān)鍵字和 ../ 語法包含父目錄即上一層目錄中的文件。有關(guān)命令,請(qǐng)參閱 配置 ASP 應(yīng)用程序。
被包含文件的位置
被包含文件可以在您的 Web 站點(diǎn)內(nèi)的某個(gè)目錄中,也可以在您的 Web 站點(diǎn)之外。通常,您應(yīng)該使被包含文件位于 Web 站點(diǎn)的目錄中。如果一個(gè)被包含文件位于您的 Web 站點(diǎn)內(nèi),則當(dāng)瀏覽器下次請(qǐng)求包含文件時(shí),將顯示對(duì)被包含文件的改變。但是,如果被包含文件位于您的 Web 站點(diǎn)之外,直到 ASP 應(yīng)用程序重新啟動(dòng)或 Web 服務(wù)器重新啟動(dòng)時(shí),這種改變才能體現(xiàn)出來。ASP 檢測(cè)在應(yīng)用程序命名空間中(在應(yīng)用程序的起始目錄下)的任何包含文件的改變。
包含文件:提示和警告
一個(gè)被包含文件也可以包含其他的文件。如果 #include 指令沒有導(dǎo)致循環(huán),一個(gè) .asp 文件可以多次包括同一個(gè)文件。例如,如果文件 First.asp 包含文件 Second.inc,則 Second.inc 一定不能再包含 First.asp。一個(gè)文件也不能包含自身。ASP 檢測(cè)此類循環(huán)或嵌套錯(cuò)誤,并在檢測(cè)到時(shí)產(chǎn)生一個(gè)錯(cuò)誤消息,同時(shí)停止處理被請(qǐng)求的 .asp 文件。
ASP 在執(zhí)行腳本命令之前包含文件。因此,不能用腳本命令去創(chuàng)建被包含文件的名稱。例如,下面的腳本將不能打開 Header1.inc,因?yàn)?ASP 會(huì)在它分配一個(gè)文件名給變量 name 之前先執(zhí)行 #include 指令。
<!-- This script will fail -->
<% name=(header1 & ".inc") %>
<!--#include file="<%= name %>"-->
腳本命令和過程必須完全包含在腳本定界符 <% 和 %> 、HTML 標(biāo)記 <SCRIPT> 和 </SCRIPT> 或 HTML 標(biāo)記 <OBJECT> 和 </OBJECT> 中。也就是說,不能在一個(gè) .asp 包含文件中打開一個(gè)腳本定界符,然后在一個(gè)被包含的文件中才關(guān)閉該定界符;腳本或腳本命令必須是一個(gè)完整的單元。例如,下面的腳本將無法運(yùn)行:
<!-- This script will fail -->
<%
For i = 1 To n
statements in main file
<!--#include file="header1.inc" -->
Next
%>
下面的腳本將正常運(yùn)行:
<%
For i = 1 to n
statements in main file
%>
<!--#include file="header1.inc" -->
<% Next %>
--------------------------------------------------------------------------------
使用 HTML 表格
使用 ASP Request 對(duì)象,您可以創(chuàng)建一個(gè)簡(jiǎn)單而功能強(qiáng)大的腳本來收集和處理 HTML 表格數(shù)據(jù)。在本主題中,您將不僅學(xué)會(huì)如何創(chuàng)建基本的表格處理腳本,而且還將獲得用于驗(yàn)證 Web 服務(wù)器和用戶瀏覽器上的表格信息的一些有用技術(shù)。
關(guān)于 HTML 表格
HTML 表格是收集 Web 信息最常用的方法,是在 Web 頁上提供用戶界面控件的特殊的 HTML 標(biāo)記的排列。文本框、按鈕和復(fù)選框都是典型的控件,這些控件使用戶和 Web 頁實(shí)現(xiàn)交互,并且將信息提交給 Web 服務(wù)器。
下面的 HTML 示例產(chǎn)生一個(gè)表格,在表格中,用戶可以輸入姓名、年齡并包含一個(gè)將這些信息提交給 Web 服務(wù)器的按鈕。該表格也包含了一個(gè)隱含的控件(Web 瀏覽器不顯示),可以用該控件向 Web 瀏覽器傳遞附加信息。
<FORM METHOD="POST" ACTION="myfile.asp">
<INPUT TYPE="text" NAME="firstname">
<INPUT TYPE="text" NAME="lastname">
<INPUT TYPE="text" NAME="age">
<INPUT TYPE="hidden" NAME="userstatus" VALUE= "new">
<INPUT TYPE="submit" VALUE="Enter">
</FORM>
處理 ASP 輸入的表格
在表格向 Web 服務(wù)器提交信息時(shí),用戶的 Web 瀏覽器請(qǐng)求用 HTML <FORM > 標(biāo)記的 ACTION 屬性所指定的 .asp 文件(在前面的例子中,該文件被稱為 Myfile.asp)。.asp 文件包含了處理表格值(如顯示結(jié)果表或從數(shù)據(jù)庫查詢信息)的腳本。
可以通過三種途徑用 .asp 文件收集 HTML 表格的值
靜態(tài)的 .htm 文件可以包含一個(gè)將其數(shù)值郵送給 .asp 文件的表格。
.asp 文件可以創(chuàng)建一個(gè)將其信息郵送給另一個(gè) .asp 文件的表格。
.asp 文件可以創(chuàng)建一個(gè)將其信息郵送給自身的表格,即包含該表格的文件。
前兩個(gè)方法的操作方式相同,當(dāng)表格與網(wǎng)關(guān)程序交互時(shí),除 ASP 之外,可以包含讀取和響應(yīng)用戶選擇的命令。
創(chuàng)建一個(gè)包含表格定義且傳送信息給自身的 .asp 文件較復(fù)雜,但卻是有很強(qiáng)功能的處理表格的方法。這一過程在 驗(yàn)證表格輸入 中演示。
獲得表格輸入
ASP Request 對(duì)象提供了兩種集合,在很大程度上簡(jiǎn)化了檢索附加在 URL 請(qǐng)求上的表格信息的任務(wù)。
QueryString 集合
QueryString 集合獲取作為跟在請(qǐng)求的 URL 的問號(hào)后面的文本傳遞給 Web 服務(wù)器的值。通過使用 HTTP GET 方法或手工將表格的值添加到 URL,表格的值可以被附加在請(qǐng)求的 URL 之后。
例如,如果先前的表格示例使用 GET 方法 (ACTION = "GET") 且用戶鍵入 Jeff、Smith 和 30,那么下面的 URL 請(qǐng)求將被發(fā)送給服務(wù)器:
[url]http://scripts/Myfile.asp?firstname=Jeff&lastname=Smith&age=30&userstatus=new[/url]
Myfile.asp 包含下面的表格處理腳本:
Hello, <%= Request.QueryString("firstname") %> <%= Request.QueryString("lastname") %>.
You are <%= Request.QueryString("age") %> years old.
<%
If Request.QueryString("userstatus") = "new user" then
Response.Write"This is your first visit to this Web site!"
End if
%>
在這種情況下,Web 服務(wù)器將返回下面的文本給用戶的 Web 瀏覽器:
Hello, Jeff Smith. You are 30 years old. This is your first visit to this Web site!
QueryString 集合有一個(gè)可選參數(shù),可用來訪問顯示在請(qǐng)求正文中的多個(gè)值中的一個(gè)。也可以使用 Count 屬性計(jì)算一個(gè)特殊類型的值的出現(xiàn)次數(shù)。
例如,表格包含一個(gè)多項(xiàng)目的列表框可以提交下面的請(qǐng)求:
[url]http://list.asp?food=apples&food=olives&food=bread[/url]
您也可以使用下面的命令去對(duì)多個(gè)值計(jì)數(shù):
Request.QueryString("food").Count
如果想顯示多個(gè)值的類型,List.asp 應(yīng)包含下面的腳本;
<%Total = Request.QueryString("food").Count%>
<%For i = 1 to Total%>
<%= Request.QueryString("food")(i) %> <BR>
<%Next%>
上述腳本將顯示:
apples
olives
bread
Form 集合
當(dāng)使用 HTTP GET 方法去向 Web 服務(wù)器傳遞長而復(fù)雜的表格值時(shí),將可能丟失信息。大多數(shù)的 Web 服務(wù)器傾向于嚴(yán)格控制 URL 查詢字符串的長度,以便用 GET 方法傳送的冗長的表格值被截?cái)唷H绻枰獜谋砀癜l(fā)送大量信息到 Web 服務(wù)器,就必須使用 HTTP POST 方法。此法用于在 HTTP 請(qǐng)求正文中發(fā)送表格數(shù)據(jù),而且發(fā)送的字符的個(gè)數(shù)可以無限多。也可以使用 ASP Request 對(duì)象的 Form 集合檢索用 POST 方法發(fā)送的值。
Form 集合與 QueryString 集合存儲(chǔ)數(shù)值的方式相同。例如,如果用戶用一長串名稱填充表格,您就可以用下面的腳本檢索這些名稱:
<% For i = 1 to Request.Form.Count %>
<% =Request.Form("names")(i) %>
<% Next %>
驗(yàn)證表格輸入
一個(gè)好的表格處理腳本在處理數(shù)據(jù)前,應(yīng)先驗(yàn)證輸入表格的信息是否有效。驗(yàn)證腳本可以檢驗(yàn)用戶輸入到表格的信息類型是否正確。例如,如果您的 Web 站點(diǎn)包含一個(gè)表格,該表格允許用戶計(jì)算財(cái)務(wù)信息,那么在處理結(jié)果之前,需要驗(yàn)證用戶確實(shí)輸入了數(shù)值信息而不是文本。
一個(gè)非常方便的驗(yàn)證表格輸入的方法是創(chuàng)建一個(gè)向自身傳遞信息的表格。在這種情況下,.asp 文件包含可獲取信息的表格。例如,下面的腳本通過向自身傳遞信息來驗(yàn)證用戶是否在 "age" 表格字段中輸入了數(shù)值:
<% If Isnumeric(Request.QueryString("Age")) then %>
<p>Hello, your age is <%=Request.QueryString("age")%>
<%Else %>
<p>Please enter a numerical age.
<%End If %>
<FORM METHOD= "POST" ACTION="verify.asp" >
Name: <INPUT TYPE="text" NAME="Name" >
Age: <INPUT TYPE="text" NAME="Age" >
<INPUT TYPE="submit" VALUE="Enter">
</FORM>
在這個(gè)例子中,腳本也在包含表格的同一 Verify.asp 文件中。表格通過在 ACTION 屬性中指定 Verify.asp 向自身傳送信息。
您也可以創(chuàng)建客戶端腳本來檢驗(yàn)用戶是否輸入了有效的信息。驗(yàn)證用戶在 Web 瀏覽器上的輸入除了更迅速地向用戶提示表格項(xiàng)錯(cuò)誤外,還可以減少 Web 服務(wù)器的網(wǎng)絡(luò)流量。下面的腳本運(yùn)行在用戶的 Web 瀏覽器上,在將信息提交到 Web 服務(wù)器之前,驗(yàn)證用戶信息。
<SCRIPT LANGUAGE="VBScript">
<!--
Sub btnEnter_OnClick
Dim TheForm
Set TheForm = Document.MyForm
If IsNumeric(TheForm.Age.Value) Then
TheForm.submit
Else
Msgbox "Please enter a numerical age."
End if
End Sub
//-->
</SCRIPT>
<FORM METHOD= "POST" NAME= MyForm ACTION="myfile.asp" >
Name: <INPUT TYPE="text" NAME="Name" >
Age: <INPUT TYPE="text" NAME="Age" >
<INPUT TYPE="button" NAME="btnEnter" VALUE="Enter">
</FORM>
本文轉(zhuǎn)自starger51CTO博客,原文鏈接:?http://blog.51cto.com/starger/17126,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的asp教程七:包含文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Simple Web Server
- 下一篇: 神马搜索聚焦大数据营销 汇川广告平台 快
