• 締切済み

StrutsでPOSTのデータ(リクエストボディ)を取得する

StrutsでPOSTで送ったデータを取得する方法がわかりません。 メッセージボディのデータ param1=aaaa&param2=bbbb の文字列を取得したいと考えています。 executeメソッドの中で ServletInputStream is = request.getInputStream(); byte[] buff = new byte[4096]; int len = is.readLine(buff,0,4096); を行っても lenが-1になってしまいます。 どなたか解決方法を教えていただければと思います。 よろしくお願いします。

みんなの回答

  • ssr-y6
  • ベストアンサー率71% (5/7)
回答No.3

 すべてのパラメータをパラメータ名にかかわらず取得するには、 getParameterMapが使えます。  以下は、送られてきたパラメータすべてを表示するJSPのサンプルです。 <%@ page contentType="text/html; charset=UTF-8" %> <html> <head> <title>All Param</title> </head> <body> <% java.util.Iterator PA = request.getParameterMap().entrySet().iterator(); StringBuffer SB = new StringBuffer(); boolean F = true; while (PA.hasNext()) { if (F) { SB.append("?"); F = false; } else SB.append("&"); java.util.Map.Entry EN = (java.util.Map.Entry)PA.next(); for (int i = 0; i < ((String[])EN.getValue()).length; i ++) { out.print(EN.getKey() + "=" + ((String[])EN.getValue())[i] + "<br>"); SB.append(EN.getKey() + "=" + ((String[])EN.getValue())[i]); }; }; out.print(SB.toString() + "<br>"); %> <form action="http://localhost:8080/minnaservlet/jsps/postparam.jsp" method="POST"> <input type="radio" name="ra" value="1" checked>1 <input type="radio" name="ra" value="2">2 <input type="radio" name="ra" value="3">3<br> <input type="checkbox" name="cb">check<br> <input type="text" name="tx"><input type="text" name="tx"><br> <input type="submit" value="send"> </form> </body> </html>

noname#33813
noname#33813
回答No.2
matsu0402
質問者

補足

回答がりがとうございます。 ただ、getQueryStringではGETのパラメータは取得できても POSTのパラメータを取得することができません。 POSTのパラメータを文字列として取得できる方法があると助かります。

  • noocyte
  • ベストアンサー率58% (171/291)
回答No.1

HttpServletRequest の getParameter で取れると思います. http://www.jajakarta.org/tomcat/servletapi/servletapi-4.0/docs-ja/javax/servlet/ServletRequest.html#getParameter(java.lang.String)

matsu0402
質問者

補足

回答ありがとうございます。 ただ、getParameterで取得するのではなく param1=aaaa&param2=bbbb という形のまま文字列で取得したいと考えています。

関連するQ&A

専門家に質問してみよう