Javaでフォームの値が取得できない?name属性とgetParameterの関係|確認問題の回答例

Schoo Java入門 中級 第4回 Webアプリケーションの動作原理と画面連携

このページは、Javaでフォームの値が取得できない?name属性とgetParameterの関係の確認問題の回答例です。

問題1:各getParameterの戻り値

呼び出し戻り値理由
getParameter("userName")nulluserNameはidであり、送信するnameではない
getParameter("memberName")"佐藤"nameがmemberNameの入力欄に佐藤が入っている
getParameter("comment")""commentという名前で空文字が送信される
getParameter("news")null未選択なのでnewsの組が送信されない

commentの空文字とnewsのnullを区別します。前者は名前と空の値が届き、後者はその名前のパラメータが届いていません。

問題2:佐藤をuserName変数に入れる

String userName = request.getParameter("memberName");

Javaの変数はuserNameのままで構いません。getParameterに指定する文字列を、HTMLのnameであるmemberNameに合わせます。

問題3:チェックを入れた場合

valueが "yes" なので、getParameter("news") はStringの "yes" を返します。value属性を省略すると、選択時にはStringの "on" が返ります。どちらもbooleanのtrueではありません。

問題4:nullと空文字を分ける

String comment = request.getParameter("comment");
if (comment == null) {
    System.out.println("commentという名前の値が届いていません");
} else if (comment.isEmpty()) {
    System.out.println("commentの値は空文字です");
} else {
    System.out.println("commentに文字列が入っています");
}

問題のフォームでは2番目の分岐に入り、「commentの値は空文字です」と出力します。System.out.printlnの出力先はサーバーのコンソールであり、ブラウザの画面ではありません。nullの判定を先に行うので、nullに対してisEmptyを呼ばずに済みます。

元の記事に戻る

Javaでフォームの値が取得できない?name属性とgetParameterの関係