項(xiàng)目四 ASP基礎(chǔ)知識(shí)學(xué)習(xí)_第1頁
項(xiàng)目四 ASP基礎(chǔ)知識(shí)學(xué)習(xí)_第2頁
項(xiàng)目四 ASP基礎(chǔ)知識(shí)學(xué)習(xí)_第3頁
項(xiàng)目四 ASP基礎(chǔ)知識(shí)學(xué)習(xí)_第4頁
項(xiàng)目四 ASP基礎(chǔ)知識(shí)學(xué)習(xí)_第5頁
已閱讀5頁,還剩82頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ASP基礎(chǔ)知識(shí)的學(xué)習(xí)任務(wù)1使用ASP進(jìn)行數(shù)據(jù)驗(yàn)證與輸出任務(wù)介紹通過此任務(wù)的學(xué)習(xí),學(xué)生可以完成ASP的基本數(shù)據(jù)輸出、使用函數(shù)獲取時(shí)間并顯示為指定格式、使用VBScript計(jì)算時(shí)間差以及制作彈出窗口。任務(wù)分析任何一門語言都離不開系統(tǒng)輸出語句,ASP也不例外的提供了多種數(shù)據(jù)輸出語句,在此任務(wù)中,我們將由淺入深的講解ASP的輸出語法及各種簡(jiǎn)單的變化,VBScript的基本輸出及動(dòng)態(tài)彈出窗口的創(chuàng)建方法,為后面任務(wù)的學(xué)習(xí)打下基礎(chǔ)。任務(wù)實(shí)施由于ASP提供了多種語法格式,因此下面將分為多個(gè)子任務(wù)來逐一進(jìn)行說明,且各個(gè)任務(wù)之間都存在一定的聯(lián)系,如遇到不懂的地方,可以翻看前面內(nèi)容。

子任務(wù)1使用ASP進(jìn)行基本數(shù)據(jù)輸出步驟一:右鍵點(diǎn)擊“站點(diǎn)”,選擇“新建文件”,新建名為data_check.asp的文件,如圖2.1所示。步驟二:雙擊打開這個(gè)文件,切換到“代碼視圖”,按鈕位置如圖2.2所示,然后刪除所有系統(tǒng)創(chuàng)建的代碼,對(duì)新創(chuàng)建的文件統(tǒng)一使用這兩步的操作,后面章節(jié)將不再重復(fù)這兩部的操作。圖4.1

創(chuàng)建好的文件圖4.2

代碼視圖按鈕 步驟三:下面開始編寫我們的第一段代碼,代碼如下,如遇到代碼后面的“//“則代表該符號(hào)后面的文字為對(duì)對(duì)應(yīng)代碼的說明注釋,這些文字可以不用輸入,看懂即可,輸入代碼的時(shí)候盡可能按照下面格式進(jìn)行輸入,因?yàn)轲B(yǎng)成良好的代碼書寫習(xí)慣也是非常有利于今后應(yīng)對(duì)更加復(fù)雜的程序的編寫工作的。結(jié)步驟四:完成輸入后最好先大致的檢查一下代碼中是否有輸入錯(cuò)誤,特別是缺少“號(hào)導(dǎo)致代碼段不完整,或者在語句末尾加上了多余的符號(hào),以及在中文輸入法狀態(tài)下輸出的標(biāo)點(diǎn)符號(hào)都會(huì)被ASP程序認(rèn)為是錯(cuò)誤,完成檢查后打開IE瀏覽器,在地址欄中輸入:http://localhost/data_check.asp(后面均會(huì)以“http://localhost/文件名”的格式來運(yùn)行代碼文件),回車,如果沒有錯(cuò)誤,會(huì)返回如圖2.3所示的輸出果。圖4.3

程序的輸出結(jié)果

<%//程序腳本開始標(biāo)志

dimtitle//dim用來對(duì)程序中的變量進(jìn)行聲明,可以同時(shí)聲明多個(gè)變量

title="這是一個(gè)ASP的文字輸出程序,這一行是變量輸出。"

//下面是ASP的基本輸出語法

response.write("這是一個(gè)ASP的文字輸出程序,這一行是直接輸出。")

response.write("<br>")

response.write(title)%>子任務(wù)2按照指定格式輸出系統(tǒng)時(shí)間步驟一:打開任務(wù)一創(chuàng)建的data_check.asp這個(gè)文件,在最后一行回車后輸入如下代碼。步驟二:完成后運(yùn)行http://localhost/data_check.asp,返回的結(jié)果如圖4.4中紅框所示。圖4.4

返回的當(dāng)前日期代碼。<% Dimy,m,d,t y=year(date) //利用VBScript函數(shù)獲取當(dāng)前年份

m=month(date) //獲取當(dāng)前月份

d=day(date) //獲取當(dāng)前日期

t=time() //獲取當(dāng)前時(shí)間

response.write("現(xiàn)在時(shí)間是:")//在瀏覽器上輸出

response.write(y)

response.write("年")

response.write(m)

response.write("月")

response.write(d)

response.write("日")

