Webアプリに入力項目を追加するには?画面・Java・DBの変更箇所を解説|確認問題の回答例

Webアプリに入力項目を追加するには?画面・Java・DBの変更箇所を解説の確認問題の回答例です。入力した値が、どの処理を通って保存・表示されるかを振り返りましょう。

第1問

フォームにid="studyPlace"だけを付け、nameを書き忘れました。ServletでgetParameter("studyPlace")を呼ぶとどうなりますか。この例で登録結果がどうなるかも答えてください。

idはラベルとの関連付けなどに使うもので、パラメータの送信名にはなりません。nameがなければ、その選択欄からstudyPlaceは送信されず、同名の別パラメータもなければgetParameterはnullになります。今回のModelはnullを未指定として扱うため、他の項目が有効なら空文字で登録され、一覧は未指定となります。例外にならないからこそ見落としやすいので、name=”studyPlace”を追加し、選んだ値が保存されるか確認します。

第2問

StudyLogのコンストラクタに学習場所を追加しました。Modelだけ直せば十分ですか。ほかに確認する場所と、その理由を答えてください。

十分ではありません。DAOが検索結果からDTOを作る箇所、テストデータを作る箇所など、new StudyLogの呼び出し全体を調べます。登録時は確認済みの入力値、検索時はrs.getString(“study_place”)の値を渡します。コンパイルを通すために一律で空文字を追加するのではなく、それぞれの値の出どころを確認します。

第3問

既存の学習記録に場所の情報はありません。study_place列の初期値を空文字にした場合、過去の記録はどう表示しますか。「自宅」で埋めてはいけない理由も答えてください。

既存行の学習場所は空文字として読み取り、一覧では未指定と表示します。空文字はSQLのNULLや「空文字」という文字列とは異なります。実際にどこで学習したかは分からないため、自宅などの事実を作って埋めてはいけません。学習内容や時間など、既存の値も変更せず保持します。

第4問

DBのstudy_placeには「学校」が保存されていますが、一覧は「未指定」になります。保存処理をやり直す前に、どの処理を確認しますか。

一覧取得のSELECTにstudy_placeが含まれているか、ResultSetから同じ列名で取得しているか、その値をDTOのコンストラクタへ渡しているかを確認します。続いて一覧へ渡したDTOとgetStudyPlace()、JSPの表示分岐を確かめます。DBに正しい値があるなら、まずDBから表示までの経路へ原因を絞ります。別のDBを読んでいないかも確認対象です。

第5問

「その他」を選んで登録完了画面が出ました。これだけで項目追加のテストを合格にしてよいですか。追加で確認する保存・表示・既存機能の項目を挙げてください。

完了画面だけでは不十分です。DBで1件だけ増え、その新規行に「その他」と正しい所有者が保存されていること、一覧を取得し直して同じ値が表示されることを確認します。自宅・学校・未指定、想定外の値の拒否と未保存、過去の記録の保持、他利用者との分離、従来の入力条件も確認します。実際に試していないケースを、完了画面が出たという理由で合格にしません。

元の記事に戻る

Webアプリに入力項目を追加するには?画面・Java・DBの変更箇所を解説