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

のデータしか格納できません。もっと、いろいろな型のデータを格納できるようにします。






このブログの人気の投稿

6月27日(火)1、2コマ目

6月20日(火)1、2コマ目

7月4日(火)1、2コマ目