response.write(t) %>步驟三:如上圖所示,系統(tǒng)按照我們指定的格式輸出了日期,但是這樣編寫的輸出代碼過于臃腫,不光代碼量大,也不易于閱讀,所以ASP還提供了另一種寫法,我們找到下面8行代碼:選中后刪除,修改為下面語句,注意不要漏掉任何一個(gè)標(biāo)點(diǎn)符號(hào),&符號(hào)使用鍵盤的shift+7來輸入:完成后再次運(yùn)行這段程序,可以看到和圖4一模一樣的輸出果,原先長(zhǎng)達(dá)8行的代碼現(xiàn)在變成了簡(jiǎn)單的一行,只不過輸出的字符串和變量之間使用&進(jìn)行分割字符串要包含在“”中,如果對(duì)日期輸出的格式?jīng)]有特別的要求,例如比較常見的文件創(chuàng)建日期或者日志日期,那樣的話,就可以使用更簡(jiǎn)單快捷的輸出方法,代碼是:response.write("現(xiàn)在時(shí)間是:")response.write(y)response.write("年")response.write(m)response.write("月")response.write(d)response.write("日")response.write(t)response.write("現(xiàn)在時(shí)間是:"&y&"年"&m&"月"&d&"日"&t)<%dimnn=now()//獲取當(dāng)前系統(tǒng)時(shí)間response.write(n)%>把上面代碼加入之前的程序,運(yùn)行后可以看到如圖4.5所示的返回結(jié)果,對(duì)于一般的時(shí)間顯示來說,這種系統(tǒng)的默認(rèn)格式已經(jīng)完全足以應(yīng)付大多數(shù)的情況了。上面子任務(wù)中我們用到了month(date)year(date)day(date)now()time()這5個(gè)函數(shù),他們?nèi)慷际荲BScript中的函數(shù),其功能分別為獲取當(dāng)前月份、年份、日期、當(dāng)前完整時(shí)間、當(dāng)前時(shí)刻,通過上面的任務(wù)就可以看出,合理的使用這些函數(shù)可以輕松實(shí)現(xiàn)很多有趣的功能,另外一些比較常用的函數(shù)我們會(huì)在理論知識(shí)中進(jìn)行講解。

圖4.5

系統(tǒng)直接輸出的日期格式子任務(wù)3計(jì)算指定日期的之前或之后幾天的日期假設(shè)我們要查詢某個(gè)日期之前18天的日期的數(shù)據(jù),首先就必須知道18天之前的日期是哪天,如果時(shí)間短可以直接計(jì)算出來,但如果是相差82天這樣的條件,就不適合手工計(jì)算了,這里就要用到計(jì)算日期之間的差或和的函數(shù)DateSerial()。這里指定一個(gè)日期,例如:2010年5月26日,那么DateSerial()函數(shù)中每個(gè)參數(shù)的取值范圍都應(yīng)該是可以被接受的合理的數(shù)字,即日子的取值應(yīng)在1和31之間,月的取值應(yīng)在1和12之間。在這里,DateSerial

函數(shù)返回2010年5月26日之前十年(2010-10)兩一個(gè)月(5-1)十五天(26-15)的日期,那么程序的結(jié)果應(yīng)該為2000年4月11日。步驟一:創(chuàng)建一個(gè)文件,命名為date.asp,輸入如下代碼:返回結(jié)果如圖4.6所示,結(jié)果就是2000-4-11,關(guān)于這個(gè)函數(shù)的真正作用是在進(jìn)行數(shù)據(jù)查詢的時(shí)候,這些知識(shí)后面會(huì)講到。其語法格式為:DateSerial(year,month,day)<%rs=DateSerial(2010-10,5-1,26-15)%>圖4.6

計(jì)算結(jié)果子任務(wù)4在HTML中使用VBScript

腳本制作彈出窗口按鈕

VBScript除了可以在ASP程序中直接調(diào)用他的函數(shù)外,還可以直接在HTML語句中以指定的腳本格式進(jìn)行使用,與在ASP中調(diào)用有所不同,將VBScript作為腳本直接嵌入在HTML中的時(shí)候,可以實(shí)現(xiàn)很多動(dòng)態(tài)的效果,下面通過一個(gè)例子來感受一下VBScript的強(qiáng)大功能。 步驟一:新建一個(gè)HTML文件,命名為vb.html,打開后不要?jiǎng)h除默認(rèn)代碼,在里面按照下面代碼進(jìn)行添加修改。步驟二:輸入后在瀏覽器中輸入http://localhost/vb.html運(yùn)行該程序,可以看到,這段代碼創(chuàng)建了一個(gè)名為“點(diǎn)擊彈出警告框”的按鈕,如圖4.7所示。 步驟三:點(diǎn)擊該按鈕會(huì)談出一個(gè)對(duì)話框,如圖4.8所示子任務(wù)5在ASP中使用循環(huán)語句完成重復(fù)性內(nèi)容輸出上過論壇的人都知道,論壇的文章標(biāo)題列表或者帖子內(nèi)容和下面的一層層的回帖,在顯示上除了內(nèi)容的不同,格式上是完全一樣的,很明顯這些重復(fù)的工作不可能是手工完成的,這里就要用到ASP的循環(huán)語句了,循環(huán)語句的作用就是重復(fù)執(zhí)行指定的程序代碼,下面以Do...Loop為例,它是可以多次(次數(shù)不定)運(yùn)行語句塊。當(dāng)條件為“真”時(shí)或條件變?yōu)椤罢妗敝?,重?fù)執(zhí)行語句塊。步驟一:新建一個(gè)ASP文件,命名為doloop.asp,輸入下面代碼,步驟二:完成后,運(yùn)行這段程序,會(huì)看到如圖4.9所示的結(jié)果。圖4.9

循環(huán)顯示的結(jié)果分析一下這段程序,會(huì)看到先將“count”并將其值設(shè)為1,然后用函數(shù)month()和now()得到當(dāng)前的月份,然后開始循環(huán),當(dāng)count的值小于當(dāng)前月份加1的時(shí)候,就輸出一行月份值及一條橫線并將count的值加1,循環(huán)語句重復(fù)執(zhí)行直到以上條件為假時(shí)退出循環(huán)。其中如果count大于13則用exitdo立即退出循環(huán)。子任務(wù)6使用InputBox來動(dòng)態(tài)接收

用戶輸入的數(shù)據(jù)

網(wǎng)絡(luò)上很多電子相冊(cè)網(wǎng)站都有為相冊(cè)加密的功能,在訪問加密的文檔時(shí)會(huì)談出一個(gè)對(duì)話框,提示請(qǐng)輸入訪問密碼,這個(gè)功能可以使用vbvbscript的InputBox來實(shí)現(xiàn)。 步驟一:新建一個(gè)ASP文件,命名為inputbox.asp,輸入下面代碼步驟二:運(yùn)行該段代碼,會(huì)彈出如圖4.10所示的效果如果直接點(diǎn)擊確定,則會(huì)彈出如圖4.11所示的效果 如果輸入abc,則會(huì)彈出圖4.12所示的效果知識(shí)拓展一、動(dòng)態(tài)網(wǎng)頁技術(shù)簡(jiǎn)介 隨著Internet信息技術(shù)的發(fā)展,靜態(tài)網(wǎng)頁已經(jīng)不能滿足人們對(duì)信息的需求了,因此,能夠?qū)崿F(xiàn)交互式動(dòng)態(tài)網(wǎng)頁的技術(shù)逐步發(fā)展起來。所謂“動(dòng)態(tài)”并不是指網(wǎng)頁上的.GIF動(dòng)態(tài)圖片,動(dòng)態(tài)網(wǎng)頁技術(shù)至少具有以下3個(gè)特點(diǎn)。交互性。即網(wǎng)頁會(huì)根據(jù)用戶的要求和選擇而動(dòng)態(tài)地改變和響應(yīng),將瀏覽器作為客戶端界面,這將是今后Web發(fā)展的大趨勢(shì)。自動(dòng)更新。無須手動(dòng)更新HTML文檔,便會(huì)自動(dòng)生成新的頁面,這樣可以大大節(jié)省工作量。因時(shí)因人而變。當(dāng)不同的時(shí)間、不同的人訪問同一網(wǎng)址時(shí)會(huì)產(chǎn)生不同的頁面。除了早期的CGI技術(shù)外,目前主流的動(dòng)態(tài)網(wǎng)頁技術(shù)有ASP、PHP、JSP等,下面分別介紹這些動(dòng)態(tài)網(wǎng)頁技術(shù)。1.CGI

早期的動(dòng)態(tài)網(wǎng)頁主要采用CGI技術(shù)。CGI即CommonGatewayInterface(公用網(wǎng)關(guān)接口)。用戶可以使用不同的程序編寫適合的CGI程序,如VisualBasic、Delphi或C/C++等。雖然CGI技術(shù)已經(jīng)發(fā)展成熟,而且功能強(qiáng)大,但由于編程困難、效率低下、修改復(fù)雜,所以逐漸被新技術(shù)而取代2.ASP ASP即ActiveServerPages(活動(dòng)服務(wù)器頁面),也是本書所講解的語言,它是微軟開發(fā)的一種類似HTML(超文本標(biāo)識(shí)語言)、Script(腳本)與CGI的結(jié)合體,它沒有提供自己專門的編程語言,而是允許用戶使用許多已有的腳本語言編寫ASP的應(yīng)用程序。ASP在Web服務(wù)器端運(yùn)行,運(yùn)行后再將運(yùn)行結(jié)果以HTML格式傳送至客戶端的瀏覽器。因此,ASP與一般的腳本語言相比要安全得多。通過使用ASP的組件和對(duì)象技術(shù),用戶可以直接使用ActiveX控件,調(diào)用對(duì)象方法和屬性,以簡(jiǎn)單的方式實(shí)現(xiàn)強(qiáng)大的交互功能。3.PHPPHP即HypertextPreprocessor(超文本預(yù)處理器),其語法借鑒了C、Java、PERL等語言,但只需要很少的編程知識(shí)就能使用PHP建立一個(gè)真正交互的Web站點(diǎn)。它與HTML語言具有非常好的兼容性,使用者可以直接在腳本代碼中加入HTML標(biāo)簽,或者在HTML標(biāo)簽中加入腳本代碼,從而更好地實(shí)現(xiàn)頁面控制。PHP提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫接口,數(shù)據(jù)庫連接方便、兼容性強(qiáng)、拓展性強(qiáng),可以進(jìn)行面向?qū)ο缶幊獭?.JSPJSP即JavaServerPages(Java服務(wù)器頁面),它是SunMicrosystem公司于1999年6月推出的新技術(shù),它是基于JavaServlet以及整個(gè)Java體系的Web開發(fā)技術(shù)。它和ASP非常相似,但嵌入HTML頁面的執(zhí)行代碼不是VBScript之類的腳本,而是Java代碼,這是兩者最明顯的區(qū)別。此外,JSP與ASP還有一個(gè)更為本質(zhì)的區(qū)別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。在ASP下,VBScript代碼被ASP引擎解釋執(zhí)行;在JSP下,代碼被編譯成Servlet并由Java虛擬機(jī)執(zhí)行,這種編譯操作僅在對(duì)JSP頁面的第一次請(qǐng)求時(shí)發(fā)生。二、ASP的工作原理對(duì)于所有訪問同一個(gè)普通HTML網(wǎng)頁的用戶來說,其客戶端瀏覽器的顯示內(nèi)容都是一樣的,從這個(gè)意義上講,普通HTML又稱為靜態(tài)HTML。任何網(wǎng)頁服務(wù)器都支持普通HTML網(wǎng)頁,其執(zhí)行過程如下。一個(gè)用戶首先在瀏覽器的地址欄中輸入要訪問的網(wǎng)頁地址,并回車觸發(fā)這個(gè)請(qǐng)求。瀏覽器將申請(qǐng)發(fā)送到指定的WebServer上。WebServer接收這些申請(qǐng)并根據(jù).htm

或.html的后綴名判斷請(qǐng)求的是HTML文件。WebServer從當(dāng)前硬盤或內(nèi)存中讀取正確的HTML文件,然后將它送回用戶瀏覽器。用戶的瀏覽器解釋這些HTML文件并將結(jié)果顯示出來。HTML網(wǎng)頁的執(zhí)行過程是一個(gè)請(qǐng)求/響應(yīng)的過程,在這個(gè)過程中采用的是B/S(Browser/Server)模型,如圖4.13所示的結(jié)構(gòu),在大多數(shù)情況下,對(duì)于各種典型的WebServer來說,這是有序進(jìn)行的。實(shí)際應(yīng)用中有些過程會(huì)復(fù)雜一些,例如,F(xiàn)orm中的內(nèi)容以及查詢字符串的傳遞。2.ASP頁面的執(zhí)行過程

