ホームページ  >  記事  >  バックエンド開発  >  ASP の Session オブジェクトの 3 つのメソッドの紹介

ASP の Session オブジェクトの 3 つのメソッドの紹介

Y2J
Y2Jオリジナル
2017-05-18 11:36:142068ブラウズ

ASP には、アプリケーション オブジェクトとセッション オブジェクトという 2 つの内部オブジェクトがあり、アプリケーション期間中、Web サイトにアクセスするすべてのユーザーによって共有されます。セッションの場合、現在のユーザーに対してのみ存在します。

セッション オブジェクトの概要

コンピューター上でアプリケーションを操作するときは、セッションと同じように、アプリケーションを開いて変更を加えて閉じます。コンピュータは、ユーザーが誰であるかを認識し、ユーザーがいつアプリケーションを開いたり閉じたりするかを認識します。ただし、問題はインターネット上で発生します。HTTP アドレスはステータスを維持できないため、Web サーバーはあなたが誰であり、あなたが何をしたかを知りません。

Session オブジェクト の主な目的は、Web サイトにアクセスする各ユーザーの情報を保存することです。たとえば、ユーザーがログインしたときに、現在のセッションを識別するための情報をユーザーのセッションに保存できます。ユーザーがログインしました。

セッションの原理は次のとおりです、ユーザーが初めて Web サイトにアクセスすると、IIS は長いランダムな 文字列 をユーザーに割り当てます。ユーザーがサーバー上の他のページにアクセスすると、サーバーはセッション ID を取得し、そのセッション ID に関連するデータをメモリから取得して、セッション オブジェクトのコレクションに入れます。

Contents コレクション

現在のユーザーに関する情報をこのコレクションに保存できます。たとえば、次のコードはデータを保存および読み取る方法を示しています。

<%
&#39;名字为username的Session集合中存储了一个“ZhangSan”字符串
Session.Contents("username") = "ZhangSan"
Dim UserName
&#39;读取Session中的数据,可以省略Contents&#39;
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><%&#39;利用 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&#39;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&#39;Session.Contents中存储了多个数据,如下Session.Contents("username") = "ZhangSan"Session.Contents("password") = "12345678"Session.Contents("date")="2015/08/14"Session.contents("author")="pchmonster"&#39;遍历 Contents 集合Traversal_E()%><hr><h3>删除名为username的数据</h3><%&#39;删除 username 数据Session.Contents.Remove("username")&#39;重新遍历 Contents 集合Traversal_P()%><hr><h3>删除所有的Session数据</h3><%&#39;删除所有的数据Session.Contents.RemoveAll()
Traversal_E()%>...

上記のコードは、実行後に次のように表示されます。

ASP の Session オブジェクトの 3 つのメソッドの紹介

これらのコードは、次のとおりです。セッションを横断する方法 .Contents コレクションの 2 つのメソッドを詳しく見てください。

2 番目の例 (SessionAbandon.asp) は、Abandon メソッドの効果を示しています。このデモを通じて、RemoveAll メソッドと Abandon メソッドの違いは、RemoveAll は現在のコレクションのみを削除するが、顧客は削除することであることがわかります。同じ SessionID を引き続き使用します (最初の例では、SessionID は変更されません)。 Abandon メソッドが呼び出された後も、現在のページで Session コレクションにアクセスできます。ページが閉じられるか更新された後、前のセッションは削除されます (この例では、SessionID が変更されます)。

コードは次のとおりです:

<%&#39;Abandon的使用后,在当前页面仍可以访问Session集合,关闭页面或刷新后&#39;会使Session被删除,SessionID也就会改变Session.Abandon()&#39;首先我们要记录一下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
  &#39;如果是第一次运行该页面,则记录当前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に記録されます:

ASP の Session オブジェクトの 3 つのメソッドの紹介

ページを複数回更新するか、再度開いた後、 Abandon メソッド、セッション 削除された場合、以下に示すように、SessionID は変化し続けます:

ASP の Session オブジェクトの 3 つのメソッドの紹介

CodePage、SessionID、Timeout 属性

CodePage 属性は、現在のページ出力コンテンツの文字セットを定義します。ここでの文字セットは次のとおりです。数字で表されます。たとえば、

936 は簡体字中国語 (GB2312)、簡体字中国語

950 は繁体字中国語 (Big5)、繁体字中国語を意味します

65001 は Unicode (UTF-8) を意味します

特別な指示

static 文字列に作用します Response.CodePage、Session.CodePage 動的に出力されるすべての文字列に作用します
Response.CodePage スコープは 1 つの応答のみです
Session.CodePage スコープはセッション内のすべての応答です

SessionID 属性可以获得当前用户的 SessionID,有时候在客户端浏览器不支持 Cookies 的情况下,你可以将 SessionID 附加在客户端的 QueryString 变量中,从而标识每一个客户端。

Timeout 属性用于设定客户的 Session 超时期。客户对于 SessionID 并不是长期占有的,在其一段时间内没有和服务器端进行任何交互后,服务器端将放弃该 Session。

下面的代码(SessionCST.asp)中将演示这个三个属性的使用方法,代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Session.CodePage = 65001&#39;作用于所有动态输出的字符串%>
<!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>

运行后,效果如下:

ASP の Session オブジェクトの 3 つのメソッドの紹介

【相关推荐】

1. ASP免费视频教程

2. 详解ASP中Session的使用技巧

3. ASP session简单示例

4. 关于ASP中session的详细介绍

5. 教你解决ASP session丢失的方法

以上がASP の Session オブジェクトの 3 つのメソッドの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。