JavaのServletでGET・POSTを受け取るには?リンク・フォームとdoGet・doPostの関係|確認問題の回答例

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

このページは、JavaのServletでGET・POSTを受け取るには?リンク・フォームとdoGet・doPostの関係の確認問題の回答例です。

問題1:リンクから開いた場合

GETリクエストが送られ、doGet() が呼ばれます。/lesson04 のアプリ内で、@WebServlet("/entry") に対応するServletが処理を受け取ります。

問題2:POSTで送信するフォーム

<form action="/lesson04/entry" method="post">
    <label>
        名前
        <input type="text" name="userName">
    </label>
    <button type="submit">申し込む</button>
</form>

action が送信先、method が送信方法、name が入力値を取り出す名前です。この送信では EntryServletdoPost() が呼ばれます。

問題3:入力値の取得

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

戻り値の型は String です。フォームの name="userName" と同じ名前を指定します。このパラメータが送られなければ null が返ります。日本語のPOST本文を受け取る場合は、本文のサンプルと同様に文字コードを取得前に設定します。

問題4:methodを省略した場合

GETリクエストになり、doGet() が呼ばれます。method の既定値はGETです。「申し込む」というボタンの文言でも、POSTになるわけではありません。この設問のServletでは、入力画面を返す処理が動きます。

問題5:アドレス欄からdoPost()を確認できない理由

アドレス欄にURLを入力して開くとGETが送られるため、呼ばれるのは doGet() です。POSTの確認には、問題2のフォームへ入力して送信します。ブラウザのNetworkで、送信先URLとRequest MethodがPOSTになっているかを確認できます。

URLの末尾に ?method=post と書いても、HTTPメソッドはPOSTには変わりません。それは method という名前のパラメータをGETで送るだけです。

元の記事に戻る

JavaのServletでGET・POSTを受け取るには?リンク・フォームとdoGet・doPostの関係