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