[解決済み] HTTPServletRequest getParameterMap() と getParameterNames の比較
2022-02-24 11:41:35
質問
HTTPServletRequest
req は、メソッド
getParameterMap()
を返しますが、値は
String[]
ではなく
String
として、投稿データには
name=Marry&lastName=John&Age=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);
}
}
解決方法は?
もし、あらかじめ決められたパラメータを期待するのであれば
getParameter(java.lang.String name)
メソッドを使用します。
それ以外にも、上記のようなアプローチは可能ですが、いくつかの相違点があり、HTTP-requestでは、誰かが1つ以上のパラメータを 同じ という名前になります。
例えば
name=John, name=Joe, name=Mia
アプローチ1は、クライアントが1つの名前に対して1つのパラメータ値のみを送信し、残りのパラメータは無視されることが予想される場合にのみ使用することができます。この例では、quot;John"のみを読み取ることができます。
アプローチ2は、同じ名前の値が複数あることが予想される場合に使用します。値は、コードで示したように、配列として入力されます。したがって、すべての値、つまりこの例では "John", "Joe", "Mia" を読むことができるようになります。
関連
-
[解決済み] [Solved] java.lang.IllegalStateException: レスポンスがコミットされた後では(forward | sendRedirect | create session)できません。
-
[解決済み] HTTPServletRequest getParameterMap() と getParameterNames の比較
-
[解決済み] HTTPステータス 405 - HTTPメソッドGETは、このURLではサポートされていません [重複].
-
[解決済み】HttpServletRequestでURLを補完する。
-
[解決済み】サーブレットベースのアプリケーションで、設定リソースファイルをどこに置き、どのように読み込むか?
-
[解決済み] サーブレットマッピングのurlパターンにおける/と/*の違いについて
-
[解決済み] WARでアノテーションを使用してサーブレットフィルタの実行順序を定義する方法
-
[解決済み] HttpServletRequestのgetRequestURIメソッドとgetPathInfoメソッドの違いは何ですか?
-
[解決済み] HttpServletRequest - 参照元URLを取得する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] java.lang.IllegalStateException: レスポンスがコミットされた後では(forward | sendRedirect | create session)できません。
-
[解決済み] HTTPServletRequest getParameterMap() と getParameterNames の比較
-
[解決済み] HTTPステータス 405 - HTTPメソッドGETは、このURLではサポートされていません [重複].
-
[解決済み】サーブレットベースのアプリケーションで、設定リソースファイルをどこに置き、どのように読み込むか?
-
[解決済み] サーブレットマッピングのurlパターンにおける/と/*の違いについて
-
[解決済み] WARでアノテーションを使用してサーブレットフィルタの実行順序を定義する方法