簡體   English   中英

如何將數組從servlet傳遞到jsp頁面?

[英]How to pass an array from servlet to jsp page?

我使用以下代碼實現了將整數變量發送到 jsp 頁面:

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

但是當我嘗試用同樣的方法傳遞數組時, int[] fibSequence我得到以下傳遞給 jsp 頁面的地址欄:

fib序列

有沒有人對我如何輸出傳遞給jsp頁面的數組值有任何建議?`

這就是我將數組發送到 doPost() 中的結果 jsp 頁面的方式:

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>     

相信編譯器。 fiBSeq 未定義。 您定義了 fibSequence。 但是將該數組作為參數傳遞是行不通的,因為您將傳遞 (int[]).toString() 這可能不是您想要的。 如果它不是太大,您可以對其進行序列化和編碼。 或者發一下。

編輯 1

int [] array = {1,2,3,4,5,6,7,8,9};
System.out.print(""+array);//<-- print [I@15db9742  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 post。

這是將數組變量從 servlet 傳輸到 jsp 頁面的更好答案:

In Servelet:
String arr[] = {"array1","array2"};
request.setAttribute("arr",arr);
RequestDispatcher dispatcher = request.getRequestDispatcher("yourpage.jsp");
dispatcher.forward(request,response);
In Jsp:
<% String str[] = (String[]) request.getAttribute("arr"); %>
<%= str[0]+""+str[1] %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM