java - jsp表单发送数据到servlet而不改变页面

标签 java jsp servlets

我用的是jsp+servlets,有一个form。如何在不离开包含表单的实际页面的情况下将表单数据发送到 servlet(发送到 doPost() 方法)?

我想按下“提交”按钮,数据应该被发送,我想仍然留在带有表单的页面上。我宁愿不使用 javascript。

我在 http://localhost/myproject/

<form action="http://localhost/myproject/anotherpage" method="POST">
First Name: <input type="text" name="first_name">
<br />
Last Name: <input type="text" name="last_name" />
<input type="submit" value="Submit" />
</form>

当点击提交按钮时,我被转发到以下页面:http://localhost/myproject/anotherpage

但我想留下来

http://localhost/myproject/

编辑:现在我要写

request.getRequestDispatcher("/index.jsp").forward(request, response);

在 doPost() 方法中

最佳答案

您的 JSP 中应该有一个带有 method="POST" 的表单

    <form method="post">
        <input type="number" name="number1" id="number1" />
        +
        <input type="number" name="number2" id="number2" />

        <input type="submit" />
    </form>

然后在您的 servlet 中,在 doPost 方法中,您必须使用 getParameter("name") 获取表单的参数,对其执行您想要的操作,然后将其重新发送到您的 JSP (setAttribute)。 不要忘记链接你的jsp(我例子的最后一行)

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String textNumber1 = request.getParameter("number1");
        String textNumber2 = request.getParameter("number2");
        int number1 = (!textNumber1.isEmpty() ? Integer.parseInt(textNumber1) : 0);
        int number2 = (!textNumber2.isEmpty() ? Integer.parseInt(textNumber2) : 0);
        int result = number1 + number2;

        request.setAttribute("result", Integer.toString(result));

        request.setAttribute("number1", Integer.toString(number1));
        request.setAttribute("number2", Integer.toString(number2));

        this.getServletContext().getRequestDispatcher("/WEB-INF/calc.jsp").forward(request, response);
    }

最后,在您的 JSP 上,从您的 servlet 中获取您想要使用 getAttribute

在同一页面上显示的属性
<%
    String number1 = (String) request.getAttribute("number1");
    String number2 = (String) request.getAttribute("number2");
    String result  = (String) request.getAttribute("result");

    if (number1 != null && number2 != null && result != null) {
        out.print(String.format("<p>Result of %s + %s = <strong>%s</strong></p>", number1, number2, result));
    }
%>

这个例子是一个小计算器,在表单的同一页上显示数字 1 + 数字 2 的结果 ;)

关于java - jsp表单发送数据到servlet而不改变页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30861456/

相关文章:

java - 带有 'case when exists' 的 JPA @Query 不适用于 Hibernate

java - 他们为什么使用本指南中的界面

java - JSP 代码错误

java - 如何在jsp页面中包含图片?

java - 如何在 jgraphx 的图形中制作所需形式的边缘?

java - 从类重定向到 gsp 页面

java - 使 JPanel 动态适应 JDialog

javascript - 如何使用 onclick 事件在同一窗口和选项卡中打开链接?

javascript - 使用 ajax 将集合填充到 UI

jsp - 如何更改 "Tomcat Web Application Manager"管理页面 http ://localhost:8080/manager/html 上的默认 &lt;title&gt;