JAVA:IT TRICK

入力パラメータの取得

サーブレットでブラウザから送られてきた情報(パラメータ)を受け取る方法について説明します。
  • このエントリーをはてなブックマークに追加
  • Clip to Evernote
  • IT TRICK RSS

ブラウザからサーブレットに渡される値は入力パラメータと呼ばれます。サーブレットで入力パラメータを扱うにはHttpServletRequestクラスの以下のメソッドを使います。

メソッド 説明
String getParameter(String name) 引数に指定した名前をキーに持つパラメータを取得する。存在しない場合nullを返す。
String[] getParameterValues(String name) 名前、値の組み合わせで、同じ名前が複数ある場合は、このメソッドを利用する。戻り値は文字列の配列で、存在しない場合はnullを返す。
Enumeration getParameterNames() 入力パラメータ名前の一覧を返す。

以下は入力パラメータを取得するサンプルです。

リクエストパラメータ取得サンプル

このサンプルではJSPに10個の入力フィールドを用意し、submitボタンを押した場合にすべての入力フィールドの値がサーブレットに送信されます。そしてサーブレットでこれらのパラメータの名前と値をすべて取得してブラウザに表示しています。

このサンプルのJSPです。

64001.jsp
<html>
<body>
	<form action="../64001">
		<input type="text" name="msg1" /><br />
		<input type="text" name="msg2" /><br />
		<input type="text" name="msg3" /><br />
		<input type="text" name="msg4" /><br />
		<input type="text" name="msg5" /><br />
		<input type="text" name="msg6" /><br />
		<input type="text" name="msg7" /><br />
		<input type="text" name="msg8" /><br />
		<input type="text" name="msg9" /><br />
		<input type="text" name="msg10" /><br />
		<input type="submit">
	</form>
</body>
</html>

サーブレットではgetParameterNames()メソッドですべてのパラメータの名前を取得し、これを利用してgetParameter()メソッドを使って各パラメータの値を取得してブラウザに出力しています。

Sample64001.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class Sample64001 extends HttpServlet {

	public void doGet(HttpServletRequest request,
			HttpServletResponse response)
	throws IOException, ServletException {

		PrintWriter out = response.getWriter();

		Enumeration names = request.getParameterNames();

		while (names.hasMoreElements()){
			String paramName = (String)names.nextElement();
			out.append("<b>");
			out.append(paramName);
			out.append(":");
			out.append("</b>");

			out.append(request.getParameter(paramName));
			out.append("<br />");
		}

	}
}

上記のサーブレットのためのweb.xml定義です。

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>

	<servlet>
		<servlet-name>64001</servlet-name>
		<servlet-class>Sample64001</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>64001</servlet-name>
		<url-pattern>/64001</url-pattern>
	</servlet-mapping>

</web-app>

サンプルの実行結果

ブラウザで64001.jsp にアクセスすると以下のようになります。

送信ボタンをクリックすると以下の画面が表示されます。