ASP頁面的執(zhí)行也采用B/S模型,但執(zhí)行過程與HTML網(wǎng)頁執(zhí)行過程有所不同,其執(zhí)行過程如下。用戶在瀏覽器的地址欄中輸入ASP文件,并回車觸發(fā)這個(gè)ASP的請(qǐng)求。瀏覽器將這個(gè)ASP的請(qǐng)求發(fā)送給Web服務(wù)器。WebServer接收這些請(qǐng)求并根據(jù).asp的后綴名判斷這是ASP請(qǐng)求。WebServer從硬盤或內(nèi)存中讀取正確的ASP文件。WebServer將這個(gè)文件發(fā)送到ASP.DLL的特定文件中。ASP文件將會(huì)從頭至尾地執(zhí)行并根據(jù)命令要求生成相應(yīng)的HTML文件。HTML文件被送回瀏覽器。用戶的瀏覽器解釋這些HTML文件并將結(jié)果顯示出來。三、任務(wù)中的各項(xiàng)語法說明1.ASP中向?yàn)g覽器輸出內(nèi)容是由Response對(duì)象的Write方法來負(fù)責(zé)的,也是通常情況下最常用的輸出方法,其語法格式如下:

response.write(任意字符串或變量)//字符串要用英文的“”包圍起來2.在ASP中,可以將數(shù)據(jù)放在一個(gè)變量中,然后使用這個(gè)變量代替數(shù)據(jù)來進(jìn)行操作,在使用變量前需要使用Dim命令來對(duì)變量進(jìn)行聲明例如dimtitle,該命令可以同時(shí)聲明多個(gè)變量,多個(gè)變量之間使用英文的,逗號(hào)進(jìn)行分隔(任何一門程序里,都不允許命令代碼中出現(xiàn)非英文字符,文本輸出除外)例如:dimtitle,name,time。(變量間的逗號(hào)必須為英文逗號(hào))

3.response.write("<br>")是支持HTML代碼的輸出的,其輸出格式與輸出字符串相同,與輸出字符串的不同點(diǎn)是,輸出的HTML代碼會(huì)被瀏覽器解釋,而不像字符串一樣原樣輸出。

4.<scriptlanguage="vbscript"></script>標(biāo)記的含義是在HTML中插入瀏覽器端腳本Script,language屬性指明了該段腳本是VBScript。5.suberror()的含義是定義一個(gè)名為error的過程,該過程的內(nèi)容為,當(dāng)運(yùn)行時(shí)會(huì)彈出 MsgBox的提示框,MsgBox的完整語法為:MsgBox(prompt[,buttons][,title][,helpfile,context])任務(wù)總結(jié)該任務(wù)練習(xí)了如何使用函數(shù)獲取時(shí)間并顯示為指定格式;使用VBScript計(jì)算時(shí)間差;制作彈出窗口以及如何使編寫的程序最優(yōu)化。通過6個(gè)子任務(wù)學(xué)習(xí)了ASP及VBScript的基本語法和編寫格式,其用意在于將讀者通過實(shí)際的操作引導(dǎo)進(jìn)ASP程序的世界里,當(dāng)然,ASP能做的遠(yuǎn)遠(yuǎn)不止這一點(diǎn)內(nèi)容,后面將會(huì)慢慢對(duì)內(nèi)容進(jìn)行拓展,讓讀者充分感受到ASP代碼編寫的魅力。任務(wù)2使用Cookie記錄用戶訪問信息任務(wù)介紹通過此任務(wù)的學(xué)習(xí),學(xué)生可以學(xué)到ASP中Cookie的創(chuàng)建及使用方法任務(wù)分析所謂Cookie是服務(wù)器在用戶訪問網(wǎng)站時(shí)通過瀏覽器(在瀏覽器安全規(guī)定許可情況下)將用戶的資料記錄成一個(gè)特殊的文本存放在用戶的本地電腦中的一種技術(shù),其功能是當(dāng)用戶再次訪問網(wǎng)站時(shí),服務(wù)器會(huì)在用戶機(jī)器的特定位置尋找是否存在該網(wǎng)站的Cookie文件,如果存在則讀取該文件并自動(dòng)為用戶進(jìn)行登錄驗(yàn)證或顯示用戶訪問該網(wǎng)站的歷史紀(jì)錄等,合理使用將會(huì)是一個(gè)非常強(qiáng)大的功能。任務(wù)實(shí)施在任務(wù)中,我們會(huì)通過4個(gè)子任務(wù)來學(xué)習(xí)cookie的各種用法。子任務(wù)1創(chuàng)建一個(gè)單值型的CookieCookie的創(chuàng)建是依靠Response對(duì)象的Cookies方法來設(shè)置的,支持2中Cookie類型,分別是“單值型”和“字典型”,其實(shí)簡(jiǎn)單點(diǎn)描述就是普通變量和數(shù)組的區(qū)別,單值型其語法結(jié)構(gòu)為:Response.cookies(“cookie名稱”).Attribute=字符串或變量步驟一:新建一個(gè)asp文件,命名為cookie.asp,創(chuàng)建后打開該文件,清除全部默認(rèn)生成的代碼,然后輸入以下代碼:步驟二:輸入后在瀏覽器中運(yùn)行http://localhost/cookie.asp,會(huì)顯示如圖4.14所示的內(nèi)容子任務(wù)2創(chuàng)建字典型cookie在上面的任務(wù)中,我們創(chuàng)建了一個(gè)單值型cookie,如下面代碼,可以看到創(chuàng)建一個(gè)cookie值需要設(shè)定最多4個(gè)屬性,如果創(chuàng)建的cookie數(shù)量較多的話,很明顯這將成為一項(xiàng)不小的工程。所以這里就會(huì)用到字典型cookie,他的基本語法是:

