5月9日(火)1、2コマ目
今日、やったこと
Sessionオブジェクト
今日のホワイトボード
HTTPは
そもそもHTTPは、サーバーから見ればクライアントからのリクエストを処理して、レスポンスを返して終わり。 リクエストとレスポンスの1往復で完了するプロトコル。
![]() |
| 図 HTTPはステートレスなプロトコル |
HTTPのような1往復で完結するプロトコルをステートレス(stateless)なプロトコルと呼ぶ。
1往復で完結しないプロトコルにはSMTP(メール送受信用)がある。SMTPはステートフル(stateful)なプロトコル。
![]() |
| 図 SMTPのやりとり |
Webアプリケーションを作るには
HTTPの機能だけでは不十分。
複数回にわたって商品を選択してもサーバーが覚えていられない(HTTPはステートレスだから)のはダメ。
そこで、HTTPを補うアプリケーションサーバーを追加して対応している。
このアプリケーションサーバーにて、同じクライアントからの複数のリクエストを跨いでデータを共有することができるSessionオブジェクトを用意している。
![]() |
| 図 アプリケーションサーバーが提供するSessionオブジェクト |
Sessionオブジェクト
Sessionオブジェクトはクライアント毎に用意される。
Sessionオブジェクトにはデータを複数格納できる。
複数のデータを識別するために、キーにデータが紐づく。
Sessionオブジェクトは HttpContext.Session でアクセスできる。
Sessionオブジェクトにデータを保存するには
HttpContext.Session.SetXXX(キー, オブジェクト)
を使う。
Sessionオブジェクトからデータを取得するには
HttpContext.Session.GetXXX(キー)
を使う。戻り値がSessionオブジェクトから取得したオブジェクト。
![]() |
| 図 Sessionオブジェクトからデータ取り出し、データを格納 |
サンプルアプリケーション
![]() |
| 図 サンプルアプリケーション |
Program.cs
Sessionオブジェクトを使うための設定が必要。
Index.cshtml.cs
HttpContext.SessionでSessionオブジェクトにアクセスできる。
GetXXX(キー)メソッドでSessionオブジェクトからキーに紐づくデータを取り出す。
SetXXX(キー, データ)メソッドでSessionオブジェクトにデータをキーに紐づけて保存。
Index.cshtml
練習問題 練習7
正解例をあげておきます。
Program.cs
Item.cs
Index.cshtml.cs
Index.cshtml
練習問題 練習8
正解例をあげておきます。
Program.cs
練習7と同じ。
Index.cshtml.cs
Index.cshtml
次回は
今回のやり方ではSessionオブジェクトには
- Byte[]
- int
- string
のデータしか格納できません。もっと、いろいろな型のデータを格納できるようにします。




