- - PR -
リクエストパラメータの内容を全て表示したいのですが
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-03-26 03:42
教えて下さい。
JavaServletで リクエストパラメータ(request.getParameter)の内容を全て表示したいのですが Map map_par=request.getParameterMap(); Set map_ite1 = map_par.keySet( ); Iterator i = map_ite1.iterator( ); while (i.hasNext()) { String key = (String)i.next(); System.out.println(key + "=" + map_par.get(key)); } これで http://localhost:8080/servlet/test?adr=1234&par1=xyz とすると adr=[Ljava.lang.String;@725967 par1=[Ljava.lang.String;@14ba9a2 となってしまいます。 また System.out.println(key + "=" + (String)map_par.get(key)); とするとエラーになってしまします。 java.lang.ClassCastException hellow.Hellow.doGet(Hellow.java:59) javax.servlet.http.HttpServlet.service(HttpServlet.java:743) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) よろしくお願いします。 環境 WindowsXP Tomcat/5.0.18 |
|
投稿日時: 2005-03-26 09:42
toString() メソッドをオーバーライドしていないオブジェクトの toString() メソッドを呼び出すと getClass().getName() とハッシュ値の16進数表示が返ります。
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#toString() "[Lクラス名"というのは、そのオブジェクトが1次元配列だということです。 詳しくは Class#getName() をご覧ください。 http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html#getName() つまり返ってきているのは String ではなくて String[] だということです。 instanceof で String[] だったら配列にキャストしてダンプする、という処理を加えれば良いと思います。 または getParameterValues() で値をとれば全て配列と扱えるので処理が少しシンプルになりますね。 http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html#getParameterValues(java.lang.String) |
|
投稿日時: 2005-03-26 19:56
回答ありがとございます。
無事対応できました。 Map map_par=request.getParameterMap(); Set map_ite1 = map_par.keySet( ); Iterator i = map_ite1.iterator( ); while (i.hasNext()) { String key = (String)i.next(); String par[]=(String[])map_par.get(key); System.out.println(key+"="+par[0]); } |
1