Response.cookies(“cookie名稱”)(子項(xiàng)key).Attribute=字符串或變量如果學(xué)習(xí)過數(shù)組相關(guān)知識(shí)的話,應(yīng)該可以比較容易的理解字典型的使用方法步驟一:打開子任務(wù)1創(chuàng)建的cookie.asp,將里面的代碼刪除,來輸入下面的代碼:步驟二:在瀏覽器中運(yùn)行此程序,會(huì)看到如圖4.15所示的結(jié)果。字典型cookie與數(shù)組其實(shí)是相同的結(jié)構(gòu),相當(dāng)為一個(gè)變量設(shè)置子項(xiàng),通過這種方法就可以一次注冊(cè)多個(gè)值,然后只需要做一次屬性設(shè)置就可以完成全部設(shè)定。輸出已有cookie的方法是使用Request.Cookies(cookie變量名),如果是字典型則是Request.Cookies(cookie變量名)(子項(xiàng)),先將cookie賦值給一個(gè)變量,然后使用Response.Write(變量名)的方法進(jìn)行輸出。子任務(wù)3使用cookie自動(dòng)進(jìn)行驗(yàn)證假設(shè)我們要開發(fā)一個(gè)登錄系統(tǒng),如果某個(gè)用戶已經(jīng)登錄過了,則下次訪問網(wǎng)站時(shí)就不需要登錄,利用Cookie就可以非常圓滿地解決這個(gè)問題步驟一:在cookie.asp的最下面加入如下代碼:步驟二:在瀏覽器里運(yùn)行該程序,由于上一段程序已經(jīng)注冊(cè)了名為user的cookie,因此返回的結(jié)果應(yīng)該如圖4.16所示:子任務(wù)4利用Session保存信息步驟一:新建一個(gè)asp文件,命名為session.asp,創(chuàng)建后打開該文件,清除全部默認(rèn)生成的代碼,然后輸入以下代碼:步驟二:新建一個(gè)asp文件,命名為session_show.asp,創(chuàng)建后打開該文件,清除全部默認(rèn)生成的代碼,然后輸入以下代碼:訪問http://localhost/session.asp,將自動(dòng)跳轉(zhuǎn)到session_show.asp,結(jié)果圖4.17所示。知識(shí)拓展一、Cookie概述

Cookie實(shí)際上是一個(gè)字符串或一個(gè)標(biāo),當(dāng)一個(gè)包括Cookie的頁面被用戶瀏覽器讀取時(shí),一個(gè)Cookie就被存儲(chǔ)到本地硬盤中,當(dāng)需要時(shí),該網(wǎng)站可以從用戶的本地硬盤中讀取到這些Cookie。注意:Cookie被存儲(chǔ)在用戶的本地硬盤中,而非服務(wù)器上。 以Windows2000/XP操作系統(tǒng)為例,所有的Cookie都被存儲(chǔ)在系統(tǒng)盤的DocumentsandSettings\(登錄計(jì)算機(jī)的用戶名)的目錄下。例如系統(tǒng)安裝在C盤,登錄名是administrator,那么Cookie存放路徑就在C:\DocumnetsandSettings\administrator\Cookies。存放Cookie的文件命名規(guī)則為:用戶名@網(wǎng)站名.txt。例如:administrator@google[1].txt。這些文件中有時(shí)也使用IP地址來描述網(wǎng)站,如administrator@[2].txt。這些文件都是純文本文件,可以使用任何文件編輯器打開它們。當(dāng)然有些Cookie是臨時(shí)的,還有一些是持續(xù)的。例如,當(dāng)Cookie被ASP用來跟蹤用戶進(jìn)程直到用戶離開網(wǎng)站時(shí),Cookie就是臨時(shí)的。如果Cookie被保存在Cookie文件中直到用戶返回時(shí)又進(jìn)行調(diào)用,這時(shí)的Cookie就是持續(xù)的。 由于Cookie能夠讀、寫用戶本地硬盤中的數(shù)據(jù),所以對(duì)于Cookie的使用一直有很大的爭(zhēng)議,很多用戶擔(dān)心個(gè)人隱私被泄漏或?qū)Ρ镜赜?jì)算機(jī)的安全造成威脅。但從目前的使用看,Cookie只能向用戶本地硬盤的固定目錄寫入文本文件,而不是可執(zhí)行文件,它們對(duì)計(jì)算機(jī)不會(huì)構(gòu)成危害。二、Session概述

Session對(duì)象的主要用途是保存信息,當(dāng)用戶登錄網(wǎng)站時(shí),系統(tǒng)為其分配一個(gè)Session,只有當(dāng)用戶退出時(shí),或者Session生命周期結(jié)束時(shí),信息才會(huì)清除。通過向客戶程序發(fā)送唯一的Cookie可以管理服務(wù)器上的Session對(duì)象。當(dāng)用戶第一次請(qǐng)求ASP應(yīng)用程序中的某個(gè)頁面時(shí),ASP要檢查HTTP頭信息,查看是否有名為ASPSESSIONID的Cookie發(fā)送過來,如果沒有,則服務(wù)器會(huì)啟動(dòng)新的會(huì)話,并為該會(huì)話生成一個(gè)全局唯一的值,再把這個(gè)值作為新ASPSESSIONIDCookie的值發(fā)送給客戶端。正是使用這種Cookie,可以訪問存儲(chǔ)在服務(wù)器上的屬于客戶程序的信息。Session對(duì)象最常見的作用就是存儲(chǔ)用戶的首選項(xiàng)。例如,如果用戶指明不喜歡查看圖形,就可以將該信息存儲(chǔ)在Session對(duì)象中。另外還經(jīng)常被用在鑒別客戶身份的程序中。要注意的是,會(huì)話狀態(tài)僅在支持Cookie的瀏覽器中保留,如果客戶關(guān)閉了Cookie選項(xiàng),Session也就不能發(fā)揮作用了。三、Session對(duì)象的屬性

Session對(duì)象提供的屬性主要有Timeout、SessionID、CodePage、LCID。1.Timeout屬性

Timeout屬性以分鐘為單位為該應(yīng)用程序的Session對(duì)象指定超時(shí)時(shí)限。如果用戶在該超時(shí)時(shí)限之內(nèi)不刷新或請(qǐng)求網(wǎng)頁,則該會(huì)話將終止。系統(tǒng)默認(rèn)的時(shí)間為900秒(15分鐘),該時(shí)間可以根據(jù)實(shí)際情況在IIS中重新設(shè)置,也可以通過代碼指定,語法格式如下:Session.Timeout=分鐘數(shù)2.SessionID屬性

