10月12日(火)1、2コマ目
今日、やったこと
Web版Javaのトランザクションプログラム実装
今日のホワイトボード
パッケージ階層
アプリケーションの階層分けとパッケージを一致させている。
| 図 パッケージと階層 |
sessionオブジェクト取得
HttpServletRequestクラスのgetSession()メソッドでsessionオブジェクトが取得できる。
ただ、引数とセッションの状態で戻り値が異なります。
| 図 sessionオブジェクト取得方法 |
新規にセッションがスタートできるのはgetSession(true)のみです。
価格用テキストボックス
テキストボックスの名前(name属性)でどの商品(ID)がわかるように、itemid_xxにしている。(xxはID)
| 図 価格用テキストボックス |
サーブレットでは
①受信データの全パラメータ名取得
HttpServletRequestのgetParameterNames()を利用。
戻り値はEnumeration<String>。
②取得した全パラメータ名からテキストボックスのname属性と一致するものを探す
name属性は itemid_xx(xxはID)。
あいまい検索で名前がitemid_xxを探す。
Stringクラスにはmatches()メソッドがあり、引数に正規表現を使えばあいまい検索もできる。
③テキストボックスの名前から入力値を取得
ここはいままでと同じ。
HttpServletRequestのgetParameter()を使う。
④テキストボックスの名前からIDを取り出す
テキストボックスの名前はitemid_xx。
_で分割すればいい。
Stringクラスにはsplit()メソッドがあり、分割することができる。
今日のソースコード
ItemDAOクラス
DBアクセスクラス。
update()は引数のリストの内容でトランザクションテスト1テーブルを更新する。
もし、1つでも更新に失敗したら、全更新をキャンセル(ロールバック)。
すべての更新が成功したら全更新確定(コミット)。
IndexSrvクラス
サーブレット。
更新ボタンクリック時にdoPost()を実行。
全商品の価格データが送信されるため、どの商品(ID)の価格なのかがわかるようにする必要がある。
index.jsp
JSPファイル。
価格用テキストボックスがサーブレット側でどの商品のテキストボックスかわかるようにしている。
Itemクラス、Serviceクラスも作った。