《ASP動態(tài)網(wǎng)頁設(shè)計與應(yīng)用(第2版)》第4章 Request對象與Response對象_第1頁
《ASP動態(tài)網(wǎng)頁設(shè)計與應(yīng)用(第2版)》第4章 Request對象與Response對象_第2頁
《ASP動態(tài)網(wǎng)頁設(shè)計與應(yīng)用(第2版)》第4章 Request對象與Response對象_第3頁
《ASP動態(tài)網(wǎng)頁設(shè)計與應(yīng)用(第2版)》第4章 Request對象與Response對象_第4頁
《ASP動態(tài)網(wǎng)頁設(shè)計與應(yīng)用(第2版)》第4章 Request對象與Response對象_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論