![《ASP動態(tài)網(wǎng)頁設(shè)計與應(yīng)用(第2版)》第4章 Request對象與Response對象_第1頁](http://file4.renrendoc.com/view/33f4a6efd62ed6bb5d52db0f22e6fc3c/33f4a6efd62ed6bb5d52db0f22e6fc3c1.gif)
![《ASP動態(tài)網(wǎng)頁設(shè)計與應(yīng)用(第2版)》第4章 Request對象與Response對象_第2頁](http://file4.renrendoc.com/view/33f4a6efd62ed6bb5d52db0f22e6fc3c/33f4a6efd62ed6bb5d52db0f22e6fc3c2.gif)
![《ASP動態(tài)網(wǎng)頁設(shè)計與應(yīng)用(第2版)》第4章 Request對象與Response對象_第3頁](http://file4.renrendoc.com/view/33f4a6efd62ed6bb5d52db0f22e6fc3c/33f4a6efd62ed6bb5d52db0f22e6fc3c3.gif)
![《ASP動態(tài)網(wǎng)頁設(shè)計與應(yīng)用(第2版)》第4章 Request對象與Response對象_第4頁](http://file4.renrendoc.com/view/33f4a6efd62ed6bb5d52db0f22e6fc3c/33f4a6efd62ed6bb5d52db0f22e6fc3c4.gif)
![《ASP動態(tài)網(wǎng)頁設(shè)計與應(yīng)用(第2版)》第4章 Request對象與Response對象_第5頁](http://file4.renrendoc.com/view/33f4a6efd62ed6bb5d52db0f22e6fc3c/33f4a6efd62ed6bb5d52db0f22e6fc3c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第
4章
Request對象與
Response對象
4.1
使用
Request對象提交網(wǎng)頁信息
4.1.1ASP內(nèi)置對象概述為了便于網(wǎng)絡(luò)程序的設(shè)計,ASP
提供六個內(nèi)置對象——Request、Response、Application、
Session、Server
和
ObjectContext
對象,通過這些對象使網(wǎng)站開發(fā)者可以更容易地收集通過瀏覽器請求發(fā)送的信息、響應(yīng)瀏覽器以及存儲用戶信息。由ASP提供的兩個主要內(nèi)置對象——Request對象和Response對象可以直接映射訪問Web
服務(wù)器時客戶端的兩個行為,即發(fā)送信息到客戶端和接收客戶端提交的信息。另外幾個對象則提供了附加功能,對編寫腳本是非常有用的。每個對象都提供了一系列的集合、屬性和方法,這在后續(xù)章節(jié)中將加以介紹。下面簡要說明每一個對象。(1)Request
對象可以使用
Request
對象訪問任何用
HTTP
請求傳遞的信息,包括從
HTML
表格用
POST
方法或
GET
方法傳遞的參數(shù)、cookie
和用戶認證。Request
對象使您能夠訪問發(fā)送給服務(wù)器的二進制數(shù)據(jù),如上載的文件。(2)Response對象可以使用
Response
對象控制發(fā)送給用戶的信息。包括直接發(fā)送信息給瀏覽器、重定向瀏覽器到另一個
URL
或設(shè)置
cookie
的值。(3)Server
對象
Server
對象提供對服務(wù)器上的方法和屬性進行的訪問。最常用的方法是創(chuàng)建
ActiveX
組Server
對象其它的方法可用于將
URL
或
HTML
編碼成字符件的實例
(Server.CreateObject)。
串,將虛擬路徑映射到物理路徑以及設(shè)置腳本的超時期限。(4)Application對象可以使用
Application
對象使給定應(yīng)用程序的所有用戶共享信息。(5)Session對象可以使用
Session
對象存儲特定的用戶會話所需的信息。當用戶在應(yīng)用程序的頁之間跳轉(zhuǎn)時,存儲在
Session
對象中的變量不會清除;而用戶在應(yīng)用程序中訪問頁時,這些變量始終存在。也可以使用
Session
方法顯式地結(jié)束一個會話和設(shè)置空閑會話的超時期限。(6)ObjectContext
對象該對象用于控制
Active
Server
Pages
的事務(wù)處理,可以使用
ObjectContext
對象來提交或撤消由
ASP
腳本初始化的事務(wù)。(由于ObjectContext
對象在網(wǎng)站開發(fā)中使用較少,對于初學(xué)者來說更是如此,因此,本書中不作詳細介紹。)
ASP
六大內(nèi)置對象中,使用得最多的是
Request
對象和
Response
對象,分別用于收集客戶信息和發(fā)送服務(wù)器端數(shù)據(jù)到客戶端。本章中將重點學(xué)習(xí)
Request
對象和
Response對象。146
4.1.2Request對象簡介
Request
對象用于獲取所有從客戶端提交到服務(wù)器的請求信息,
Request
對象提供了
5
種集Form、
Cookies、
ServerVariables
和
ClientCerificate。
合來獲取客戶端的信息,分別是QueryString、
ASP
中,可以通過
Request
對象集合來從瀏覽器、Cookie、HTTP
頭和用戶會話中取得信息。
Request
對象為腳本提供客戶端在請求一個頁面或傳送一個表單時提供的所有信息,這包括能夠標識瀏覽器和用戶的
HTTP
變量,存儲用戶的瀏覽器對應(yīng)的
cookie,以及附在
URL
后面的提交的內(nèi)容(查詢字符串或頁面中<Form>表單中的
HTML控件內(nèi)的值)。
Request
對象使用格式如下:
Request[.集合|.屬性|.方法](參數(shù))
其中,集合、屬性和方法是可選的,當選擇不同的集合、屬性或方法時,要設(shè)置相應(yīng)的參數(shù)。通常,在使用
Request
來獲取信息時,需要寫明使用的集合、屬性或方法,如果沒有寫明,即當寫成
Request(參數(shù))的格式后,ASP
會自動依次按如下順序來獲取信息:
QueryString→Form→Cookies→ServerVariables→ClientCerificate
下面對
Request
對象的集合、屬性和方法進行簡單介紹,然后在本節(jié)的各個任務(wù)中對相應(yīng)內(nèi)容進行詳細說明。
1.Request對象的集合
Request
對象提供了
5
個集合,可以用來獲取客戶端對
Web
服務(wù)器發(fā)送的各類請求信息,如提交的查詢、Cookies、HTTP
報頭值等,表
4-1
給出了這些集合的說明。表4-1
Request對象的集合集合名稱ClientCertificate
說明
當客戶端訪問一個頁面或其他資源時,用來向服務(wù)器表明身份的客戶證書的所有字段或條目的數(shù)值集合,每個成員均是只讀
Cookies
根據(jù)用戶的請求,用戶系統(tǒng)發(fā)出的所有cookie的值的集合,這些cookie僅對相應(yīng)的域有效,每個成員均為只讀
Form
METHOD
的屬性值為
POST
時,所有作為請求提交的<FORM>段中的
HTML
控件單元的值的集合,每個成員均為只讀
QueryString
依附于用戶請求的
URL
后面的名稱/數(shù)值對或者作為請求提交的且
METHOD
屬性為GET(或者省略其屬性)的,或<FORM>中所有HTML控件單元的值,每個成員均為只讀
ServerVariables
隨同客戶端請求發(fā)出的HTTP報頭值,以及Web服務(wù)器的幾種環(huán)境變量的值的集合,每個成員均為只讀
2.Request對象的屬性
TotlBytes
是
Request
對象唯一的屬性,它用于獲取由客戶端發(fā)出的請求的整個字節(jié)數(shù),是一個只讀屬性。TotlBytes
屬性使用得很少,在
ASP
設(shè)計中,通常關(guān)注指定的值而不是客戶端提交的整個內(nèi)容。147
3.Request對象的方法
BinaryRead
是
Request
對象唯一的方法,該方法允許訪問從一個<Form>表單中傳遞給服務(wù)器的用戶請求部分的完整內(nèi)容,用于接收一個<Form>表單的未經(jīng)過處理的內(nèi)容。使用格式如下:
BinaryRead(count)
其中,參數(shù)
count
是所要讀取的字節(jié)數(shù),當數(shù)據(jù)作為<Form>表單
POST請求的一部分發(fā)往服務(wù)器時,從客戶請求中獲得
count
字節(jié)的數(shù)據(jù),返回一個
Variant
數(shù)組。如果
ASP
代碼已經(jīng)引用了
Request.Form集合,BinaryRead方法就不能再使用。同樣,如果用了
BinaryRead方法,就不能訪問
Request.Form集合。
4.1.3QueryString
集合與
Form集合
QueryString集合與
Form集合是
Request
中使用得最多的兩個集合,用于獲取從客戶端發(fā)送的查詢字符串或表單<Form>的內(nèi)容。
1.QueryString
集合
QueryString是獲取查詢字符串的變量值的集合,其使用格式如下:
Request.QueryString(Varible)[(Index).Count]
其中,Varible是在查詢字符串中變量的名稱。當某個變量具有多個值時,使用
Index。當某一變量具有多個值時,Count
指明值的個數(shù)。例如:
strname=Request.QueryString("name")
上面的語句將用戶提交的查詢字符串中變量
name的值賦給
strname。
likecount=Request.QueryString("like").Count
上面的語句將統(tǒng)計用戶提交的查詢字符串中變量
like的值的個數(shù)。
2.Form集合
Form
集合用于獲取在
HTML
的表單<Form>中所有的表單元素內(nèi)容的集合,使用格式如下:
Request.Form(Parameter)[(Index).Count]
Parameter
是在
HTML表單中某一元素的名稱,其中,當某個參數(shù)具有不止一個值(比如,當在<select>中使用
multiple屬性時)時,使用
Index。當某個參數(shù)具有多值時,Count
指明多值個數(shù)。
strpwd=Request.Form("pwd")
上面的語句將用戶以
Post
方式所提交的表單中,名為
pwd的對象內(nèi)容賦值給
strpwd。
4.1.4
客戶端信息的提交在網(wǎng)站開發(fā)中,為了實現(xiàn)用戶與服務(wù)器的動態(tài)交互,通常需要從客戶端瀏覽器向服務(wù)器發(fā)送信息,ASP
中提供了
Request
對象來接受客戶端發(fā)送回來的數(shù)據(jù)。通過該對象,服務(wù)器可148
以獲得客戶端提交的數(shù)據(jù)。一個用戶請求包含從用戶傳遞給
ASP
的信息,產(chǎn)生請求的部分工作就是聲明或者生成一個代表對
ASP
的調(diào)用的
URL,一個
URL一般具有以下語法:
Protocol://host:port/VirtualPath?QueryString
其中,Protocol
表示協(xié)議,用于聲明在遠程機器之間傳送信息的底層機制,可用的協(xié)議包括
http、https、ftp等,本書中使用的都是
http協(xié)議。
host
表示請求要發(fā)送到的遠程機器的名字或者
IP
地址。
port
聲明服務(wù)器要監(jiān)聽請求的機器端口號。對于
http
協(xié)議來說,端口號—般都是
80,這也是當這項參數(shù)空缺時的缺省值。
VirtualPath包含一個以斜線為分隔符的一組標識符,服務(wù)器把它映射到一個物理的路徑和
ASP
頁面的位置。
QueryString是查詢字符串,它是一個成對的名字和值的列表,作為
ASP
的參數(shù)被傳遞到處理它的
ASP
頁面。如果有多個參數(shù)需要傳遞,將會以“&”號分隔開的成對的名字和值,查詢字符串可以想象成傳遞給目標
ASP
的參數(shù)列表,就像是函數(shù)調(diào)用一樣。下面是一個帶有查詢字符串調(diào)用
ASP
的
URL例子:
http://localhost/asptech/Request.asp?p1=val1&
p2=val2
上面的信息在瀏覽器中提交時將被傳遞給本地主機的
80
端口(默認端口),處理該信息的腳本文件為
asptech
目錄下的
Request.asp,查詢字符串是在“?”之后的所有內(nèi)容即“p1=val1&p2=val2”,這里有兩個查詢參數(shù)
p1
和
p2,其值分別為
val1
和
val2。瀏覽器在用戶點擊一個超級鏈接或者提交一個
HTML
表單時都將產(chǎn)生一個請求(HTML
表單會在本節(jié)的后面講到),下面是一個使用超級鏈接產(chǎn)生查詢字符串的語句:
<a
href="qry.asp?str=ASP
教程">ASP
教程</a>
對于上面的語句,在點擊鏈接文字“ASP
教程”時,將產(chǎn)生一個
URL請求,該請求將發(fā)送給文件
hyperlinkquery.asp進行處理,請求中傳遞的參數(shù)是
str,其值為“ASP
教程”。此外,在
ASP
中提交用戶請求時,通常都是由客戶端的網(wǎng)頁產(chǎn)生請求,服務(wù)器端的
ASP
腳本處理請求,所以,在設(shè)計時通常將客戶端網(wǎng)頁與服務(wù)器端腳本分為兩個文件,即可見的前臺網(wǎng)頁文件與處理請求的后臺腳本文件。下面來看一個提交查詢字符串的例子,例子由兩個文件構(gòu)成,分別是前臺網(wǎng)頁文件
qry.htm
和后臺腳本文件
qry.asp。前臺網(wǎng)頁文件
qry.htm內(nèi)容如下:
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="/1999/xhtml">
<head>
<meta
http-equiv="Content-Type"
content="text/html?
charset=utf-8"
/>
<title>提交查詢字符串</title>
</head>
<body>
<!--下面的超鏈接均含有查詢字符串-->149
<a
href="qry.asp?str1=ASP">ASP</a><br>
<a
href="qry.asp?str2=案例教程">案例教程</a><br>
<a
href="qry.asp?str1=ASP&str2=案例教程">ASP
案例教程</a><br>
</body>
</html>
后臺腳本文件
qry.asp內(nèi)容如下:
<%@LANGUAGE="VBSCRIPT"
CODEPAGE="65001"%>
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="/1999/xhtml">
<head>
<meta
http-equiv="Content-Type"
content="text/html?
charset=utf-8"
/>
<title>處理查詢字符串</title>
</head>
<%
'下面腳本獲取客戶端請求查詢字符串中變量
str1
和
str2
的值
str1=request.QueryString("str1")
str2=request.QueryString("str2")
%>
<body>
str1=<%=str1%><br>
str2=<%=str2%><br>
</body>
</html>
上面網(wǎng)頁
qry.htm
在瀏覽器中運行效果如圖
4-1
左圖所示。單擊網(wǎng)頁中的鏈接文字“ASP
案例教程”,結(jié)果如圖
4-1右圖所示。圖4-1查詢字符串的處理從圖中
Internet
Explorer
瀏覽器地址欄可以看到,帶有查詢字符串的超鏈接被作為
URL提交到服務(wù)器。服務(wù)器在收到
URL“http://localhost/4/4-1/qry.asp?str1=ASP&str2=案例教程”后,調(diào)用了腳本文件
qry.asp
進行處理。在腳本文件中,通過下面的語句獲取查詢字符串中的變量
str1
和
str2
對應(yīng)的變量值“ASP”和“案例教程”,最后將其顯示到網(wǎng)頁上。150
str1=request.QueryString("str1")
str2=request.QueryString("str2")
除了使用鏈接來提交查詢字符串外,(Form)表單的
get
方法也同樣可以提交查詢字符串。
4.1.5
表單及其在客戶端信息提交中的應(yīng)用在前面網(wǎng)頁信息傳遞的例子中,所有信息的傳遞都是通過超鏈接來提交,這種信息的提交方式是靜態(tài)的,即只能提交設(shè)計時指定的信息。在真正的網(wǎng)站設(shè)計中,更多情況下,需要能夠進行動態(tài)提交的信息,即信息是由用戶輸入數(shù)據(jù)后在客戶端產(chǎn)生并提交信息,而不是由服務(wù)器端指定的。例如,網(wǎng)上常見的用戶注冊信息的提交,圖
4-2
就是一個網(wǎng)站的注冊頁面,圖4-2注冊頁面在這種需要用戶輸入的頁面中,使用由超級鏈接在設(shè)計時用標簽<a>硬編碼來設(shè)計查詢字
HTML
符串顯然是行不通的。這種情況下,就需要使用
HTML表單來進行信息的輸入和提交。表單允許在用戶提交表單時動態(tài)生成
URL的查詢中,查詢字符串中的變量名和變量值從表單中取得,然后生成變量名和變量值配對列表,并追加到
URL的后面。表單是一個能夠包含表單元素的區(qū)域,HTML
為表單提供了多種圖形用戶界面組件元素(比如文本框,密碼框,下拉菜單,單選框,復(fù)選框等等),這些表單元素能夠讓用戶在表單中輸入信息,可以用它們來構(gòu)成表單內(nèi)容,作為用戶可以輸入的域,并可以將其提交給一個
ASP
進行處理。表單是用HTML的
form標簽來聲明的,格式如下:
<form
name="
"
action="
"
method="
">
…</form>
<form>標簽的屬性
name
用于指定表單的名稱,這在同一頁面有多個表單時會很有用;
action
屬性指定當表單被提交時所要執(zhí)行的動作,對
ASP
來說,可以指定為所要調(diào)用的
ASP151
<form>標簽的method參數(shù)指定傳遞請求給ASP所用的方法,文件的URL;
它的值可以是GET、
POST或
PUT,比較常用的是
POST和
GET。當提交的信息較少,且不太注重安全性時,可以使用使用GET方法進行提交,這將在
URL后生成以“?”開頭的查詢字符串,查詢字符串中的變量名和變量值是在表單被提交時,動態(tài)地根據(jù)表單元素的名字和用戶的輸入信息產(chǎn)生的,與前面所學(xué)過的查詢字符串一樣,這樣生成的
URL將可以在瀏覽器地址欄中看到,可以通過
Request
的
QueryString
集合來獲取
GET
方法提交的內(nèi)容。如果提交的內(nèi)容較多,或需要注重安全性時,則可以使用
POST方式提交,這種提交方式將表單所有內(nèi)容進行整體提交,可以通過
Request
的
Form集合來獲取
POST方法提交的內(nèi)容。在標簽<form>和</form>之間的則是表單元素。此外,如果
action
中沒有指定處理提交信息的
ASP
文件,則由當前文件進行處理。在表單標簽里,可以使用
HTML
標簽<input>(輸入標簽)、<textarea>(文本域標簽)和
<select>(選項標簽)聲明任意多個表單元素,下面對這些標簽進行詳細的介紹。
1.input
標簽
<input>標簽是最常用的表單標簽,常用于輸入信息或提交信息。input
標簽的通用語法格式如下:
<input
type="
"
name="
"
value="
">
<input>標簽的
type屬性允許指定輸入類型,可以是后面幾種輸入類型中的一種:text(文本框)、password(密碼框)、checkbox(復(fù)選框)、radio(單選按鈕)、image(圖像域)、reset
(重置按鈕)和
submit(提交按鈕)。name
屬性為表單元素的名稱,value
屬性在設(shè)計時為表單元素的初始值,提交時表單時就是該元素的內(nèi)容。注意,每個表單元素都有一個屬性
name,同時每個表單元素都有一個與之相聯(lián)系的值
(value),這個值可以由用戶輸入得到,也可以由設(shè)計者通過
value參數(shù)設(shè)置一個初始值。和輸入域相關(guān)聯(lián)的名字和值用來構(gòu)造查詢串。同時,所有的表單必須聲明一個
submit
按鈕,在單擊該按鈕時,將通知瀏覽器表單已經(jīng)準備好,將組合得到的
URL
傳送到服務(wù)器端,調(diào)用
form
標簽的
action
參數(shù)指定的
ASP
文件進行下一步的處理。要聲明一個
submit
按鈕,只需要使用一個
type
參數(shù)是別
submit
的
input
標簽就可以了。例如:
<form
name="form1"
action="form.asp"
="get">
<input
type="text"
name="txt1"
value="ASP">
<input
type="submit"
name="submit"
value="finish">
</form>
上面的表單在沒有用戶輸入(即沒有修改
value的內(nèi)容)的情況下,由于提交表單的方法(method)是
GET,所以在提交時將構(gòu)成形式如下的
URL:
…/form.asp?txt1=ASP&
submit=finish
其中,語句“<input
type="text"
name="txt1"
value="ASP">”中的
name屬性“txt1”和
value
屬性指定的值“ASP”構(gòu)成了一對查詢字符串中的變量名和變量值對。下面,對<input>標簽的各種輸入類型進行舉例說明。
<input>標簽的
text
類型用于設(shè)置一個單行文本框,語法格式如下:152
<input
name="
"
type="text"
value=""
size=""
maxlength=""
>
其中,value
為文本框的值,在設(shè)計時為文本框的初始值;size
屬性指定文本框?qū)挾龋?/p>
maxlength指定可以輸入的最大字符數(shù)。這兩個屬性的屬性值都是整數(shù),單位為字符。例如:
<input
name="user"
type="text"
value="admin"
size="12"
maxlength="16"
>
上面的語句指定了一個名為
user
的文本框,文本框初始值為“admin”寬度為
12
個字符,,最大可輸入
16
個字符。
<input>標簽的
password類型用于設(shè)置一個密碼框,語法格式如下:
<input
name="
"
type="password"
value=""
size=""
maxlength=""
>
密碼框中各個屬性的用法與文本框相同。例如:
<input
name="pwd"
type="password"
size="8"
maxlength="12">
上面的語句指定了一個名為
pwd的密碼框,密碼框?qū)挾葹?/p>
8
個字符,最大可輸入
12個字符。
<input>標簽的
submit
類型用于設(shè)置一個提交按鈕,提交按鈕用于將表單的內(nèi)容提交到
action所指定的
ASP
文件進行處理,語法格式如下:
<input
name="
"
type="
submit"
value=""
>
其中,value為按鈕上的文字。
<input>標簽的
reset
類型用于設(shè)置一個重置按鈕,重置按鈕用于將表單中的所有輸入域清空,重置表單內(nèi)容,語法格式如下:
<input
name="
"
type="reset"
value=""
>
其中,value為按鈕上的文字。下面是一個
input
標簽的示例:
<form
name="form1"
method="post"
action="">
<p>用戶:
<input
name="user"
type="text"
size="8"
maxlength="16">
</p>
<p>密碼:
<p>
<input
type="reset"
name="reset"
value="重置">
<input
type="submit"
name="submit"
value="提交">
</p>
</form>
上面的表單在瀏覽器中顯示效果如圖
4-3
所示。<input
name="pwd"
type="password"
size="8"
maxlength="12">
</p>
圖4-3表單示例153
2.單選按鈕與復(fù)選框
<input>標簽的
radio類型用于設(shè)置一個單選按鈕,單選按鈕用于從一組選項中選擇一個,語法格式如下:
<input
name="
"
type="radio"
value="
"
checked>
其中,name
屬性為按鈕名稱,value
屬性為按鈕的值,checked
是可選屬性,如果有該屬性,則表示該按鈕顯示時為被選中,否則為未選中。通常單選按鈕都是成組使用的,要使多個單選按鈕成為一組,只需要將其
name屬性設(shè)為相同名稱即可,此時需要將
value屬性設(shè)置為不同值,以示區(qū)別。在提交時只提交被選中的那個按鈕值。此外,由于單選按鈕僅顯示按鈕而沒有文字內(nèi)容,因此通常會在其旁注上文字。例如:
<input
name="radiobutton"
type="radio"
value="1"
checked>
選項
1
<input
name="radiobutton"
type="radio"
value="2">
選項
2
上面的代碼表示一組中兩個名為
radiobutton的單選按鈕,按鈕值分別為
1和
2,值為
1
的按鈕為已選中,旁邊分別顯示文字“選項
1”和“選項
2”。在選中按鈕
1
的情況下,提交時時的變量值對如下:
radiobutton=1
<input>標簽的
checkbox
類型用于設(shè)置一個復(fù)選框,復(fù)選框可用于從一組選項中選擇多個選項,語法格式如下:
<input
name="
"
type="checkbox"
value="
"
checked>
其中,name
屬性為按鈕名稱,value
屬性為按鈕的值,checked
是可選屬性,如果有該屬性,則表示該按鈕顯示時為被選中,否則為未選中。與單選按鈕相似,復(fù)選框通常也是成組使用的,與單選按鈕不同的是,被選中的多個復(fù)選框都會被提交,因此其
name
值可以相同(按集合處理),也可以不同(按不同變量進行處理)。例如:
<input
name="checkbox"
type="checkbox"
value="游泳"
>游泳
<input
name="checkbox"
type="checkbox"
value="跑步"
>跑步上面代碼將顯示兩個復(fù)選框,兩個復(fù)選框的名稱均為
checkbox。在提交信息時,對于這種一個變量對應(yīng)多個值的情況,通常使用
For
each…Next
語句進行處理。如下所示:
for
each
ob
in
Request.form("checkbox")
Response.Write(ob&"<br>")
next
上面語句中,將通過
for
each循環(huán)依次將變量
checkbox
對應(yīng)的不同值賦給變量
ob,再對
ob
進行操作。下面是一個使用單選按鈕與復(fù)選框設(shè)計的簡單的網(wǎng)頁調(diào)查表案例。案例由兩個文件組成,分別是前臺網(wǎng)頁文件radiocheck.htm和后臺腳本文件
radiocheck.asp。前臺網(wǎng)頁文件
radiocheck.htm內(nèi)容如下:
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="/1999/xhtml">'輸出選項內(nèi)容
154
<head>
<meta
http-equiv="Content-Type"
content="text/html?
charset=utf-8"
/><title>上網(wǎng)調(diào)查表</title>
</head>
<body
>
<h2
align="center">上網(wǎng)調(diào)查表</h2>
<form
name="form1"
method="post"
action="radiocheck.asp">
<table
width="395"
border="1"
cellspacing="0"
bordercolor="#000000">
<tr>
<td
height="28"
colspan="2">通常使用什么方式上網(wǎng)?</td>
</tr>
<tr>
<td
width="160"><input
name="radiobutton"
type="radio"
value="ADSL"
checked>
ADSL</td>
<td
width="225"><input
name="radiobutton"
type="radio"
value="撥號上網(wǎng)"
>
撥號上網(wǎng)
</td>
</tr>
<tr>
<td><input
name="radiobutton"
type="radio"
value="無線接入">無線接入</td>
<td><input
name="radiobutton"
type="radio"
value="DDN專線">DDN
專線</td>
</tr>
<tr>
<td
height="23"
colspan="2">通常是在什么地方上網(wǎng)?</td>
</tr>
<tr>
<td><input
type="checkbox"
name="check"
value="網(wǎng)吧">網(wǎng)吧</td>
<td><input
type="checkbox"
name="check"
value="學(xué)校">學(xué)校</td>
</tr>
<tr>
<td><input
type="checkbox"
name="check"
value="家里">家里</td>
<td><input
type="checkbox"
name="check"
value="學(xué)校">其它地方</td>
</tr>
</table>
<p>
<input
type="submit"
name="Submit"
value="提交">
</p>
</form>
</body>
</html>
后臺腳本文件
radiocheck.asp內(nèi)容如下:155
<%@LANGUAGE="VBSCRIPT"
CODEPAGE="65001"%>
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="/1999/xhtml">
<head>
<meta
http-equiv="Content-Type"
content="text/html?
charset=utf-8"
/>
<title>調(diào)查表</title>
</head>
<body
>
<h2
align="center">上網(wǎng)調(diào)查表</h2>
<%
'將單選按鈕選項值賦給
str1
str1
=
Request.form("radiobutton")
%>
通常使用的上網(wǎng)方式是:<%=str1%><br>
經(jīng)常上網(wǎng)的地方是:
<%
'將復(fù)選按鈕多個選項內(nèi)容依次賦給
str2
for
each
str2
in
Request.form("check")
Response.Write(str2&" ?")
next
%>
</body>
</html>
前臺網(wǎng)頁radiocheck.htm在瀏覽器中顯示效果如圖
4-4
左圖所示。'輸出選項內(nèi)容
圖4-4上網(wǎng)調(diào)查表156
當選擇完畢,單擊“提交”按鈕提交調(diào)查表信息時,下面的語句將單選按鈕
radiobutton
所選項的值賦給變量
str1。
str1
=
Request.form("radiobutton")
然后,再通過下面的
for
each循環(huán)來依次獲取所選中的復(fù)選框
check對應(yīng)的內(nèi)容,將其賦值為變量
str2,并通過
Response.Write方法輸出。
for
each
str2
in
Request.form("check")
Response.Write(str2&" ?")
next
3.textarea標簽
<textarea>標簽聲明一個用戶可以輸人多行文本的區(qū)域,<textarea>標簽的語法如下;
<textarea
name=""
rows=""
cols=""
>text</textarea>
其中,cols
為文本域?qū)挾龋ㄗ址麛?shù))rows
為文本域的高度,
(行數(shù))<textarea
>和</textarea>
,
之間的是文本域的內(nèi)容,對應(yīng)的就是文本域提交時的值。例如:
<textarea
name="textfield"
cols="40"
rows="10">這是一個
textarea
文本域</textarea>
上面語句定義的文本域如圖
4-5
所示。'輸出選項內(nèi)容
圖4-5文本域
4.select標簽
<select>標簽聲明一個可選項的列表,用戶可以選擇一個或者多個選項,標簽的值(value)
就是所選擇的選項,下面是
select
標簽的語法:
<select
name=""
size=""
multiple>
<option
value=""
selected>option</option>
...
<option
value="">option</option>
</select>
其中,<select>標簽表示選項列表,其中
name是名稱,size是列表區(qū)域高度(即可顯示的選項數(shù)),multiple是可選屬性,如果有該屬性則表示可選擇多項。在<select>和</select>標簽之間的是列表的內(nèi)容,列表內(nèi)容用標簽<option>設(shè)置;value
表示該選項的值,selected是一個可選屬性,如果有該屬性,則表示顯示時將該項置設(shè)為已選中;在<option
>和</option>標簽之間的是顯示在選項列表中的選項內(nèi)容。下面是一個
select
標簽的示例:157
<select
id="select36"
size="1"
name="linkjy">
<optionselected="selected"
>---教育科研---</option>
<option
value="">北京教育考試院</option>
<option
value="">北京教育考試指導(dǎo)中心</option>
<option
value="">北京大學(xué)</option>
<option
value="">清華大學(xué)</option>
</select>
上面的代碼在瀏覽器中效果如圖
4-6左圖所示,鼠標單擊后展開列表如圖4-6
右圖所示。圖4-6列表選項
4.2
使用
Request對象獲取環(huán)境信息
4.2.1
ServerVaribles集合
ServerVaribles
是
ASP
環(huán)境變量的集合,它允許讀取HTTP
頭,可以通過使用“HTTP_前綴”來讀取任何頭信息。ServerVaribles
集合的使用格式如下:
Request.ServerVaribles(ServerEnvironmentVariable)
其中,參數(shù)
ServerEnvironmentVariable環(huán)境變量的集合,可以使用的環(huán)境變量如表
4-2
所示。表4-2
ServerVaribles集合環(huán)境變量環(huán)境變量ALL_HTTP
ALL_RAW
APPL_MD_PATH
APPL_PHYSICAL_PATH
AUTH_PASSWORD
AUTH_TYPE
AUTH_USER
CERT_COOK
CERT_FLAG
CERT_ISSUER
CERT_KEYSIZE
CERT_SECRETKEYSIZE
CERT_SERIALNUMBER
說明
客戶端發(fā)送的所有HTTP標頭,他的結(jié)果都有前綴HTTP_。
客戶端發(fā)送的所有HTTP標頭,其結(jié)果和客戶端發(fā)送時一樣,沒有前綴HTTP_
應(yīng)用程序的元數(shù)據(jù)庫路徑。
與應(yīng)用程序元數(shù)據(jù)庫路徑相應(yīng)的物理路徑。
當使用基本驗證模式時,客戶在密碼對話框中輸入的密碼。
這是用戶訪問受保護的腳本時,服務(wù)器用于檢驗用戶的驗證方法。
代驗證的用戶名。
唯一的客戶證書ID號。
客戶證書標志,如有客戶端證書,則bit0為0。如果客戶端證書驗證無效,bit1
被設(shè)置為1。
用戶證書中的發(fā)行者字段。
安全套接字層連接關(guān)鍵字的位數(shù),如128。
服務(wù)器驗證私人關(guān)鍵字的位數(shù)。如1024。
客戶證書的序列號字段。158
環(huán)境變量CERT_SERVER_ISSUER
CERT_SERVER_SUBJECT
CERT_SUBJECT
CONTENT_LENGTH
CONTENT_TYPE
GATEWAY_INTERFACE
HTTPS
HTTPS_KEYSIZE
HTTPS_SECRETKEYSIZE
HTTPS_SERVER_ISSUER
服務(wù)器證書的發(fā)行者字段
服務(wù)器證書的主題字段。
客戶端證書的主題字段。
客戶端發(fā)出內(nèi)容的長度。
說明
客戶發(fā)送的form內(nèi)容或HTTP
PUT的數(shù)據(jù)類型。
服務(wù)器使用的網(wǎng)關(guān)界面。
如果請求穿過安全通道(SSL),則返回ON。如果請求來自非安全通道,則返回OFF。
安全套接字層連接關(guān)鍵字的位數(shù),如128。
服務(wù)器驗證私人關(guān)鍵字的位數(shù)。如1024。
服務(wù)器證書的發(fā)行者字段。
IIS實例的
ID號。
響應(yīng)請求的IIS實例的元數(shù)據(jù)庫路徑。
返回接受請求的服務(wù)器地址。
用戶登錄WindowsNT的帳號
客戶端提供的路徑信息。
通過由虛擬至物理的映射后得到的路徑。
查詢字符串內(nèi)容。
發(fā)出請求的遠程主機的IP地址。
發(fā)出請求的遠程主機名稱。
提出請求的方法。比如GET、HEAD、POST等等。
執(zhí)行腳本的名稱。
服務(wù)器的主機名、DNS地址或IP地址。
接受請求的服務(wù)器端口號。
如果接受請求的服務(wù)器端口為安全端口時,則為1,否則為0。
服務(wù)器使用的協(xié)議的名稱和版本。
應(yīng)答請求并運行網(wǎng)關(guān)的服務(wù)器軟件的名稱和版本。
提供URL的基本部分。
HTTPS_SERVER_SUBJECT
服務(wù)器證書的主題字段。
INSTANCE_ID
INSTANCE_META_PATH
LOCAL_ADDR
LOGON_USER
PATH_INFO
PATH_TRANSLATED
QUERY_STRING
REMOTE_ADDR
REMOTE_HOST
REQUEST_METHOD
SCRIPT_NAME
SERVER_NAME
SERVER_PORT
SERVER_PORT_SECURE
SERVER_PROTOCOL
SERVER_SOFTWARE
URL
4.2.2ClientCertificate
集合
ClientCertificate集合是所有客戶證書的信息的集合。使用格式如下:
Request.ClientCertificate(key[SubField])
其中,對于參數(shù)
Key,該集合具有如表
4-3
所示的關(guān)鍵字。表4-3
ClientCertificate集合關(guān)鍵字關(guān)鍵字Subject
Issuer
VadidFrom
ValidUntil
159
說明
證書的主題。包含所有關(guān)于證書收據(jù)的信息。能和所有的子域后綴一起使用。
證書的發(fā)行人。包含所有關(guān)于證書驗證的信息。除了CN外,能和所有的子域后綴一起使用。
證書發(fā)行的日期。使用VBScript格式。
該證書不在有效的時間。SerialNumber
Certificate
包含該證書的序列號。
包含整個證書內(nèi)容的二進制流,使用ASN.1格式。Subject
和
Issuer
關(guān)鍵字還可以具有如表
4-4
所示的子域后綴此外,對于
SubField,
(比如:
SubjectOU或
IssuerL)。表4-4
子域后綴子域后綴C
O
OU
CN
L
S
T
GN
I
起源國家。
公司或組織名稱。
組織單元。
用戶的常規(guī)名稱。
局部。
州(或?。?。
個人或公司的標題。
給定名稱。
初始。說明
當文件
cervbs.inc(VBScript
使用)或
cerjavas.inc(Jscript
使用)通過使用#include
包含在
ASP
中時,下面兩個標志可以使用:(1)ceCertPresent
指明客戶證書是否存在,其值為
TRUE
或
FALSE。(2)ceUnrecongnizedIssure
指明在該鏈表中的最后的證書的發(fā)行者是否未知,其值為
TRUE
或
FALSE。
4.3
Response對象的應(yīng)用
4.3.1Response
對象簡介
Response對象用來訪問所創(chuàng)建的并返回客戶端的響應(yīng)??梢允褂?/p>
Response
對象控制發(fā)送給用戶的信息,包括直接發(fā)送信息給瀏覽器、重定向瀏覽器到另一個
URL
或設(shè)置
cookie
的值。Response
對象為腳本提供了標識服務(wù)器和性能的
HTTP
變量,發(fā)送給瀏覽器的信息內(nèi)容和任何將在
cookie
中存儲的信息。Response
對象還提供了一系列用于創(chuàng)建輸出頁的方法,如前面多次用到的
Response.Write方法。
1.Response
對象的集合
Response對象只有一個集合——Cookies,該集合設(shè)置希望放置在客戶系統(tǒng)上的
Cookie的值,它對應(yīng)于
Request.Cookies
集合。
Response對象的
Cookies
集合用于在當前響應(yīng)中,將Cookies
值發(fā)送到客戶端,該集合訪問方式為只寫。160
2.Response
對象的屬性
Response
對象提供一系列的屬性,通常這些屬性由服務(wù)器設(shè)置,不需要設(shè)置它們。在某些情況下,可以讀取或修改這些屬性,使響應(yīng)能夠適應(yīng)請求。Response
對象的常用屬性如下所示。(1)Buuffer
指明由一個
ASP
頁所創(chuàng)建的輸出是否一直存放在
IIS
緩沖區(qū),直到當前頁面的所有服務(wù)器腳本處理完畢或
Flush、End方法被調(diào)用。使用格式如下:
Response.Buuffer=True
|
False
當緩沖頁輸出時,只有當前頁的所有服務(wù)器腳本處理完畢或者調(diào)用了
Flush
或
End
方法后,服務(wù)器才將響應(yīng)發(fā)送給客戶端瀏覽器,服務(wù)器將輸出發(fā)送給客戶端瀏覽器后就不能再設(shè)置
Buffer
屬性。Buuffer
屬性設(shè)置必須在任何輸出(包括
HTTP
報送信息)送住
IIS
之前。因此,在.asp
文件中,這個設(shè)置應(yīng)該在<%@LANGUAGE=…%>語句后面的第一行。在
ASP
3.0
中,Buuffer
缺省設(shè)置緩沖為開(True),而在早期版本中缺省為關(guān)(False)。(2)Charset=”value”
在由服務(wù)器為每個響應(yīng)創(chuàng)建的HTTP
Content-Type報頭中附上所用的字符集名稱,格式如下:
Response.Charset="value"
例如:
Response.Charset="gb2312"
設(shè)置字符集為
gb2312。(3)
ContentType
指明響應(yīng)的HTTP
內(nèi)容類型,內(nèi)容類型告訴瀏覽器所期望內(nèi)容的類型。使用格式如下:
Response.ContentType="MIME-type"
標準的
MIME
類型有
text/html
、image/GIF、image/JPEG
和
text/plain等。假如缺省該值,表示使用
MIME
類型
text/html。
Response.ContentType和Response.Charset應(yīng)用比較少,通常是直接在<head>頭中的<meta>
標簽中設(shè)置
ContentType和
Charset
的內(nèi)容。例如:
<meta
http-equiv="Content-Type"
content="text/html?
charset=gb2312">
(4)Expires
指明頁面有效的以分鐘計算的時間長度,假如用戶請求其有效期滿之前的相同頁面,將直接讀取顯示緩沖中的內(nèi)容,這個有效期間過后,頁面將不再保留在用戶或代理服務(wù)器
"的緩沖中。使用格式如下:
Response.Expires=value
Expires
屬性指定了在瀏覽器上緩沖存儲的頁,距過期還有多少時間。如果用戶在某個頁過期之前又回到此頁,就會顯示緩沖區(qū)中的頁面。例如:
Response.expires=0
Expires屬性是一個較實用的屬性,上面的設(shè)置可使緩存的頁面立即過期。
當用戶通過
ASP
的登陸頁面進入
Web
站點后,應(yīng)該利用該屬性使登陸頁面立即過期,以確保安全。161
(5)ExpiresAbsolute
日期/時間型,指明一個頁面過期和不再有效時的絕對日期和時間。使用格式如下:
Response.ExpiresAbsolute=
#date
[time]#
例如:
Response.ExpiresAbsolute=
#2006-2-15
12:00:00#
設(shè)置頁面失效時間為2006
年
2月
15
日12
點。(6)
IsClientConnected
返回客戶是否仍然連接和下載頁面的狀態(tài)標志,返回值為
True或
False。在當前的頁面已執(zhí)行完畢之前,假如客戶轉(zhuǎn)移到別一個頁面,這個標志可用來中止處理(使用
Response.End方法)。例如:
<%
if
not
response.IsClientConnected
then
response.End()
end
if
%>
(7)PICS(“PICS-Label-string”)
創(chuàng)建一個
PICS
報頭定義頁面內(nèi)容中的詞匯等級,如暴力、性、不良語言等。(8)Status="Code
message"
設(shè)置頁面狀態(tài)描述,指明發(fā)回客戶的響應(yīng)的
HTTP
報頭中表明錯誤或頁面處理是否成功的狀態(tài)值和信息。例如:
<%
Response.Status
=
"401
Unauthorized"
%>
需要注意的是,當設(shè)置某些屬性時,使用的語法可能與通常所使用的有一定的差異。
3.Response
對象的方法
Response
對象提供一系列的方法,方便直接處理為返回給客戶端而創(chuàng)建的頁面內(nèi)容。常用
Response方法如下所示。(1)AddHeader
AddHeader
用于創(chuàng)建一個定制的
HTTP
報頭,并增加到響應(yīng)之中,可以利用
request
對象的
ServerVariable集合來讀取報頭內(nèi)容。使用格式如下:
Response.AddHeader
("name","content")
參數(shù)
name和
Content
表示報頭名稱和對應(yīng)的值。例如:
Response.AddHeader("cache-control","private")
AddHeader
方法不能替換現(xiàn)有的相同名稱的報頭。一旦已經(jīng)增加了一個報頭就不能被刪除。這個方法必須在任何頁面內(nèi)容被發(fā)住客戶端前使用。(2)在當前的
HTTP
輸出流中寫入
Variant
類型的
SafeArray,而不經(jīng)過任何字符轉(zhuǎn)換。使用格式如下:
Response.BinaryWrite(safeArray)162
'設(shè)置狀態(tài)為401
Unauthorized
BinaryWrite
方法對于寫入非字符串的信息,例如,定制的應(yīng)用程序請求的二進制數(shù)據(jù)或組成圖像文件的二進制字節(jié),是非常有用的。(3)End
讓
ASP
結(jié)束處理頁面的腳本,并返回當前已創(chuàng)建的內(nèi)容,然后放棄頁面的任何進一步處理,停止頁面編譯,并將已經(jīng)編譯內(nèi)容輸出到瀏覽器。使用格式如下:
Response.
End
例如:
<%
response.write
time()
response.end
'程序執(zhí)行顯示到此結(jié)束
response.write
time()
%>
(4)
Clear
當
Response.Buffer
為
True時,Clear
方法從
IIS
響應(yīng)緩沖中刪除現(xiàn)存的緩沖頁面內(nèi)容。但不刪除
HTTP
響應(yīng)的報頭,可用來放棄部分完成的頁面。使用格式如下:
Response.Clear()
該方法主要作用是清除緩沖區(qū)中的所有
HTML
輸出,但該方法只清除響應(yīng)正文而不清除響應(yīng)標題。該方法和End方法似相反,End是到此結(jié)束返回上面的結(jié)果,而
Clear
卻是清除上面的執(zhí)行結(jié)果,然后只返回下面的結(jié)果。
<%
response.write
time()
response.clear
response.write
time()
%>
(5)Flush
發(fā)送
IIS
緩沖中所有當前緩沖頁給客戶端。當
Response.Buffer
為
True
時,可以用來發(fā)送較大頁面的部分內(nèi)容給個別的用戶。使用格式如下:
Response.Flush()
(6)Redirect
通過在響應(yīng)中發(fā)送一個“302
Object
Moved”HTTP
報頭,指示瀏覽器根據(jù)字符串
url
下載相應(yīng)地址的頁面。停止當前頁面的編譯或輸出,轉(zhuǎn)到指定的頁面。使用格式如下:
Response.Redirect("url")
例如:
Response.Redirect("")
上面語句執(zhí)行時將停止當前網(wǎng)頁的編譯或輸出,跳轉(zhuǎn)到新浪網(wǎng)()首頁。(7)Write
在當前的HTTP
響應(yīng)信息流和
IIS
緩沖區(qū)寫入指定的字符,使之成為返回頁面的一部分。
Write方法是
Response中使用得最多的方法,它將信息直接從服務(wù)器端發(fā)送到客戶端,達到在客戶端動態(tài)顯示內(nèi)容的目的。163
'以上程序到此全部被清除
Write方法使用格式如下:
Response.Write(“string”)
Response.Write后面是要發(fā)送到客戶端所顯示的信息,可以用括號包含,也可以直接書寫(注意和
Response.Write之間有空格)。如果
string為字符串信息或者
HTML代碼相關(guān),用引號包含;而
ASP
本身的函數(shù)或變量則不需要,直接用即可。并且無論字符串信息、HTML
代碼、函數(shù)還是變量之間進行連接都是采用&號(針對vbscript)。例如:
<%
for
i=1
to
6
Response.Write("<h"&i&">"&"ASP
教程"&"</h"&i&">")
next
%>
上面代碼將在頁面中依次使用標題格式
h1~h6
輸出文字“ASP
教程”如圖
4-9
左圖所示,,通過
Response.Write方法生成的源代碼如圖
4-9
右圖所示。圖4-9動態(tài)標題文字同樣,其它的
ASP
內(nèi)容也可以通過
Response.Write
方法輸送到客戶端,例如,動態(tài)輸出的表格、數(shù)據(jù)庫記錄等等。
Response.Write有一種省略用法,就是之前常用的<%=…%>方式,這種方式實際上相當于如下的腳本段。
<%
Response.Write(…)
%>
4.3.2
客戶端腳本對事件的響應(yīng)在
ASP
的動態(tài)交互中,經(jīng)常有一些工作會要求在客戶端進行,例如,對數(shù)據(jù)的校驗,檢164
查用戶名和密碼是否符合要求等。這些工作如果提交到服務(wù)器端來進行,則會耗費大量網(wǎng)絡(luò)資源,給服務(wù)器造成很大的負擔(dān)。此外,還有些工作只能在客戶端完成,因此,這就需要編寫能夠在客戶端進行工作的腳本。
1.處理表單內(nèi)對象的事件客戶端腳本通常寫在<script>中,以過程或函數(shù)的方式存在。當發(fā)生某一事件時,瀏覽器會自動調(diào)用相應(yīng)的過程或函數(shù)進行處理。客戶端的事件通常來源于<form>表單中的控件元素,例如,按鈕被單擊(onClick)、文本框或列表項內(nèi)容改變(onChange)等。常用的表單控件事件有如下幾種。
onChange:控件內(nèi)容改變發(fā)生。
onClick:控件被單擊時發(fā)生。
onDblClick:控件被雙擊時發(fā)生。
onMouseDown:鼠標按鍵按下時發(fā)生。
onMouseMove:鼠標在控件上移動時發(fā)生。
onMouseOut:鼠標移出對象范圍時發(fā)生。
onKeyPress:鍵盤按鍵按下時發(fā)生。下面是一個簡單的對輸入的數(shù)據(jù)進行客戶端驗證的案例。
<%@LANGUAGE="VBSCRIPT"
CODEPAGE="65001"%>
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="/1999/xhtml">
<head>
<meta
http-equiv="Content-Type"
content="text/html?
charset=utf-8"
/>
<title>輸入驗證</title>
<script
language="vbscript">
'過程
button1_onclick用于響應(yīng)按鈕
button1
的
onclick(單擊)事件
sub
button1_onclick
dim
theform
set
theform
=
document.validform
if
isnumeric(theform.text1.value)
then
'獲取當前文檔中的表單
validform
'檢查表單中的對象
text1
的值
value是否是數(shù)字
'檢查表單中的對象
text1
的值
value是否在范圍
1~10之間
if
theform.text1.value
<
1
or
theform.text1.value
>
10
then
msgbox
"請輸入一個
1
到
10
之間的數(shù)字。"
else
msgbox
"正確。"
end
if
else
msgbox
"請輸入一個數(shù)字。"
end
if165
'調(diào)用
msgbox
函數(shù)彈出消息
end
sub
</script>
</head>
<body>
<h3>輸入驗證</h3><hr>
<form
name="validform">
請輸入一個
1
到
10
之間的數(shù)字:
<input
name="text1"
type="text"
>
<input
name="button1"
type="button"
onClick="button1_onclick"
value="提交">
</form>
</body>
</html>
上面的案例運行效果如圖
4-10
所示。圖4-10輸入驗證在瀏覽網(wǎng)頁時,當按鈕被單擊后,將通過下面的代碼來響應(yīng)鼠標單擊(onClick)事件。
<input
name="button1"
type="button"
onClick="button1_onclick"
value="提交">
由于設(shè)置了
onClick="button1_onclick",因此,按鈕單擊事件發(fā)生時,將調(diào)用客戶端腳本過程
button1_onclick進行處理。在
button1_onclick
過程中,文本框
Text1
的
Value
屬性被用于檢查輸入值。要使用文本框的
Value
屬性,在代碼中必須引用文本框的名稱。每次引用文本框時都應(yīng)寫出全稱,即
Document.ValidForm.Text1。但是,當多次引用窗體控件時,這樣比較繁瑣。因此,過程中首先聲明一個變量theform,然后使用
Set
語句將表單
Document.ValidForm
賦給變量
TheForm,這樣就能使用
TheForm.Text1
引用文本框。常規(guī)的賦值語句(例如
Dim)對表單對象無效,必須使用
Set
來保持對對象的引用。在程序中,還用到了
msgbox
函數(shù)來顯示消息,該函數(shù)用于在客戶端彈出一個消息對話框,將
msgbox
函數(shù)中的信息顯示出來。下面這一句即對應(yīng)于圖
4-10
中的消息對話框。
msgbox
"請輸入一個
1
到
10
之間的數(shù)字。"
此外,還可以在窗體中提供內(nèi)部代碼以響應(yīng)窗體中對象的事件。例如,以下示例在窗體166
中嵌入腳本代碼以響應(yīng)窗體中按鈕的單擊事件:
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="/1999/xhtml">
<head>
<meta
http-equiv="Content-Type"
content="text/html?
charset=utf-8"
/>
<title>測試按鈕事件</title>
</head>
<body>
<form
name="form1">
<input
type="button"
name="button1"
value="單擊">
<!--用嵌入表單內(nèi)的腳本來檢查按鈕單擊事件-->
<script
for="button1"
event="onclick"
language="vbscript">
msgbox
"按鈕被單擊!"
</script>
</form>
</body>
</html>
大多數(shù)腳本代碼通常都是在
sub
或
function
過程中,僅在其他代碼要調(diào)用它時執(zhí)行。然而,也可以將
vbscript
代碼放在過程之外、script
塊之中。這類代碼僅在
html
頁面加載時執(zhí)行一次,這樣就可以在加載
web
頁面時初始化數(shù)據(jù)或動態(tài)地改變頁面的外觀。
2.驗證后將數(shù)據(jù)傳遞到服務(wù)器前面的“輸入驗證”案例使用的是普通按鈕控件,不能將表單內(nèi)容提交到服務(wù)器。如果使用
Submit
按鈕,所有數(shù)據(jù)都會被立即傳送到服務(wù)器,示例將不會看到數(shù)據(jù)來進行檢查。避免使用
Submit
按鈕則可以檢查數(shù)據(jù),但不能向服務(wù)器提交數(shù)據(jù)。如果需要提交數(shù)據(jù)則需要再添加一段代碼,如下所示:
<SCRIPT
LANGUAGE="VBScript">
Sub
Button1_OnClick
Dim
TheForm
Set
TheForm
=
Document.ValidForm
If
IsNumeric(TheForm.Text1.Value)
Then
If
TheForm.Text1.Value
<
1
Or
TheForm.Text1.Value
>
10
Then
MsgBox
"請輸入一個
1
到
10
之間的數(shù)字。"
Else
MsgBox
"謝謝。"
TheForm.Submit
End
If
Else
MsgBox
"請輸入一個數(shù)字。"167
'
數(shù)據(jù)輸入正確,傳遞到服務(wù)器。
End
If
End
Sub
</SCRIPT>
在數(shù)據(jù)輸入正確時,程序通過語句“TheForm.Submit”來調(diào)用表單對象的
Submit
方法,將數(shù)據(jù)傳遞到服務(wù)器。除非在數(shù)據(jù)被傳遞到服務(wù)器之前判斷其正誤,否則服務(wù)器將處理數(shù)據(jù),而不論其正確與否。注意,代碼中的
ValidForm
需要用實際的表單名稱替換,Text1
是表單中輸入文本框的名稱。
4.4
Cookie
在網(wǎng)站中的應(yīng)用
4.4.1Cookie
簡介
Cookie是
Web
服務(wù)器保存在客戶端的一段數(shù)據(jù)文本。
Cookie允許一個
Web
站點在客戶端的計算機上保存信息并在以后再取回它??梢杂?/p>
Cookie臨時保存用戶的賬號和口令,ASP
可以隨時讀取,驗證用戶的合法性;也可以將用戶的瀏覽狀態(tài)保存在
Cookie
中,下次用戶再訪問網(wǎng)頁時,由
ASP
向瀏覽器顯示個性化頁面。從本質(zhì)上來說,Cookie
其實是一個標簽,經(jīng)??赡苈牭降闹形姆g:小舔餅。當用戶訪問一個需要存儲
Cookie
的
Web
站點時,網(wǎng)站會在用戶的硬盤上留下一個標記,下一次用戶訪問同一個站點時,站點的頁面會查找這個標記,并執(zhí)行相應(yīng)內(nèi)容。每個
Web
站點都有自己不同的標記,標記的內(nèi)容可以隨時讀取,但只能由該站點的頁面完成。通常,服務(wù)器端會為每一個訪問者產(chǎn)生一個唯一的
ID,然后以
Cookie文件的形式保存在每個用戶的機器上。如果使用
IE
瀏覽器訪問
Web,將會看到所有保存在用戶硬盤上的
Cookie。每個站點的
Cookie與其他所有站點的
Cookie存在同一文件夾中的不同文件內(nèi)。通常存放的地方是C:\wind
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 華師大版數(shù)學(xué)八年級上冊12.5《因式分解》(第1課時)聽評課記錄
- 現(xiàn)場服務(wù)協(xié)議書(2篇)
- 生活小家電代理銷售合同(2篇)
- 粵人版地理七年級上冊《第三節(jié) 聚落的發(fā)展變化》聽課評課記錄7
- 蘇州市公開課蘇教版六年級數(shù)學(xué)下冊《確定位置》聽評課記錄+教學(xué)反思
- 人教版數(shù)學(xué)八年級上下冊聽評課記錄(全冊)
- 人教版部編歷史八年級上冊《第19課 七七事變與全民族抗戰(zhàn)》聽課評課記錄3
- 五年級上冊數(shù)學(xué)聽評課記錄《4.3 探索活動:平行四邊形的面積》(18)-北師大版
- 新版華東師大版八年級數(shù)學(xué)下冊《16分式復(fù)習(xí)》聽評課記錄15
- 人教版數(shù)學(xué)七年級下冊第16課時《6.1平方根(第1課時)》聽評課記錄
- 2024時事政治考試題庫(基礎(chǔ)題)
- 2024山西文旅投資集團招聘117人公開引進高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 小學(xué)校本課程教材《趣味數(shù)學(xué)》
- 干細胞療法推廣方案
- (2024年)電工安全培訓(xùn)(新編)課件
- mil-std-1916抽樣標準(中文版)
- 《社區(qū)康復(fù)》課件-第七章 腦癱患兒的社區(qū)康復(fù)實踐
- 城鄉(xiāng)環(huán)衛(wèi)一體化內(nèi)部管理制度
- 廣匯煤炭清潔煉化有限責(zé)任公司1000萬噸年煤炭分級提質(zhì)綜合利用項目變更環(huán)境影響報告書
- 小學(xué)數(shù)學(xué)六年級解方程練習(xí)300題及答案
- 大數(shù)據(jù)在化工行業(yè)中的應(yīng)用與創(chuàng)新
評論
0/150
提交評論