2016-11-18 5 views
0

サーブレットで処理された2つの配列をjspページに転送して表示する必要があります。sendRedirectを使用してサーブレットからJSPに複数の配列を送信する方法

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { 

    String n = request.getParameter("name"); 
    int k = Integer.parseInt(n); 
    int array[] = new int[3]; 
    PrintWriter out = response.getWriter(); 
    List<RecommendedItem> recommendations = new ArrayList<RecommendedItem>(); 

    try { 
     recommendations = App.getRecommend(k); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    int i = 0; 
    // out.println("we recommend"); 
    for (RecommendedItem recommendation : recommendations) { 
     // out.println(recommendation.getItemID()+" " 
     // +recommendation.getValue()); 
     array[i] = (int) recommendation.getItemID(); 
     i++; 
    } 

    String param = Arrays.toString(array); 
    param = param.substring(1, param.length() - 1);// removing enclosing [] 
    String encArray = URLEncoder.encode(param, "utf-8"); 

    // Send encArray as parameter. 
    response.sendRedirect(("output.jsp?fib=" + encArray)); 
} 

をしかし、今、私はoutput.jspに(int)recommendation.getValue()で構成される二番目の配列を転送したい:私は以下のコードを使用して単一のアレイを転送することに成功しています。 response.sendRedirect()を使用してこれを行うことはできますか?

答えて

0

パラメータで任意の文字列を送信することができます。あなたのケースでは、ちょうどのように、あなたの第2の符号化された配列を使用して、リダイレクトに二番目のパラメータを追加します。

response.sendRedirect(("output.jsp?fib=" + encArray + "&fib2=" + encArray2)); 

そして、あなたはfibパラメータでやったのと同じ方法でそれを取得します。

しかし、サーブレットで値の移送を処理するためのより良い方法と好ま​​しい方法は、RequestDispatcherです。そのためのコード:

req.setAttribute("fib", encArray); 
req.setAttribute("fib2", encArray2); 
req.getRequestDispatcher("output.jsp").forward(req, response); 

そして使用してJSP内の配列を回復:あなたもString[](Java配列オブジェクトを設定し、回復することができ、この第二のオプションで:

<% 
    String encArray = (String) request.getAttribute("fib"); 

    // ... 

    String encArray2 = (String) request.getAttribute("fib2"); 
%> 

注意を)をエンコードする必要はありません。

関連する問題