8月18日(火)1、2コマ目

 今日、やったこと

セッション


今日のホワイトボード

(おさらいだけど)HTTPはリクエスト・レスポンスで完結

HTTPはリクエスト・レスポンスで完結する。同じクライアントからの複数のリクエストでサーバー側にデータを共有する仕組みはない。

実際は、リクエストをまたいだデータ共有ができないのは不便なので、アプリケーションサーバー(HTTPサーバーではなく、Webアプリケーションを実行する環境)で実現している。多くの環境ではセッションオブジェクトと呼んでいる。

図 HTTPの特徴、セッションオブジェクト


Razorページでのセッション

セッションオブジェクト取得

~.cshtml、~.cshtml.csにて

HttpContext.Session

で取得可能。


セッションにデータを保存、取り出し

取得したセッションオブジェクトの以下のメソッドを使う。

〇保存する

メソッド 引数 戻り値 役割
void SetInt32(string key, int value)

key:保存データの名前

value:保存データ

なし int型データをセッションオブジェクトに保存する
void SetString(string key, string value)

key:保存データの名前

value:保存データ

なし string型データをセッションオブジェクトに保存する


〇取得する

メソッド 引数 戻り値 役割
int GetInt32(string key)

key:取り出す保存データの名前

なし セッションオブジェクトから名前keyをint型として取り出す
string SetString(string key)

key:取り出す保存データの名前

なし セッションオブジェクトから名前keyをstring型として取り出す


図 セッションオブジェクトにデータ保存、取り出し

サンプルアプリケーション

以下を作成した。

〇Startup.cs

セッションオブジェクトを使うための設定をおこなう。


〇Index.cshtml

Index.cshtml.csでセッションオブジェクトに格納した選択商品一覧を取得し、表示。

ただし、取得データがnullの場合があるため、@ifコードブロックで対応。


〇Index.cshtml.cs

選択された商品をセッションオブジェクトに保存する。



作ってみよう その1

以下を作った。ポイントは最下部にある選択商品一覧。

商品を選択するたびに一覧が増えていく。

過去の選択商品も表示するためにセッションオブジェクトに選択商品を追加していく。

図 作ってみよう その1

〇Startup.cs

サンプルと同じ。


〇Index.cshtml

基本的にはサンプルと同じ。


〇Index.cshtml.cs

基本的にはサンプルと同じ。





作ってみよう その2

その1に数量の合計を追加。

図 作ってみよう その2


数量=過去の数量 + 今回入力した数量

となる。過去の数量を保存する必要があるので、セッションオブジェクトに保存する。

数量は整数値なので、GetInt32()、SetInt32()メソッドを利用する。


〇Startup.cs

サンプルと同じ。

〇Index.cshtml


〇Index.cshtml.cs


予告

セッションオブジェクトまでやってようやくWebアプリケーションを作ることができます。ということで、そろそろ評価に使える課題を出したいと思います。

コメント

このブログの人気の投稿

6月2日(火)1,2コマ目(A班)、3,4コマ目(B班)

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

9月1日(火)1、2コマ目