我需要转发两个数组,由servlet处理到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));
}
但是现在我想将第二个由(int)recommendation.getValue()
组成的数组转发给output.jsp。可以使用response.sendRedirect()
完成吗?
答案 0 :(得分:0)
可以通过参数发送您想要的任何字符串。在您的情况下,只需使用第二个编码数组向重定向添加第二个参数,如:
response.sendRedirect(("output.jsp?fib=" + encArray + "&fib2=" + encArray2));
以与fib
参数相同的方式获取它。
但是,处理Servlet中值的传输的更好和更好的方法是通过RequestDispatcher。代码:
req.setAttribute("fib", encArray);
req.setAttribute("fib2", encArray2);
req.getRequestDispatcher("output.jsp").forward(req, response);
使用以下命令恢复JSP中的数组:
<%
String encArray = (String) request.getAttribute("fib");
// ...
String encArray2 = (String) request.getAttribute("fib2");
%>
注意: 使用第二个选项,您甚至可以设置和恢复Java数组对象(
String[]
),而无需对其进行编码。 / em>的