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