我已经使用以下代码将整数变量发送到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>
答案 0 :(得分:1)
信任编译器。 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中,将代码放在&lt;%...%&gt; 之间。如果您遇到一些未解决的符号错误,则必须导入缺少的库 可以是以下一个或多个,只需复制页面顶部的语句即可。
<%@ page import="java.io.*" %>
<%@ page import="java.net.*" %>
<%@ page import="java.util.*" %>
(默认导入java.util,我不确定)
但请注意
请注意不要以这种方式发送太多数据! URL的大小可能不是无限制的。此外,数据在URL中可见,“讨厌”的用户可以简单地复制和复制请求 发送数据的更好方法是使用HTTP post。
答案 1 :(得分:0)
这是将数组变量从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] %>