2011-12-05 17 views
1

のは、私は、これらのフィールド(HTML)JavaのPOSTとGET配列

<input type="text" name="user[name]" value="name"/> 
<input type="text" name="user[email]" value="email"/> 
<input type="text" name="user[age]" value="age"/> 

は、どのように私は、Javaサーブレット内でこの情報を入手するかのフォームを持っていると仮定しましょうか? PHPで

はそれだけで

 $_POST["user"]["name"] 

または

 $_GET["user"]["name"] 

私はのように、データの配列を取得するに言及してい

 <input type="text" name="user" value="jimmy"/> 

のような単純なフィールドで参照するわけではないです一連のチェックボックスの場合または複数選択の場合。お使いのJavaサーブレットのサブクラスで

答えて

1

ことの一つは、フィールド名の括弧は特別な意味を持たず、単に名前の一部であるので、あなたがそれらを含める必要があるだろうということです。

request.getParameter("user[name]"); 

括弧で囲まれた名前を配列として(あるいはJavaの場合は、おそらくMap)扱うのはPHP(または別の追加のフレームワーク)だけです。

このようなマップがあり、そのようなフレームワークを使用していない場合は、たとえばServletRequest::getParameterNamesをループするなどして自分で作成する必要があります。

例:

public static Map<String, String> getParameterMap(ServletRequest request, String mapName) { 

    Map<String, String> result = new HashMap<String, String>();  

    Enumeration<String> names = request.getParameterNames(); 
    while (names.hasMoreElements()) { 
    String name = names.getNextElement(); 
    if (name.startsWith(mapName + "[") && name.endsWith("]")) { 
     result.put(name.substring(mapName.length()+1, name.length() - 2), request.getParameter(name)); 
    } 
    } 

    return result; 
} 

これは単に速い(未テスト)の例です。複数のレベルマップ(user[name][last])や1つの名前(複数の値はgetParameterValuesが必要)には対応していません。

+0

Ok。しかし、どのようにしてチェックボックスのセットまたは複数選択のデータを取得できますか? –

1

、あなたはdoGetメソッドとdoPostメソッドをオーバーライドし、

class subServlet extends HttpServlet{ 
     public void doGet(HttpServletRequest request,HttpServletResponse response) 
      throws ServletException, IOException { 
     request.getParameter("paraname"); 
     } 

     public void doPost(HttpServletRequest request,HttpServletResponse response) 
      throws ServletException, IOException { 
     request.getParameter("paraname"); 
     } 
    .... 
    } 

更新:のparamsのマップを返すためにgetParameterMapを使用しています。 ServletRequest::getParameterを使用する際に留意すべき

+0

リクエストパラメータを取得する方法はわかっていますが、私はrequest.getParameter( "user")を期待しています。私の場合、Map、HashMap、List、私はrequest.getParameter( "user [name]")を記述したくありません。 –

+0

getParameterMapを使用できます。詳細はこちらhttp://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html#getParameterMap() – bingjie2680