【问题标题】:POST from current JSP to Servlet values from a previous JSP从当前 JSP POST 到来自前一个 JSP 的 Servlet 值
【发布时间】:2016-04-20 18:40:00
【问题描述】:

简介: JAVA Web 应用程序中包含的多个 Servlet。 有些值用于所有 servlet,而其他值仅与指定的 servlet 相关。 因此,使用了一个输入表单 (JSP),然后将这些值/表单输入发布到另一个“新”JSP。从这个 JSP 中,来自先前表单 (JSP) 的值应该被发布到一个 servlet(-有时,来自新表单的附加值。)

使用简单的 HTML 表单,来自 JSP 的值成功发布到另一个 JSP。

问题: 喜欢使用“第二个”JSP 将值(输入字符串)从先前的 JSP 发送到 JAVA servlet(使用 POST 方法)。但是失败了,因为它们没有从“第二个”JSP 发送到 Servlet,即使“第二个”JSP 可以从“第一个”JSP 获取它们。

第一个 JSP:

 <form name="calca" action="math.jsp" method="POST">
        <br>
        <input type="text" name="Number1" value="0" />
        <br><br>
        <input type="text" name="Number2" value="0" />
        <br><br><br><br>
        <input type="submit" value="Update" name="update" />
    </form>

第二个 JSP:(math.jsp)

  <form name="calcsum" action="PlusServlet" method="POST">
        <% String Number1 = request.getParameter("Number1"); %>
        <% String Number2 = request.getParameter("Number2"); %>
        <br>
        <span>Number1= <%= Number1 %> from calc.jsp form. </span>
        <br>
        <span>Number2= <%= Number2 %> from calc.jsp form. </span>
        <br><br><br><br><br>

        <input type="submit" value="Plus-Calc" name="Plus-Calc" />
        </form>

Servlet 进程请求:

String num1=request.getParameter("Number1");
String num2=request.getParameter("Number2");

结果:值在第一个 JSP 到第二个 JSP 之间发布,而不是从第二个 JSP 到 Servlet。

如何使用“第二个”jsp 将先前表单/jsp 中的值“发送”/发布到 servlet?

【问题讨论】:

  • 如果您希望您的表单帖子包含给定参数,那么表单中需要有一个与该参数对应的 元素。您可以使用type='hidden' 来提供此功能,而无需呈现这些参数的任何表示。请注意,在任何情况下,最终用户都可以对他提交的数据进行尽可能多的控制,因此您不能认为从隐藏元素中获得的参数值比其他任何参数值更安全。
  • 谢谢。 *是否有另一种简单的方法可以在不使用 HTML 表单的情况下从 JSP 集合中使用先前 JSP 中的值 POST 参数?但仍然使用 POST,例如使用一些“转发”会话并调用 servlet?
  • 我认为这可能对你有用:request.getRequestDispatcher("newUrl?" + request.getParameter("Number1")).forward(request,response);
  • 这会将您的请求转发到 servlet 而不提交表单
  • 您可以考虑将要共享的数据设置为会话属性,这样您就根本不需要通过中间 JSP 进行转发。如果您不想让它们暴露在客户的检查或操纵之下,这是一种特别好的方法。

标签: java jsp servlets post


【解决方案1】:

您可以将它们放在如下形式的隐藏字段中:

<form name="calcsum" action="PlusServlet" method="POST">
        <% String Number1 = request.getParameter("Number1"); %>
        <% String Number2 = request.getParameter("Number2"); %>
        <br>
        <span>Number1= <%= Number1 %> from calc.jsp form. </span>
        <br>
        <span>Number2= <%= Number2 %> from calc.jsp form. </span>
        <br><br><br><br><br>
        <input type="hidden" value="<%= Number2 %>" name="Number1" />
        <input type="submit" value="Plus-Calc" name="Plus-Calc" />
</form>

【讨论】:

    【解决方案2】:
     <input type="hidden" name="number1" value="<%=request.getParameter("Number1")%>" />
     <input type="hidden" name2="number2" value="<%=request.getParameter("Number2")%>" />
    

    在表单中添加隐藏的输入字段,将数据提交给 servlet

    【讨论】:

    • 非常有帮助。谢谢。
    【解决方案3】:

    是的,上面回答的其他人是对的。您需要记住,当您“HTTP POST”请求时,只会发送表单元素。如果不添加隐藏字段,则打印的数字只是文本。 干杯,

    【讨论】:

    • 很高兴知道。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多