2015-01-01 5 views
8

てHTTPServletRequest REQ対)メソッドgetParameterMapを有する(しかし、値が& lastNameの=ジョン&年齢結婚=てHTTPServletRequest getParameterMap()getParameterNamesメソッド

名としてポストデータについて、[]の代わりに文字列を返します= 20。

私はポストデータでは配列ではありませんが、getParameterMap()はすべてのキー(nameまたはlastNameまたはAge)の配列を返します。より良い方法でこれを理解するためのあらゆる指針? コードはアプローチ2で利用できます。

アプローチ1は完全に正常です。

アプローチ1:

Enumeration<String> parameterNames = req.getParameterNames(); 
while (parameterNames.hasMoreElements()) { 
    String key = (String) parameterNames.nextElement(); 
    String val = req.getParameter(key); 
    System.out.println("A= <"+key+"> Value<"+val+">"); 
} 

アプローチ2:

Map<String,Object> allMap=req.getParameterMap(); 
    for(String key:allMap.keySet()){ 
     String[] strArr=(String[])allMap.get(key); 
     for(String val:strArr){ 
      System.out.println("Str Array= "+val); 
     } 
    } 

答えて

9

あなたが事前に決定されたパラメータを期待しているなら、あなたはのgetParameter(のjava.lang.String name)メソッドを使用することができます。

これ以外の方法を使用することもできます。しかし、いくつかの違いがあります。

Httpリクエストでは、と同じという名前で1つ以上のパラメータを送信することができます。例えば

name=John, name=Joe, name=Mia 

アプローチ1を使用すると、クライアントはそれらの残りの部分は無視されます、名前の唯一つのパラメータ値を送信期待している場合にのみ使用することができます。この例では、 "John"のみを読むことができます

同じ名前の値が複数あると予想される場合は、アプローチ2を使用できます。値は、コードで示したように配列として設定されます。したがって、あなたは

Documentation

+0

おかげで、この例ではすなわち「ジョン」、「ジョー」、「ミア」、すべての値を読み取ることができます、あなたはアプローチ1に適した、いくつかのポストデータの例を説明してください可能性があり、 2? – andyPaul

+0

詳細情報を更新しました – kamoor

+0

次のURLを試してみると、1つのマップメンバー(キー:r)と2つの要素[123123,98734]を持つ配列が得られます。 https://localhost/app/faces/main.xhtml?r = 123123&r = 98734 – Harun

関連する問題