送信されたデータを受け取る
前回、サーブレットを作成しましたが、あれは「とりあえず動かしてみた」という程度のものでした。少なくとも「フォームから送信されたデータを受け取る」という程度のことはできないと困りますね。そこで今回は、「サーブレットでフォームの情報を受け取る」ということについて説明をしましょう。
サーブレットでフォームの情報を受け取る場合、以下のようなメソッドを用います。
(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"という名前の入力フィールドだけ。非常にシンプルですね。