如何使用sendRedirect从servlet发送多个数组到jsp
问题描述:
我需要将两个数组转发到一个jsp页面来显示它们。我已经成功地使用下面的代码转发单个阵列:如何使用sendRedirect从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()
完成吗?
答
可以通过参数发送任何你想要的字符串。在你的情况下,只需添加第二个参数,你重定向你的第二个编码阵列,像:
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[]
)而不需要对其进行编码。