SessionID

屬性返回用戶的會(huì)話標(biāo)識(shí)。在創(chuàng)建會(huì)話時(shí),服務(wù)器會(huì)為每一個(gè)會(huì)話生成一個(gè)唯一的標(biāo)識(shí)。會(huì)話標(biāo)識(shí)以長(zhǎng)整型數(shù)據(jù)類型返回。在很多情況下,SessionID

可以用于Web頁面注冊(cè)統(tǒng)計(jì)。但是要注意,如果用戶刷新了網(wǎng)頁,將被認(rèn)為是新的訪問者,服務(wù)器將為其重新分配SessionID。

Session對(duì)象的SessionID

屬性是只讀屬性,它一般在IIS的內(nèi)部使用,以識(shí)別在Session中的訪問者,也可用于Web頁面的注冊(cè)統(tǒng)計(jì)。 訪問Session對(duì)象的SessionID

屬性的語法格式如下:Session.SessionID3.CodePage屬性codepage屬性是規(guī)定在顯示動(dòng)態(tài)內(nèi)容時(shí)所使用的字符集,如果制作的網(wǎng)頁腳本與WEB服務(wù)端的默認(rèn)代碼頁不同,則必須指明代碼頁:Codepage屬性的語法格式如下:codepage=936簡(jiǎn)體中文GBKcodepage=950繁體中文BIG5codepage=437美國(guó)/加拿大英語codepage=932日文codepage=949韓文codepage=866俄文codepage=65001unicodeUFT-84.LCID屬性

Session對(duì)象的LCID屬性可以用來設(shè)置動(dòng)態(tài)的文本內(nèi)容顯示時(shí)的格式,如日期、時(shí)間、數(shù)字、貨幣等。這個(gè)屬性主要是針對(duì)不同國(guó)家和地區(qū)的用戶在訪問時(shí),日期、時(shí)間、數(shù)字、貨幣等顯示的格式的不同習(xí)慣而做相應(yīng)的設(shè)置,一經(jīng)設(shè)定,在整個(gè)ASP應(yīng)用程序中都依照此設(shè)定來顯示,其語法格式如下:Session.LCID=LocalID其中,LocalID

是所設(shè)定的區(qū)域代碼,它是一個(gè)整型數(shù)字,如1033表示按照美國(guó)(en-us)的習(xí)慣顯示,2052表示按照中文(中華人民共和國(guó),zh-cn)的習(xí)慣顯示。通過該屬性可以制作一個(gè)國(guó)際化的Web站點(diǎn)。五、IE瀏覽器cookie設(shè)置如果瀏覽器無法記錄cookie,那么我們可以通過單擊“工具”菜單上的“Internet選項(xiàng)”,然后單擊“隱私”選項(xiàng)卡來配置IE中的隱私設(shè)置,位置如圖4.18所示“隱私”設(shè)置滑塊有六種設(shè)置:“禁止所有Cookie”、“高”、“中高”、“中”(默認(rèn)級(jí)別)、“低”和“接受所有Cookie”。下面列出滑塊所設(shè)置的“隱私”設(shè)置:“禁止所有Cookie”:來自所有網(wǎng)站的Cookie都將被禁止,并且計(jì)算機(jī)中現(xiàn)有的Cookie不能由創(chuàng)建它們的網(wǎng)站讀取。針對(duì)站點(diǎn)的隱私操作無法覆蓋這些設(shè)置。“高”:禁止?jié)M足以下條件的Cookie:沒有簡(jiǎn)短隱私策略;或者具有簡(jiǎn)短隱私策略,而且該策略允許不經(jīng)您明確同意就使用個(gè)人身份信息。在安裝IE6之前已經(jīng)存儲(chǔ)在計(jì)算機(jī)上的Cookie將受到約束(對(duì)其進(jìn)行限制,以使其只能在第一方上下文中被讀?。?。針對(duì)站點(diǎn)的隱私操作可以覆蓋這些設(shè)置。另外要注意一點(diǎn),除非我們將滑塊移動(dòng)到“接受所有Cookie”或“禁止所有Cookie”,否則更改隱私首選項(xiàng)不會(huì)影響那些已經(jīng)設(shè)置了Cookie接受策略的Cookie。當(dāng)我們第一次通過隱私首選項(xiàng)限制Cookie時(shí),IE將顯示“隱私”對(duì)話框。該對(duì)話框只出現(xiàn)一次,除非我們清除了“不再顯示此信息”復(fù)選框。“隱私”對(duì)話框說明了當(dāng)我們?cè)L問一個(gè)不符合隱私首選項(xiàng)的網(wǎng)站時(shí),將在狀態(tài)欄上添加一個(gè)新的狀態(tài)圖標(biāo)(“隱私報(bào)告”圖標(biāo))。我們可以雙擊該圖標(biāo)以查看隱私報(bào)告,此報(bào)告指出該網(wǎng)站的隱私策略因何與您的首選項(xiàng)沖突,或者指出該網(wǎng)站沒有發(fā)布隱私策略。當(dāng)然,我們也可以覆蓋Internet區(qū)域中所有網(wǎng)站的Cookie自動(dòng)處理方式,方法是,單擊“隱私”選項(xiàng)卡中的“高級(jí)”。在這里可以使用“高級(jí)隱私設(shè)置”對(duì)話框?qū)⒌谝环胶偷谌紺ookie配置為“接受”、“禁止”或“提示”,該對(duì)話框還提供一個(gè)總是允許會(huì)話Cookie的復(fù)選框,該設(shè)置圖4.19所示不過這里要注意的是即使在“高級(jí)隱私設(shè)置”對(duì)話框中指明禁止Cookie,計(jì)算機(jī)中現(xiàn)有的Cookie仍然可由創(chuàng)建它們的網(wǎng)站讀取。任務(wù)總結(jié)本任務(wù)主要學(xué)習(xí)了ASP中的cookie的創(chuàng)建和使用方法以及簡(jiǎn)單的session使用方法,該技術(shù)主要應(yīng)用于網(wǎng)站登錄后的資料傳遞及驗(yàn)證,基本上所有網(wǎng)站都離不開此技術(shù),甚至不少網(wǎng)站都要求必須開啟cookie支持才能夠正常訪問。任務(wù)3使用ASP獲取用戶表單數(shù)據(jù)任務(wù)介紹

