ASP には、アプリケーション オブジェクトとセッション オブジェクトという 2 つの内部オブジェクトがあり、アプリケーション期間中、Web サイトにアクセスするすべてのユーザーによって共有されます。セッションの場合、現在のユーザーに対してのみ存在します。
セッション オブジェクトの概要
コンピューター上でアプリケーションを操作するときは、セッションと同じように、アプリケーションを開いて変更を加えて閉じます。コンピュータは、ユーザーが誰であるかを認識し、ユーザーがいつアプリケーションを開いたり閉じたりするかを認識します。ただし、問題はインターネット上で発生します。HTTP アドレスはステータスを維持できないため、Web サーバーはあなたが誰であり、あなたが何をしたかを知りません。
Session オブジェクト の主な目的は、Web サイトにアクセスする各ユーザーの情報を保存することです。たとえば、ユーザーがログインしたときに、現在のセッションを識別するための情報をユーザーのセッションに保存できます。ユーザーがログインしました。
セッションの原理は次のとおりです、ユーザーが初めて Web サイトにアクセスすると、IIS は長いランダムな 文字列 をユーザーに割り当てます。ユーザーがサーバー上の他のページにアクセスすると、サーバーはセッション ID を取得し、そのセッション ID に関連するデータをメモリから取得して、セッション オブジェクトのコレクションに入れます。
Contents コレクション
現在のユーザーに関する情報をこのコレクションに保存できます。たとえば、次のコードはデータを保存および読み取る方法を示しています。
<% '名字为username的Session集合中存储了一个“ZhangSan”字符串 Session.Contents("username") = "ZhangSan" Dim UserName '读取Session中的数据,可以省略Contents' UserName = Session.Contents("username")和下面一样 UserName = Session("username") Response.Write("<h2>" & UserName & "</h2>") %>
Session オブジェクトには 3 つのメソッド (Contents.Remove、Contents.RemoveAll) があります。 、Abandon)、Session コレクション内のデータを削除するか、現在のセッションを放棄するために使用されます。
最初の例(SessionContents.asp) Remove メソッドと RemoveAll メソッドの使用方法を示します。コードは次のとおりです。
...<h3>当前SessionID值为 <%=Session.SessionID%></h3><h3>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>删除名为username的数据</h3><%'删除 username 数据Session.Contents.Remove("username")'重新遍历 Contents 集合Traversal_P()%><hr><h3>删除所有的Session数据</h3><%'删除所有的数据Session.Contents.RemoveAll() Traversal_E()%>...
上記のコードは、実行後に次のように表示されます。
これらのコードは、次のとおりです。セッションを横断する方法 .Contents コレクションの 2 つのメソッドを詳しく見てください。
2 番目の例 (SessionAbandon.asp) は、Abandon メソッドの効果を示しています。このデモを通じて、RemoveAll メソッドと Abandon メソッドの違いは、RemoveAll は現在のコレクションのみを削除するが、顧客は削除することであることがわかります。同じ SessionID を引き続き使用します (最初の例では、SessionID は変更されません)。 Abandon メソッドが呼び出された後も、現在のページで 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>您这是第一次访问该页面,当前页面的SessionID为</h3> <h2><%=Session.SessionID%></h2><%Else%> <hr> <h3>您这是第<%=numVisits%>次访问该页面,当前页面的SessioID为</h3> <h2><%=Session.SessionID%></h2> <h3>您第一次访问时的SessionID为</h3> <h2><%=Request.Cookies("SID")%></h2><% numVisits = numVisits + 1 Response.Cookies("numVisits") = numVisitsEnd If%>このページを初めて実行すると、以下に示すように、現在のセッションIDがCookieに記録されます: ページを複数回更新するか、再度開いた後、 Abandon メソッド、セッション 削除された場合、以下に示すように、SessionID は変化し続けます: CodePage、SessionID、Timeout 属性 CodePage 属性は、現在のページ出力コンテンツの文字セットを定義します。ここでの文字セットは次のとおりです。数字で表されます。たとえば、936 は簡体字中国語 (GB2312)、簡体字中国語 950 は繁体字中国語 (Big5)、繁体字中国語を意味します 65001 は Unicode (UTF-8) を意味します特別な指示static 文字列に作用します Response.CodePage、Session.CodePage 動的に出力されるすべての文字列に作用します
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>当前页面使用的CodePage是:</h3> <h2><%=Session.CodePage%></h2> <hr> <h3>当前页面的SessionID是:</h3> <h2><%=Session.SessionID%></h2> <hr> <h3>当前页面Session默认超时时间为:</h3> <h2><%=Session.Timeout%>分钟</h2> </body> </html>
运行后,效果如下:
【相关推荐】
1. ASP免费视频教程
以上がASP の Session オブジェクトの 3 つのメソッドの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。