なんでこんなところで落ちるん。。なんてことないですか?
そう、そもそもパラメータが渡ってないなんてオチ。。
ありがちな罠w
Youtube版はこちらからどうぞ
Youtubeで動画を公開しました。こちらもぜひぜひ。
こちらでは、もう少し細かく解説してます。
GET/POSTで送られてきたすべてのパラメータを取得するサンプル
GET/POSTで送られてきたすべてのパラメータを取得。取得したパラメータをブラウザに出力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ReqGetParamMapTestServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Map<String,String[]> parameterMap = request.getParameterMap(); try(PrintWriter pw = response.getWriter()){ pw.print("<html><body>"); for(String key : parameterMap.keySet()) { pw.print(key + ":"); String[] vals = parameterMap.get(key); for(String s : vals) { pw.print(s + " "); } pw.print("<br />"); } pw.print("</body></html>"); pw.flush(); } } } |
実行結果
パラメータ「a=1&b=2&c=3&c=4&d=5」を渡すと、次のようにパラメータの一覧をブラウザへ表示します。
サンプルの解説
HttpServletRequest#getParameterMap()によって、渡ってきたすべてのパラメータをMapで取得することができます。
あとは、Mapの中身をすべて取得すれば、渡ってきたすべてのパラメータを取得できます。
ちなみに、Mapの型は、Mapです。値は複数渡ってくる可能性があるため、配列になっています。