投稿

5月, 2023の投稿を表示しています

5月30日(火)1、2コマ目

今日、やったこと [確認テスト]Sessionオブジェクト 今日の確認テスト トッピングは複数選択可能なため、選択済み商品一覧から同じ商品を探す際、トッピングの扱いがめんどくさかったかと思います。 正解例をあげておきます。 Program.cs Sessionオブジェクトが使えるようにしてください。 SessionExtentions.cs 以前のモノと同じ。 Coffee.cs コーヒー情報を受け渡すときに使うクラス。 Size.cs サイズ情報を受け渡すときに使うクラス。 Option.cs オプション情報を受け渡すときに使うクラス。 SelectedItem.cs 選択商品情報(コーヒー、サイズ、オプション、数量)をまとめて扱うためのクラス。 Index.cshtml.cs Index.cshtml 次回は 新ネタをやります。

5月23日(火)1、2コマ目

イメージ
今日、やったこと 拡張Sessionクラスを使った練習問題 今日の練習問題 Razor練習問題9 図 利用するクラス Program.cs Sessionオブジェクトが使えるように設定。 SessionExtentions.cs 前と同じ。 Item.cs iPad情報を扱うためのクラス。 SelectedItem.cs 選択されたiPadおよび色をまとめて扱うためのクラス。 Index.cshtml.cs Index.cshtml 選択済みiPad情報はSessionオブジェクトから取り出す。 拡張Session課題3 第1段階 選択済み商品一覧の価格は商品の価格をそのまま表示。選択サイズによる差額反映はなし。 同じ商品(商品、サイズが同じ)が複数回選択されても、重複して表示。 iPadの問題とほぼ同じ。 図 利用するクラス Program.cs Sessionオブジェクトが使えるように設定。 SessionExtentions.cs 前と同じ。 Coffee.cs コーヒー情報をまとめて扱うためのクラス。 Size.cs サイズ情報をまとめて扱うためのクラス。 SelectedItem.cs 選択済み商品情報(コーヒー、サイズ、数量)をまとめて扱うためのクラス。 Index.cshtml.cs Index.cshtml 拡張Session課題3 完成版 問題と同じ内容。 Program.cs 第1段階と同じ。 SessionExtentions.cs 第1段階と同じ。 Coffee.cs 第1段階と同じ。 Size.cs 第1段階と同じ。 SelectedItem.cs 引数の商品と同じ商品か否かを判断するIsSame()メソッドを追加。 サイズによる価格変更を反映した商品価格が取得できるPriceプロパティを追加。 プロパティ いままでのクラスにIdやNameプロパティを作ってきたが、省略版を使っていた。 本来のプロパティの書き方は以下のようにget{}とset{}のなかに必要なプログラムを書く 図 プロパティ Index.cshtml.cs OnPost()にて、Sel...

5月18日(木)1、2コマ目

イメージ
今日の予習 拡張Sessionクラス 前回紹介したSessionクラスはint型、string型、byte[]のデータしか扱うことができません。 他の型も扱うことができるように、拡張クラスという仕組みを使ってSessionクラスを拡張します。 SessionExtentions.cs 〇Sessionオブジェクトに保存する データをSerializer.Serialize()で文字列に変換して、Session.SetString()で文字列としてSessionオブジェクトに保存しています。 〇Sessionオブジェクトから取り出す Sessionオブジェクト中のデータ(string型)をSession.GetString()で取り出し、Serializer.Deserialize()で文字列から元の型に変換しています。 〇Tとか<T>は? Tは型パラメータで、このクラス作成時に型を指定せず、このクラス利用時に型をする仕組みです。Set()メソッドやGet()メソッド実行時にTに型を指定して利用します。 例)SessionオブジェクトにItemクラス型のデータitemをキー"data"で保存する  HttpContext.Session.Set< Item >("data", item); 例)Sessionオブジェクト中のキー"data"に紐づくデータ(Itemクラス型)をとりだす  Item item = HttpContext.Session.Get< Item >("data"); 今日、やったこと Sessionを拡張 今日のホワイトボード サンプルアプリケーション Sessionオブジェクトにbyte[]、int、string以外も格納できるSessionExtentionsクラスを作成した。 図 サンプルアプリケーションとSessionのイメージ Programs.cs 以前のSessi...

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...