gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:50:28 26 4
gpt4 key购买 nike

我用的是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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com