![](/img/trans.png)
[英]How to pass an Array in a <script> from a JSP page to a Servlet
[英]How to pass an array from servlet to jsp page?
我使用以下代碼實現了將整數變量發送到 jsp 頁面:
resp.sendRedirect(("result.jsp?fibNum=" + fibNum));
但是當我嘗試用同樣的方法傳遞數組時, int[] fibSequence
我得到以下傳遞給 jsp 頁面的地址欄:
有沒有人對我如何輸出傳遞給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.