2014-12-10 100 views
0

我已經實現了用下面的代碼發送一個整型變量到JSP頁面:如何將數組從servlet傳遞到jsp頁面?

resp.sendRedirect(("result.jsp?fibNum=" + fibNum)); 

但是當我嘗試同樣傳遞陣列,int[] fibSequence我得到以下傳遞給JSP頁面的地址欄:

fibSequence

有沒有人對我怎麼能輸出移交到JSP頁面中的數組值`

我這是怎麼個送什麼建議?對面的結果JSP頁面電郵陣列內的doPost():

protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 
     // TODO Auto-generated method stub 


     // read form fields 
     String fibNum = req.getParameter("fibNum"); 


     try{ 
       //Get reference from server's registry 
       Registry registry = LocateRegistry.getRegistry("127.0.0.1"); 

       //Lookup server object from server's registry 
       IFibonacci fibonacci_proxy = (IFibonacci)registry.lookup("PowerObject"); 


       int fibMax = Integer.parseInt(fibNum); 

      //Invoke server object's methods 
      //Get Fibonacci array. 
      int[] fibSequence = fibonacci_proxy.fibonacciArrayTest(fibMax); 


      for (int value : fibSequence) { 
       System.out.println(value); 
      } 


      //System.out.println(Arrays.toString(fibSequence)); 


      }catch(NotBoundException nbe){ 
       nbe.printStackTrace(); 
      }catch(RemoteException re){ 
       re.printStackTrace(); 
      } 

      //send input to the result page using a redirect 
      //resp.sendRedirect(("result.jsp?fibNum=" + fibNum)); 
      resp.sendRedirect(("result.jsp?fibSequence=" + fibSequence)); 

      } 

我怎麼一直試圖獲取jsp頁面上的數組值,並打印出來,但我發現了一個fibSequence cannot be resolved to a variable雖然這是傳遞的數組名稱:

<a href="home.jsp">Return to Main</a><br> 
      <%String[] var_array=request.getParameterValues("fibSequence");%> 
      <%System.out.print(""+fibSequence);%> 
     </form>  
+0

'fibSeq'定義在哪裏?它在範圍內嗎? – 2014-12-10 22:54:14

+2

這是一個非常糟糕的想法**,它將參數作爲查詢字符串的一部分傳遞到下一個視圖中。我建議你使用轉發。 – 2014-12-10 22:54:56

+0

'fibSequence'或'fibSeq'? – 2014-12-10 23:10:25

回答

1

相信編譯器。 fiBSeq沒有定義。你定義了fibSequence。但將該數組作爲參數傳遞將不起作用,因爲您將傳遞(int [])。toString(),這可能不是您想要的。如果它不太大,你可以序列化和編碼它。或者發佈。

EDIT 1

int [] array = {1,2,3,4,5,6,7,8,9}; 
System.out.print(""+array);//<-- print [[email protected] or similar 

編輯2

編碼陣列上的發送器側

int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
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. 
resp.sendRedirect(("result.jsp?fibSequence=" + encArray)); 

解碼陣列上的接收器側

String encArray = request.getParameterValues("fibSequence"); 
String decArray = URLDecoder.decode(encArray,"utf-8"); 
//Now you can parse the list into an Integer list 
String [] var_array = decArray.split(","); 

在JSP中,放在 <%...%>之間的代碼。如果你得到一些未解決的符號錯誤,你必須導入缺少的庫。
可以是以下一項或多項,只需將頁面頂部的語句複製即可。

<%@ page import="java.io.*" %> 
<%@ page import="java.net.*" %> 
<%@ page import="java.util.*" %> 

(也許java.util中的缺省設置是進口的,我不知道)

但要注意

注意不是以這種方式發送的數據太多了! URL的大小可能不是無限的。此外,數據在URL中可見,「討厭」的用戶可以簡單地複製和重現請求。
發送數據的更好方法是使用HTTP發佈。

+0

請參閱編輯我的問題,數組是但我不知道如何將其輸出到jsp頁面。我知道在java類中,您可以使用println或toString,但是如何在此類頁面中打印它? – 2014-12-10 23:32:37

+0

只需使用'out.print(...)'。 'out'是一個jsp中的預定義變量。 Otherr是'response','request','session',... – Joachim 2014-12-10 23:38:23

+0

這是給出這個輸出:'[I @ 8ba95be' – 2014-12-10 23:42:24