[摘 要] 闡述了Session對象的作用及應(yīng)用方法,指出了Session對象的特點,并在此基礎(chǔ)上給出了Session對象的幾個應(yīng)用實例。最后對Session對象的局限性作出了分析。
[關(guān)鍵詞] ASP對象 ASP程序設(shè)計 Session對象
ASP是目前廣泛使用的動態(tài)網(wǎng)頁制作技術(shù),很多電子商務(wù)網(wǎng)站都使用ASP技術(shù)進行開發(fā)。在電子商務(wù)網(wǎng)站開發(fā)和運行中,防止非法用戶登錄,保存登錄用戶信息和用戶購物信息,在網(wǎng)站的各頁間共享信息,是網(wǎng)站必須具備的功能。這些功能可以通過ASP的Session對象和Session數(shù)組實現(xiàn)。
本文結(jié)合實例,介紹利用Session對象在網(wǎng)站開發(fā)中保存、傳遞登錄用戶信息以及利用Session數(shù)組同時保存、傳遞多個信息的方法。
一、Session對象
1.Session對象的作用
Session對象是ASP的內(nèi)置對象之一,負責記載單個用戶的信息。不同用戶的信息用不同的Session對象記載。Session對象最大的特點是,Session一旦被創(chuàng)建,網(wǎng)站中各頁都可以讀取它。Session對象又稱為會話級對象,當一個用戶訪問網(wǎng)站時,即啟動了一個Session對象,即使該用戶在網(wǎng)站的各頁間跳轉(zhuǎn)時,該Session信息一直存在,網(wǎng)站的任何一個頁面都可以讀取它,直至該用戶離開網(wǎng)站。
Session對象有有效期,一般為20分鐘。當用戶離開網(wǎng)站或在Session有效期內(nèi)不再點擊網(wǎng)站的任何內(nèi)容時,該Session對象會自動被刪除。
2. Session對象的創(chuàng)建與讀取
可以把登錄用戶的用戶名、密碼等信息存儲在Session中。創(chuàng)建Session的語句為:Session(\"Session名字\")=變量或字符串信息。讀取Sessi on信息的語句為:變量名=Session(\"Session名字\")。
Session數(shù)組的創(chuàng)建和讀取與簡單變量基本上是一樣的,不同的是一般的Session變量只能存儲一個數(shù)據(jù),而Session數(shù)組能夠存儲多個數(shù)據(jù)。Session數(shù)組當成一個整體看待,只能把一個數(shù)組整體存入或取出。
二、Session對象應(yīng)用實例
1.利用Session對象防止非法用戶訪問并在網(wǎng)站內(nèi)各頁間傳遞、保持用戶信息
在互聯(lián)網(wǎng)的搜索引擎中,輸入查詢關(guān)鍵詞,便會找到包含該關(guān)鍵詞的若干網(wǎng)頁,點擊即可進入,這對網(wǎng)站的安全構(gòu)成了威脅。網(wǎng)站可以利用Session對象,控制用戶必須先登錄,登錄成功后才能訪問其他網(wǎng)頁。控制的方法是在其他網(wǎng)頁的開頭加上一段程序:
<%
If Session(\"User_Name\")= \"\"then '若Session(\"User_Name\")為空,則表示用戶沒有登錄過
Response.Redirect \"Login.asp\" '直接轉(zhuǎn)入登錄頁(Login.asp)
End
%>
如果用戶在登錄頁登錄了,則用<% Session(\"User_Name\")=\"用戶名\" %>語句創(chuàng)建名為“User_Name”的Session,將用戶名存入。登錄頁Login.asp主要代碼如下:
'用戶要填寫的登錄表單,略
<%
If Request.Form(\"User_Name\")<>\"\" Then '若用戶填寫了用戶名,則
Session(\"User_Name\")=Request.Form(\"User_Name\") '將用戶名存入名為User_Name的Session變量中
End If
%>
存儲用戶名的Session建立后,用戶再訪問其他頁時,其他頁都可以通過讀取Session(\"User_Name\")的值獲得該用戶信息。
2.利用Session數(shù)組在頁間傳遞、保持用戶購物信息
可以利用Session對象具有的“一旦創(chuàng)建,各頁共享”的特點,以及Session數(shù)組可以一次傳遞多個變量的特點,為網(wǎng)站制作一個簡易購物車。將用戶在瀏覽商品頁選擇的商品名稱及數(shù)量,傳遞到“查看購物籃”頁。以下給出制作簡易購物車實例。
(1)供用戶瀏覽、選擇商品的頁面程序SelectProduct1.asp部分代碼如下:
<%
dim ar1(2) '聲明一個數(shù)組ar1
dim ar2(2)
……
If Request(\"b1\").Count > 0 Then '若表單項b1不空,則用戶選擇了該產(chǎn)品
ar1(0)=Request(\"b1\") '將獲取的商品名稱存入ar1數(shù)組的第一個元素中
ar1(1)=Request(\"n1\") '將獲取的商品數(shù)量存入ar1數(shù)組的第二個元素中
Session(\"array_s1\") = ar1 '將數(shù)組ar1存入名為array_s1的Session數(shù)組中
Session(\"bz1\")=1 '將1存入名為bz1的Session中,做標記用,表示數(shù)組不空
End If
……'其他商品依次類推
%>
請選擇商品,每件100元:
<Form Method=\"Post\" Action=\" SelectProduct1.asp\">
<P><Input Type=\"CheckBox\" Name=\"b1\" Value=\"籃球\">籃球
購買數(shù)量<Input Type=\"input\" Name=\"n1\" Value=\"1\">'n1為接受數(shù)量的文本框,默認值為1
<!——其他商品依次類推——>
<P><Input Type=\"Submit\" Value=\"提交\" Name=\"x1\">
<A Href=\"SelectProduct2.asp\">購買其他商品</A>
<A Href=\"Display.asp\">查看購物車</A></P>
</Form>
本頁中,若用戶選擇了一個商品,則通過Request對象分別獲取商品名稱和購買數(shù)量,存入數(shù)組,再將該數(shù)組整體存入Session中,以便在“查看購物車”頁中將所選商品名稱和購買數(shù)量讀出來。
(2)其它商品頁程序同SelectProduct1.asp。
(3)“查看購物車”頁程序Display.asp如下:
<%
If Session(\"bz1\")=1 Then
ar1=Session(\"array_s1\") '將Session數(shù)組array_s1整體取出,寫入名為ar1的數(shù)組變量中
Response.Write ar1(0)+\"nbsp\"+ar1(1)+\"<Br>\" '將數(shù)組中各元素輸出,即顯示商品名稱和購買數(shù)量
End If
…… '其他商品依次類推
%>
三、Session對象與隱藏域的綜合應(yīng)用
隱藏域是表單中類型為Hidden的文本框,該文本框在頁面上不可見。表單提交時,隱藏域的值一并被提交。利用的這個特點,可以將登錄者的用戶名,即Session(\"User_Name\")的值,作為隱藏域的值,在用戶提交購物表單時一并提交。隱藏域定義與賦值關(guān)鍵代碼如下:
<Input Type=\"Hidden\" Name=\"user_name\" Value=\"<%= Session(\"User_Name\")%>\"
四、使用Session對象時應(yīng)注意的問題
Session對象雖然功能非常強大,但也有一定的局限性,使用時應(yīng)充分注意。
Session的使用要借助于客戶端。若某客戶端機器出現(xiàn)問題,則網(wǎng)站對該用戶的記載中斷。同時,服務(wù)器與客戶端的每次連接時要占用網(wǎng)絡(luò)資源,傳遞的數(shù)據(jù)量較多時將影響網(wǎng)速。
五、總結(jié)
Session對象在網(wǎng)站開發(fā)中起著非常重要的作用。利用Session對象和Session數(shù)組,在網(wǎng)站各頁間可以一次傳遞單個或多個數(shù)據(jù)。Session對象占用大量的網(wǎng)站資源,應(yīng)注意使用后盡快刪除。合理地使用Session,將有助于提高網(wǎng)站開發(fā)的效率。
參考文獻:
[1]菜翠平 尚俊杰:網(wǎng)絡(luò)程序設(shè)計ASP(第2版)[M].北京:清華大學出版社,北方交通大學出版社,2004年2月P73
[2]石志國 王志良 薛為民:ASP精解案例教程[M].北京:清華大學出版社,北方交通大學出版社,2004年1月P118
[3]唐 晏:ASP.net頁面之間數(shù)據(jù)傳遞的實現(xiàn)[J].計算機應(yīng)用研究,2006 Vol.23 No.5 P.228