所以,我现在正在尝试学习一些JSP,我无法弄清楚如何解决这个问题。
目前,我有一个包含多种表单的index.jsp页面。对于一个表单,它有两个文本字段,它们发送到servlet test.java,以便构建一个字符串。构建字符串后,servlet会重定向回index.jsp
原始index.jsp地址:
http://localhost:8080/TestJSPConversion/
重定向后,地址为
http://localhost:8080/TestJSPConversion/test
当我尝试在index.jsp上使用另一个表单时出现问题,然后它将我带到地址的空白页面,
http://localhost:8080/TestJSPConversion/test?author=Peter+Johnson
我认为这是由于我用来从servlet重定向的方法(request.getRequestDispatcher(“/ index.jsp”)。forward(request,response); 但是,我不太确定如何解决这个问题。即使在servlet重定向回index.jsp之后,我也想让表单工作。
Servlet代码:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// Get parameters from the request.
String name = request.getParameter("name");
String email = request.getParameter("email");
String message = null;
GregorianCalendar calendar = new GregorianCalendar();
if (calendar.get(Calendar.AM_PM) == Calendar.AM) {
message = "Good Morning, ";
} else {
message = "Good Afternoon, ";
}
message += name + " with the email, " + email;
request.setAttribute("message", message);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
Index.jsp代码:
<h2>Choose authors:</h2>
<form method="get">
<input type="checkbox" name="author" value="Tan Ah Teck">Tan
<input type="checkbox" name="author" value="Mohd Ali">Ali
<input type="checkbox" name="author" value="Kumar">Kumar
<input type="checkbox" name="author" value="Peter Johnson">Peter
<input type="submit" value="Query">
</form>
<c:set var="authorName" value="${param.author}" />
</br>
<c:if test="${not empty authorName}">
<c:out value="${authorName}" />
</c:if>
</br>
<form action="test" method="POST">
First Name: <input type="text" name="name" size="20"><br />
Surname: <input type="text" name="email" size="20">
<br /><br />
<input type="submit" value="Submit">
</form>
<c:out value="${message}" />
答案 0 :(得分:0)
还为其他<form>
设置了action =“test”。
如果这会引导您访问某些网址,例如domain / TestJspConnection / test / test ...那么请尝试将action =“/ TestJSPConnection / test”作为您的<form>
属性
哦,是的,完全没有注意到这一点!...你没有在你的sevlet中实现doGet()......所以<form method="get" >
让你登陆空白页
所以..两个解决方案:
1)在servlet中实现doGet()
或
2)为第一个表单设置method="post"
答案 1 :(得分:0)
尝试response.sendRedirect("index.jsp?message=hello");
并使用${param.message}
(EL)显示它。如果您在<form action="test" method="POST">
中使用方法作为帖子,那么您必须使用doPost
方法编写代码。
答案 2 :(得分:0)
首先:你只实现了doPost,所以你的第一个Form with method = Get将是概率。失败。
第二:你应该使用sendRedirect而不是forward。这样,如果你在浏览器上点击刷新,你就不会收到有关重新发布数据的警告!当服务器进程完成并且您希望在JSP中显示结果时,总是更好地发送sendRedirect。
问候