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で複数の値が選択された場合でも対応できる。