在ASP中,有兩個內部對象可以進行一些資訊存儲,它們是Application 對象和Session 對象,其中Application 對像是對於整個應用程式期間而言的,它對於所有訪問網站的用戶來講是共享的,而Session 是對於會話期間而言的,它僅對與當前使用者存在。
Session物件簡介
當您在電腦上操作某個應用程式時,您會開啟它,做些更改,然後關閉它,就很像對話(Session)。電腦知道您是誰,它清楚您在何時打開和關閉應用程式。然而,在因特網上問題出現了,由於HTTP位址無法保持狀態,Web伺服器並不知道您是誰以及您做了什麼。
Session 物件的主要用途 是針對每個造訪網站的使用者來儲存一些訊息,例如,當使用者登入後,我們可以在該使用者的Session中儲存資訊來標識目前使用者已登入。
Session 的原理是這樣的,當使用者第一次造訪網站時,IIS為這個使用者分配了一個標識,這個標識是一列很長的隨機字串,這個隨機字串叫做SessionID,而後伺服器將其發送給客戶端時期保存在Cookies中,接下來用戶再訪問伺服器上的其他頁面時,伺服器獲得這個SessionID,並從記憶體中獲取和這個SessionID相關的數據,放在Session物件的集合中。
Contents集合
我們可以在這個集合中儲存目前使用者的某些信息,例如下面的程式碼展示如何儲存和讀取資料:
<% '名字为username的Session集合中存储了一个“ZhangSan”字符串 Session.Contents("username") = "ZhangSan" Dim UserName '读取Session中的数据,可以省略Contents' UserName = Session.Contents("username")和下面一样 UserName = Session("username") Response.Write("<h2 id="nbsp-nbsp-UserName-nbsp-nbsp">" & UserName & "</h2>") %>
Session對象有三個方法(Contents.Remove、Contents.RemoveAll、Abandon),用來刪除 Session 集合中的資料或放棄目前的Session。
第一個範例(SessionContents.asp)我們將示範如何使用Remove、RemoveAll方法,程式碼如下:
...<h3 id="当前SessionID值为-nbsp-Session-SessionID">当前SessionID值为 <%=Session.SessionID%></h3><h3 id="Session中存储数据">Session中存储数据</h3><%'利用 Contents.Count 遍历 Session 的过程Sub Traversal_P() Dim i For i = 1 To Session.Contents.Count Response.Write("Session(""" & Session.Contents.key(i) & """) = " & Session.Contents(i)) Response.Write("<br>") NextEnd Sub'For Each 遍历 Session.Contents 集合 Sub Traversal_E() Dim x For Each x In Session.Contents Response.Write("Session(""" & x & """) = " & Session(x)) Response.Write("<br>") NextEnd Sub'Session.Contents中存储了多个数据,如下Session.Contents("username") = "ZhangSan"Session.Contents("password") = "12345678"Session.Contents("date")="2015/08/14"Session.contents("author")="pchmonster"'遍历 Contents 集合Traversal_E()%><hr><h3 id="删除名为username的数据">删除名为username的数据</h3><%'删除 username 数据Session.Contents.Remove("username")'重新遍历 Contents 集合Traversal_P()%><hr><h3 id="删除所有的Session数据">删除所有的Session数据</h3><%'删除所有的数据Session.Contents.RemoveAll() Traversal_E()%>...
上面的程式碼執行後顯示如下:
這些程式碼中示範如何遍歷Session.Contents集合的兩種方法,請仔細看看。
第二個範例(SessionAbandon.asp)示範了Abandon 方法的效果,透過演示,我們看出來RemoveAll 方法和Abandon 方法的差異在於RemoveAll 僅僅刪除了目前的集合,但客戶還是使用同一個SessionID(第一個例子中SessionID 一直保持不變化)。而 Abandon 方法呼叫後,在目前頁面仍可存取 Session 集合,在關閉頁面或刷新頁面後,先前的 Session 會被刪除(本範例中 SessionID 會變更)。
程式碼如下:
<%'Abandon的使用后,在当前页面仍可以访问Session集合,关闭页面或刷新后'会使Session被删除,SessionID也就会改变Session.Abandon()'首先我们要记录一下SessionID的值,存放到Cookies中Dim numVisits, SID Response.Cookies("numVisits").Expires = DateAdd("d", 10, Now) Response.Cookies("SID").Expires = DateAdd("d", 10, Now) SID = Request.Cookies("SID") numVisits = Request.Cookies("numVisits")If numVisits = "" or SID = "" Then '如果是第一次运行该页面,则记录当前Sessio nID值 Response.Cookies("numVisits") = 1 Response.Cookies("SID") = Session.SessionID%> <h3 id="您这是第一次访问该页面-当前页面的SessionID为">您这是第一次访问该页面,当前页面的SessionID为</h3> <h2><%=Session.SessionID%></h2><%Else%> <hr> <h3 id="您这是第-numVisits-次访问该页面-当前页面的SessioID为">您这是第<%=numVisits%>次访问该页面,当前页面的SessioID为</h3> <h2><%=Session.SessionID%></h2> <h3 id="您第一次访问时的SessionID为">您第一次访问时的SessionID为</h3> <h2><%=Request.Cookies("SID")%></h2><% numVisits = numVisits + 1 Response.Cookies("numVisits") = numVisitsEnd If%>
第一次執行該頁面,會先記錄目前的SessionID 到Cookies 中,如下圖:
多次刷新該頁面或重新開啟後,因為Abandon 方法,會使Session 刪除,SessionID 會一直改變,如下圖:
CodePage、SessionID、Timeout 屬性
CodePage 屬性定義了目前頁面輸出內容的字元集,這裡的字元集以數字表示。例如
936 表示 Chinese Simplified (GB2312) 簡體中文
950 表示 Chinese Traditional (Big5) 繁體中文
#65001 Traditional (Big5) 繁體中文
#65001 #特別說明
作用於所有靜態的字串
Response.CodePage, Session.CodePage 作用於所有動態輸出的字串
Response.CodePage 作用範圍只在於 a single response
Session.CodePage 的作用範圍卻是在 all responses in a session
SessionID 属性可以获得当前用户的 SessionID,有时候在客户端浏览器不支持 Cookies 的情况下,你可以将 SessionID 附加在客户端的 QueryString 变量中,从而标识每一个客户端。
Timeout 属性用于设定客户的 Session 超时期。客户对于 SessionID 并不是长期占有的,在其一段时间内没有和服务器端进行任何交互后,服务器端将放弃该 Session。
下面的代码(SessionCST.asp)中将演示这个三个属性的使用方法,代码如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <%Session.CodePage = 65001'作用于所有动态输出的字符串%> <!doctype html> <html> <head> <meta charset="utf-8"> <title>CodePage、SessionID、TimeOut属性的应用</title> </head> <body> <h3 id="当前页面使用的CodePage是">当前页面使用的CodePage是:</h3> <h2><%=Session.CodePage%></h2> <hr> <h3 id="当前页面的SessionID是">当前页面的SessionID是:</h3> <h2><%=Session.SessionID%></h2> <hr> <h3 id="当前页面Session默认超时时间为">当前页面Session默认超时时间为:</h3> <h2 id="Session-Timeout-分钟"><%=Session.Timeout%>分钟</h2> </body> </html>
运行后,效果如下:
【相关推荐】
1. ASP免费视频教程
以上是介紹ASP中Session物件的三種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C#在.NET中的編程過程包括以下步驟:1)編寫C#代碼,2)編譯為中間語言(IL),3)由.NET運行時(CLR)執行。 C#在.NET中的優勢在於其現代化語法、強大的類型系統和與.NET框架的緊密集成,適用於從桌面應用到Web服務的各種開發場景。

C#是一種現代、面向對象的編程語言,由微軟開發並作為.NET框架的一部分。 1.C#支持面向對象編程(OOP),包括封裝、繼承和多態。 2.C#中的異步編程通過async和await關鍵字實現,提高應用的響應性。 3.使用LINQ可以簡潔地處理數據集合。 4.常見錯誤包括空引用異常和索引超出範圍異常,調試技巧包括使用調試器和異常處理。 5.性能優化包括使用StringBuilder和避免不必要的裝箱和拆箱。

C#.NET應用的測試策略包括單元測試、集成測試和端到端測試。 1.單元測試確保代碼的最小單元獨立工作,使用MSTest、NUnit或xUnit框架。 2.集成測試驗證多個單元組合的功能,常用模擬數據和外部服務。 3.端到端測試模擬用戶完整操作流程,通常使用Selenium進行自動化測試。

C#高級開發者面試需要掌握異步編程、LINQ、.NET框架內部工作原理等核心知識。 1.異步編程通過async和await簡化操作,提升應用響應性。 2.LINQ以SQL風格操作數據,需注意性能。 3..NET框架的CLR管理內存,垃圾回收需謹慎使用。

C#.NET面試問題和答案包括基礎知識、核心概念和高級用法。 1)基礎知識:C#是微軟開發的面向對象語言,主要用於.NET框架。 2)核心概念:委託和事件允許動態綁定方法,LINQ提供強大查詢功能。 3)高級用法:異步編程提高響應性,表達式樹用於動態代碼構建。

C#.NET是構建微服務的熱門選擇,因為其生態系統強大且支持豐富。 1)使用ASP.NETCore創建RESTfulAPI,處理訂單創建和查詢。 2)利用gRPC實現微服務間的高效通信,定義和實現訂單服務。 3)通過Docker容器化微服務,簡化部署和管理。

C#和.NET的安全最佳實踐包括輸入驗證、輸出編碼、異常處理、以及身份驗證和授權。 1)使用正則表達式或內置方法驗證輸入,防止惡意數據進入系統。 2)輸出編碼防止XSS攻擊,使用HttpUtility.HtmlEncode方法。 3)異常處理避免信息洩露,記錄錯誤但不返回詳細信息給用戶。 4)使用ASP.NETIdentity和Claims-based授權保護應用免受未授權訪問。

C 語言中冒號 (':') 的含義:條件語句:分隔條件表達式和語句塊循環語句:分隔初始化、條件和增量表達式宏定義:分隔宏名和宏值單行註釋:表示從冒號到行尾的內容為註釋數組維數:指定數組的維數


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境