送信されたデータを受け取る


前回、サーブレットを作成しましたが、あれは「とりあえず動かしてみた」という程度のものでした。少なくとも「フォームから送信されたデータを受け取る」という程度のことはできないと困りますね。そこで今回は、「サーブレットでフォームの情報を受け取る」ということについて説明をしましょう。

サーブレットでフォームの情報を受け取る場合、以下のようなメソッドを用います。

(HttpServletRequest).getParameter( 名前 );


(HttpServletRequest)というのは、doGetやdoPostで引数として渡されるHttpServletRequestインスタンスを示すと考えてください。このHttpServletRequestにある「getParameter」というメソッドで、送信されたフォーム内のコントロールの値を取り出すことができます。

「あれ? これってどこかで見たことがあるな?」と思った人。それもそのはず、JSPでフォームの値を取り出すときの「request.getParameter」と全く同じではないですか。――先に「JSPは、実は内部ではサーブレット・クラスに変換して動いているのだ」ということを説明しました。サーブレットがわかってくると、そのことが次第によく理解できるようになってきます。

JSPで使われていた「request」とか「response」といった暗黙オブジェクトは、実はdoGetやdoPostで引数として渡されるHttpServletRequest、HttpServletResponseと同じものだったのですね。ですから、サーブレットでフォームの値を取り出すときも、JSPと全く同様にgetParameterで行なえた、というわけです。

では、実際に簡単なデータの送信をしてみましょう。まずは、簡単な送信用のフォームを用意してみます。これはHTMLファイルとして用意してもいいですし、先に作成したindex.jspを再利用しても良いでしょう。

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
  </head>
  <body>
    
    <h1>JSP Page</h1>

    <form action="NewServlet" method="POST">
        <input name="msg" type="text">
        <input type="submit">
    </form>
    
  </body>
</html>


ここでは、NewServletにPOSTするフォームを用意してあります。送信するのは、"msg"という名前の入力フィールドだけ。非常にシンプルですね。