ASPチュートリアル

ASPホーム

WPチュートリアル

Webページの紹介 WebPages Razor Webページのレイアウト Webページフォルダ WebPages Global Webページフォーム Webページオブジェクト Webページファイル Webページデータベース Webページヘルパー WebPages WebGrid Webページチャート Webページの電子メール Webページのセキュリティ Webページの公開 Webページの例 Webページクラス

ASP.NET Razor

かみそりのイントロ かみそりの構文 Razor C#変数 Razor C#ループ Razor C#ロジック RazorVB変数 かみそりVBループ RazorVBロジック

ASPクラシック

ASPイントロ ASP構文 ASP変数 ASP手順 ASP条件文 ASPループ ASPフォーム ASPCookie ASPセッション ASPアプリケーション ASP #include ASP Global.asa ASP AJAX ASPメール ASPの例

ASPリファレンス

ASPVB関数 ASPVBキーワード ASP応答 ASPリクエスト ASPアプリケーション ASPセッション ASPサーバー ASPエラー ASPファイルシステム ASP TextStream ASPドライブ ASPファイル ASPフォルダー ASP辞書 ASP AdRotator ASP BrowserCap ASPコンテンツリンク ASPコンテンツローテーター ASPクイック参照

ADOチュートリアル

ADOイントロ ADOコネクト ADOレコードセット ADOディスプレイ ADOクエリ ADOソート ADO追加 ADOアップデート ADO削除 ADO Demo ADOスピードアップ

ADOオブジェクト

ADOコマンド ADO接続 ADOエラー ADOフィールド ADOパラメータ ADOプロパティ ADOレコード ADOレコードセット ADOストリーム ADOデータ型

ASPセッションオブジェクト


Sessionオブジェクトは、ユーザーセッションに関する情報を格納したり、ユーザーセッションの設定を変更したりします。


セッションオブジェクト

コンピューターでアプリケーションを操作しているときは、アプリケーションを開き、いくつかの変更を加えてから閉じます。これはセッションによく似ています。コンピュータはあなたが誰であるかを知っています。アプリケーションをいつ開くか、いつ閉じるかを認識します。ただし、インターネットには1つの問題があります。それは、HTTPアドレスが状態を維持しないため、Webサーバーがユーザーが誰で何をしているのかを認識しないことです。

ASPは、ユーザーごとに一意のCookieを作成することにより、この問題を解決します。Cookieはユーザーのコンピューターに送信され、ユーザーを識別する情報が含まれています。このインターフェイスは、Sessionオブジェクトと呼ばれます。

Sessionオブジェクトは、ユーザーセッションに関する情報を格納したり、ユーザーセッションの設定を変更したりします。

Sessionオブジェクトに格納されている変数は、1人のユーザーに関する情報を保持し、1つのアプリケーションのすべてのページで使用できます。セッション変数に格納される一般的な情報は、名前、ID、および設定です。サーバーは、新しいユーザーごとに新しいSessionオブジェクトを作成し、セッションの有効期限が切れるとSessionオブジェクトを破棄します。


セッションはいつ開始されますか?

セッションは次の場合に開始されます。

  • 新しいユーザーがASPファイルを要求し、Global.asaファイルにSession_OnStartプロシージャが含まれている
  • 値はSession変数に格納されます
  • ユーザーがASPファイルを要求すると、Global.asaファイルは<object>タグを使用して、セッションスコープでオブジェクトをインスタンス化します

セッションはいつ終了しますか?

ユーザーが指定された期間、アプリケーションのページを要求または更新しなかった場合、セッションは終了します。デフォルトでは、これは20分です。

デフォルトよりも短いまたは長いタイムアウト間隔を設定する場合は、Timeoutプロパティを使用します。

次の例では、タイムアウト間隔を5分に設定しています。

<%
Session.Timeout=5
%>

Abandonメソッドを使用して、セッションをすぐに終了します。

<%
Session.Abandon
%>

注:セッションの主な問題は、セッションをいつ終了するかです。ユーザーの最後のリクエストが最後のリクエストであったかどうかはわかりません。したがって、セッションを「存続」させる期間がわかりません。アイドル状態のセッションを長時間待つとサーバー上のリソースが消費されますが、セッションがすぐに削除されると、サーバーがすべての情報を削除したため、ユーザーは最初からやり直す必要があります。適切なタイムアウト間隔を見つけるのは難しい場合があります。

ヒント:セッション変数には少量のデータのみを保存してください。



セッション変数の保存と取得

Sessionオブジェクトで最も重要なことは、変数を格納できることです。

以下の例では、Session変数のusernameを「DonaldDuck」に設定し、Session変数のageを「50」に設定します。

<%
Session("username")="Donald Duck"
Session("age")=50
%>

値がセッション変数に格納されている場合、ASPアプリケーションの任意のページから値に到達できます。

Welcome <%Response.Write(Session("username"))%>

上記の行は、「ようこそドナルドダック」を返します。

また、ユーザー設定をSessionオブジェクトに保存し、その設定にアクセスして、ユーザーに返すページを選択することもできます。

次の例では、ユーザーの画面解像度が低い場合に、ページのテキストのみのバージョンを指定しています。

<%If Session("screenres")="low" Then%>
  This is the text version of the page
<%Else%>
  This is the multimedia version of the page
<%End If%>

セッション変数を削除する

コンテンツコレクションには、すべてのセッション変数が含まれています。

Removeメソッドを使用してセッション変数を削除することができます。

次の例では、セッション変数「age」の値が18未満の場合、セッション変数「sale」を削除します。

<%
If Session.Contents("age")<18 then
  Session.Contents.Remove("sale")
End If
%>

セッション内のすべての変数を削除するには、RemoveAllメソッドを使用します。

<%
Session.Contents.RemoveAll()
%>

コンテンツコレクションをループする

コンテンツコレクションには、すべてのセッション変数が含まれています。コンテンツコレクションをループして、何が保存されているかを確認できます。

<%
Session("username")="Donald Duck"
Session("age")=50

dim i
For Each i in Session.Contents
  Response.Write(i & "<br>")
Next
%>

結果:

username
age

コンテンツコレクション内のアイテムの数がわからない場合は、Countプロパティを使用できます。

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
  Response.Write(Session.Contents(i) & "<br>")
Next
%>

結果:

Session variables: 2
Donald Duck
50

StaticObjectsコレクションをループします

StaticObjectsコレクションをループして、Sessionオブジェクトに格納されているすべてのオブジェクトの値を確認できます。

<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br>")
Next
%>