通過此任務(wù)的學(xué)習(xí),學(xué)生可以學(xué)到如何使用ASP獲取用戶提交的表單數(shù)據(jù)任務(wù)分析 通過5個(gè)子任務(wù)學(xué)習(xí)ASP的表單接收,條件判斷,循環(huán)結(jié)構(gòu)等內(nèi)容,并結(jié)合VBScript進(jìn)行復(fù)合驗(yàn)證。任務(wù)實(shí)施子任務(wù)1使用ASP接收表單提交的數(shù)據(jù)步驟一:新建一個(gè)ASP文件,命名為form.asp,打開后切換到代碼模式,刪除所有默認(rèn)代碼。 步驟二:首先要先創(chuàng)建用戶輸入界面,可以輸入下面代碼,即可生成一個(gè)帶有表單的信息輸入表格。輸入后,效果如圖4.20所示,是一個(gè)用戶的登錄界面。步驟三:上面代碼中一共創(chuàng)建了2個(gè)文本字段,分別是“用戶名”,字段名設(shè)置為username,以及“密碼”,字段名設(shè)置為password,他們的功能是用來接收用戶輸入并以對(duì)應(yīng)字段的名稱進(jìn)行提交。 步驟四:接下來新建一個(gè)ASP文件,命名為get_form.asp,打開后清空所有默認(rèn)代碼后輸入下面代碼段。接收用戶表單傳遞的數(shù)據(jù)的方法是使用Request.Form(字段名)使用此方法將接收的字段信息保存到變量中,然后使用Response.Write()方法將變量輸出,上面代碼中使用了<%=變量名%>的語法,其效果等同于<%Response.Write(變量名)%>,是一種簡(jiǎn)便的輸出方法,使用此方法可以很好的減少代碼量,讓代碼看起來更簡(jiǎn)單易讀。 本例中一共創(chuàng)建了2個(gè)頁面,第一個(gè)頁面是我們上網(wǎng)時(shí)看到的操作界面,即前臺(tái)部分,第二個(gè)頁面才是實(shí)際負(fù)責(zé)對(duì)前臺(tái)界面的數(shù)據(jù)進(jìn)行操作處理的程序頁,所有對(duì)數(shù)據(jù)的邏輯操作,數(shù)據(jù)操作全部由程序頁完成,并將結(jié)果輸出到前臺(tái)反饋給用戶,這也是程序編寫的基本模式。下面我們對(duì)程序進(jìn)行一下修改可以實(shí)現(xiàn)更為復(fù)雜的功能。子任務(wù)2使用IF…THEN…ENDIF進(jìn)行條件判斷步驟一:打開子任務(wù)1中的get_form.asp,將已有代碼替換為下面代碼

步驟二:在瀏覽器中運(yùn)行該程序,這里使用len函數(shù)計(jì)算傳遞過來的username長(zhǎng)度是否小于3,如果小于則報(bào)錯(cuò),并終止程序運(yùn)行(Response.End效果為強(qiáng)制終止程序)。子任務(wù)3制作用戶登錄的身份驗(yàn)證步驟一:將上一個(gè)任務(wù)中的代碼修改為如下代碼。上面程序修改判斷條件為如果用戶輸入的用戶名不等于lhkk,密碼不等于123456,則提示輸入的用戶名密碼錯(cuò)誤。<>在ASP中代表不等于,兩個(gè)條件之間使用or進(jìn)行連接代表用戶名和密碼中的任何一個(gè)不正確都會(huì)被攔截并終止程序運(yùn)行。 步驟二:在瀏覽器中打開該頁,如果輸入的用戶名不是lhkk,且密碼不是123456,則會(huì)顯示您輸入的用戶名或密碼錯(cuò)誤。子任務(wù)4使用VBScript進(jìn)行動(dòng)態(tài)身份驗(yàn)證上面兩段程序都是通過asp的程序頁對(duì)用戶輸入的信息進(jìn)行判斷,這就需要一個(gè)頁面跳轉(zhuǎn)刷新的問題,而很多用戶并不喜歡這種刷新式的判斷方法,他們希望可以讓輸入判斷在輸入頁面完成而不必刷新頁面,這里就可以應(yīng)用到VBScript的功能了。 步驟一:打開form.asp,修改代碼為:這段代碼除了增加了VBScript代碼外,還修改了“登錄”按鈕的代碼為,<inputtype="button"name="button"id="button"value="登錄"onclick="user">,首先是為username按鈕增加了onclick=”user”的事件,還修改了按鈕type屬性為"button",一定要注意,全部修改完畢后這個(gè)例子就擁有了兩套驗(yàn)證機(jī)制,首先是用戶登錄頁面from.asp使用VBScript進(jìn)行了第一輪的用戶身份驗(yàn)證,然后提交后會(huì)在get_form.asp再進(jìn)行第二輪的驗(yàn)證,這樣可以防止VBScript失效的情況下仍舊可以對(duì)用戶輸入的內(nèi)容進(jìn)行驗(yàn)證的雙重保險(xiǎn)。 步驟二:重新運(yùn)行form.asp,隨意輸入用戶名和密碼,點(diǎn)擊登錄就會(huì)彈出如圖4.21所示的對(duì)話框。子任務(wù)5使用selectcase做多條件判斷使用IF…THEN…ENDIF雖然可以進(jìn)行條件判斷,但一旦出現(xiàn)條件復(fù)雜的多項(xiàng)判斷,使用他就比較麻煩了,因此多個(gè)條件中進(jìn)行選擇的更好方法是使用SelectCase語句。SelectCase結(jié)構(gòu)提供了If...Then...ElseIf

