从servlet向jsp发送多个值

时间:2010-12-14 09:21:23

标签: java jsp servlets

我有一个servlet代码,我在一个帮助器类中检查用户名和密码,检查后它返回到servlet并列出用户。用户名和用户列表必须显示在jsp中。如何发送这两个值?这是我尝试过的代码。它什么都没显示 String outp = t.Welcome(name,pwd);

String Users=t.List_Of_Users();
String User[]=Users.trim().split(" ");
request.setAttribute("name", User);
response.sendRedirect("Welcome_User.jsp?Users="+User+"&outp="+outp);

4 个答案:

答案 0 :(得分:3)

response.sendRedirect()将清除缓冲区,这显然意味着以前设置的任何请求属性都不会被保留。

在您的情况下,我相信,在请求对象中设置所需的属性后,最好使用RequestDispatcher.forward()

注意:按照惯例,您必须以小写字母开头定义变量名称。例如,String user;,而不是String User;。其次,方法名称不应使用下划线。此外,我建议使用不言自明的名字。下面是您的代码片段,稍加重命名。

String userNamesStr =t.userNamesSpaceDelimited();
String[] userNameArr = userNamesStr.trim().split(" "); // Or userNames, but we usually follow this for List

答案 1 :(得分:2)

  • 如果您使用转发(request.getRequestDispatcher("welcome_user.jsp").forward()) - 只需添加其他request.setAttribute("attrName", value);
  • 如果保留重定向 - 添加另一个get参数。 Welcome_User.jsp?Users="+User+"&outp="+outp + "&another=" + another;(并删除request.setAttribute(..)

为了将数组表示为字符串,您有多个选项。其中一个是Arrays.toString(array)

(请注意,将密码作为get参数发送是一个安全问题。)

答案 2 :(得分:2)

您可以根据需要设置任意数量的属性,也应该优化。 ,

request.setAttribute("key1", Object1);
request.setAttribute("key2", Object2);
request.setAttribute("key3", Object3);
.
.
.
request.setAttribute("keyn", Objectn);

然后

String destination = "/WEB-INF/pages/result.jsp";
RequestDispatcher rd = getServletContext().getRequestDispatcher(destination);
rd.forward(request, response);

答案 3 :(得分:0)

String[] values = getParameterValues(“Input Parameter”);

试试这个。阅读有关此方法的更多信息