【问题标题】:Sending multiple values from servlet to jsp将多个值从 servlet 发送到 jsp
【发布时间】:2010-12-14 09:21:23
【问题描述】:

我有一个 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);

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案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);
      

      【讨论】:

      • 这些不是参数,这些是属性。在这种情况下,两者在这里都有不同的含义。所以,你应该小心。 ;)
      • @Adeel 是的。我认为OP希望将数据从servlet传递到jsp,所以我认为这种方法没有任何问题。我知道属性和参数是不同的东西,谢谢顺便说一句:)
      • @org.life.java:我编辑了你的帖子,希望你不介意。现在,我希望你已经明白我的意思了。
      • 为什么是 WEB-INF 中的 result.jsp。类、库、配置文件夹和文件不是 WEB-INF 吗?
      • @Adeel 谢谢,在您发表评论后我没有重新检查我的答案;)谢谢顺便说一句
      【解决方案3】:
      • 如果您使用转发 (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 参数发送是一个安全问题。)

      【讨论】:

      • +1。但我相信后一种选择将取决于toString() 方法的实现,并且可能无法按预期工作。
      • 在 sn-p 中,它是一个数组。我知道,命名约定有点搞砸了。 :)
      【解决方案4】:
      String[] values = getParameterValues(“Input Parameter”);
      

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

      【讨论】:

        猜你喜欢
        • 2013-03-29
        • 2013-04-27
        • 2015-07-26
        • 2021-08-03
        • 1970-01-01
        • 2013-08-13
        • 2012-09-06
        • 2012-11-14
        • 1970-01-01
        相关资源
        最近更新 更多