結(jié)構(gòu)的一個(gè)變通形式,可以從多個(gè)語句塊中選擇執(zhí)行其中的一個(gè)。SelectCase語句提供的功能與If...Then...Else語句類似,但是可以使代碼更加簡(jiǎn)練易讀。SelectCase結(jié)構(gòu)在其開始處使用一個(gè)只計(jì)算一次的簡(jiǎn)單測(cè)試表達(dá)式。表達(dá)式的結(jié)果將與結(jié)構(gòu)中每個(gè)Case的值比較。如果匹配,則執(zhí)行與該Case關(guān)聯(lián)的語句塊。步驟一:創(chuàng)建一個(gè)ASP文件,命名為:select.asp,打開后切換到代碼模式并清空所有代碼,輸入如下代碼:步驟二:在創(chuàng)建一個(gè)文件,命名為case.asp,同樣打開后清空代碼,輸入下面代碼。這里要注意的是,Case結(jié)構(gòu)只計(jì)算開始處的一個(gè)表達(dá)式,并且只計(jì)算一次,而If...Then...ElseIf

結(jié)構(gòu)計(jì)算每個(gè)ElseIf

語句的表達(dá)式,這些表達(dá)式可以各不相同。因此僅當(dāng)每個(gè)ElseIf

語句計(jì)算的表達(dá)式都相同時(shí),才可以使用SelectCase結(jié)構(gòu)代替If...Then...ElseIf

結(jié)構(gòu)。SelectCase語句也是可以是嵌套的,每一層嵌套的SelectCase語句必須有與之匹配的EndSelect語句。知識(shí)拓展一、ASP的內(nèi)置對(duì)象

ASP提供了6個(gè)內(nèi)置對(duì)象,這些對(duì)象在使用時(shí)不需要經(jīng)過任何聲明或建立的過程。這些內(nèi)置對(duì)象的基本功能如下。Request對(duì)象:將用戶端輸入的數(shù)據(jù)傳遞給服務(wù)器。Response對(duì)象:向客戶端輸出數(shù)據(jù)。Response和Request可以說是一對(duì)孿生兄弟,一個(gè)負(fù)責(zé)收集,另一個(gè)負(fù)責(zé)輸出。Application對(duì)象:可以供全體應(yīng)用程序使用。使用Application對(duì)象不僅可以在給定的應(yīng)用程序的所有用戶之間共享,而且可以在服務(wù)器運(yùn)行期間持久地保存數(shù)據(jù)。Application對(duì)象:可以供全體應(yīng)用程序使用。使用Application對(duì)象不僅可以在給定的應(yīng)用程序的所有用戶之間共享,而且可以在服務(wù)器運(yùn)行期間持久地保存數(shù)據(jù)。Session對(duì)象:供特定用戶會(huì)話使用。Session對(duì)象與Application對(duì)象的作用相近,使用Session對(duì)象可以存儲(chǔ)特定的用戶會(huì)話所需的信息。Application與Session的區(qū)別在于,網(wǎng)上的用戶都可以使用Application的對(duì)象,而Session只是針對(duì)一個(gè)特定的客戶而已。Server對(duì)象:提供對(duì)服務(wù)器上的方法和屬性的訪問,其中大多數(shù)方法和屬性是作為實(shí)用程序的功能服務(wù)的。最常用的方法是創(chuàng)建ActiveX組件的實(shí)例(Server.CreateObject)。其他方法用于將URL或HTML編碼成字符串,將虛擬路徑映射到物理路徑以及設(shè)置腳本的超時(shí)期限。ObjectContext

對(duì)象:可以使用該對(duì)象提交或放棄一項(xiàng)由MicrosoftTransactionServer(MTS)管理的事務(wù),它由ASP頁包含的腳本初始化。二、什么是Request對(duì)象方法使用Request對(duì)象可以訪問任何基于HTTP請(qǐng)求傳遞的所有信息,包括從HTML表格用POST方法或GET方法傳遞的參數(shù)、Cookie和用戶認(rèn)證。Request對(duì)象使用戶能夠訪問客戶端發(fā)送給服務(wù)器的二進(jìn)制數(shù)據(jù)。2.Request對(duì)象的屬性

TotalBytes是Request對(duì)象惟一的屬性,它提供關(guān)于用戶請(qǐng)求的字節(jié)數(shù)量的信息,返回由客戶端發(fā)出的請(qǐng)求信息的字節(jié)數(shù)。使用中往往關(guān)心的是請(qǐng)求信息的值,而不是它的長(zhǎng)度,所以這個(gè)屬性很少被用于ASP頁。3.Request對(duì)象的方法

BinaryRead是Request對(duì)象的惟一方法,它允許訪問從用戶頁面<FORM>段中傳遞給服務(wù)器的請(qǐng)求信息的完整內(nèi)容、碁語法格式如下:Requset.BinaryRead(count)說明:count表示當(dāng)數(shù)據(jù)作為POST請(qǐng)求的一部分發(fā)往服務(wù)器時(shí),從客戶請(qǐng)求中獲得數(shù)據(jù)的字節(jié)數(shù)。該方法返回一個(gè)Variant數(shù)組(或者SafeArray).如果ASP代碼已經(jīng)引用了Request.Form集合,這個(gè)方法就不能再用。同樣,如果用了BinaryRead方法,也不能再訪問Request.Form集合。4.Request對(duì)象的使用在ASP中,當(dāng)請(qǐng)求一個(gè)頁面或傳遞一個(gè)表單時(shí),Request對(duì)象為腳本提供了客戶端瀏覽器所提供的全部信息。其語法格式為:Request.[集合|屬性|方法](變量)5.ASP與表單的交互在動(dòng)態(tài)網(wǎng)頁設(shè)計(jì)中,往往由表單來接受用戶輸入的信息。表單標(biāo)記的語法格式如下:<formmethod=傳送方式action="URL">內(nèi)容</form>其中:"URL"設(shè)置處理程序的相對(duì)或絕對(duì)位置。“傳送方式”用于指明交互表單的信息傳送方式,有Post和Get兩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論