5月31日(火)1、2コマ目
今日、やったこと
セッションオブジェクト
今日のホワイトボード
セッションオブジェクトとは
WebアプリケーションはHTTPプロトコルで動く。HTTPはリクエスト、レスポンスの1往復で完結するプロトコルで、複数回に渡るリクエスト、レスポンスのデータを保持する仕組みはない。
|
| 図 HTTPはステートレスなプロトコル |
このままではWebアプリケーションを構築できないので、複数回にわたるリクエスト、レスポンスでデータを共有できるセッションオブジェクトが用意されている。
Razorページでセッションオブジェクトを使うには
以下が必要。
- Startup.csで設定
- HttpContext.SessionのSetXX()メソッドでデータを保存
- HttpContext.SessionのGetXX()メソッドでデータを取り出す
Startup.cs
以下のソースを参考に。
Index.cshtml.cs
SetXX()メソッドでデータを保存=>36行目
GetXX()メソッドでデータを取り出す=>20行目
Index.cshtml
これは特にいうことはなし。
セッションオブジェクトはクライアント毎に用意される
セッションオブジェクトはサーバー側でクライアント毎に用意される。
各クライアント毎のセッションオブジェクトにはユニークなセッションIDが付与される。
クライアント側にもこのセッションIDが保存され、リクエスト時に送信することで、サーバーはクライアントのセッションオブジェクトを識別している。
![]() |
| 図 セッションオブジェクトはクライアント毎に用意される |
セッションオブジェクトのキーとデータ
セッションオブジェクトにデータを保存する際、キーも一緒に指定することで、データとキーが紐づいた状態でセッションオブジェクトに保存される。
セッションオブジェクトからデータを取り出す際は、キーで指定する。
![]() |
| 図 キーとデータ |
練習問題(Razor_練習7)
ソースコードを載せておきます。
Startup.cs
さきほどのStartup.csと同じ。
Item.cs
商品データ受け渡しのためのクラス。
Index.cshtml.cs
Index.cshml
おまけ <textarea>タグ
複数行テキストを扱うことができる<textarea>タグがある。
![]() |
| 図 <textarea>タグ |
次回は
今日やったセッションオブジェクトにはbyte[]、int、string型のデータしか保存できない。
もっといろいろな型のデータを扱う方法をやります。



