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

このページは、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 が入力値を取り出す名前です。この送信では EntryServlet の doPost() が呼ばれます。
問題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で送るだけです。