転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

【技術書メモ】基礎からのサーブレット⑥

getParameterNames、getParameterValuesの使い方1例

<form action="reserve" method="post">

<p>レストランをご予約ください</p>

<p>
人数
<select name="count">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</p>

<p>
座席
<input type="radio" name="seat" value="禁煙" checked>禁煙
<input type="radio" name="seat" value="喫煙">喫煙
</p>

<p>
オプション
<input type="checkbox" name="option" value="ケーキ">ケーキ
<input type="checkbox" name="option" value="花束">花束
</p>

<p>
<input type="submit" value="予約">
</p>

</form>
@WebServlet(urlPatterns={"/chapter6/reserve"})
public class Reserve extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		// コンテンツタイプの指定(レスポンス出力に必要)
		resp.setContentType("text/html; charset=UTF-8");

		PrintWriter pw = resp.getWriter();

		// 文字エンコーディングの指定(リクエスト取得に必要)
		req.setCharacterEncoding("UTF-8");

		// 変数
		String count = null;
		String seat = null;
		List<String> optionList = new ArrayList<String>();

		Page.header(pw);

		List<String> names = Collections.list(req.getParameterNames());

		for (String name : names) {

			String[] values = req.getParameterValues(name);

			for (String value : values) {

				if("count".equals(name)) {

					count = value;

				} else if ("seat".equals(name)) {

					seat = value;

				} else if ("option".equals(name)) {

					optionList.add(value);
				}

			}

		}

		pw.println(count + "名様で" + seat + "のご予約を承りました。" );

		if(optionList.size() != 0) {

			for (String option : optionList) {

				pw.println("「" + option +"」");

			}

			pw.println("をご用意いたします。");

		} else {

			pw.println("オプションは無しで承りました。");

		}

		Page.footer(pw);

	}

上記ソースコードなら、checkboxで複数の値が選択された場合でも対応できる。