我有 3 个 jsp 页面(index.jsp、result1.jsp、result2.jsp)
和一个 servlet
。处理如下:
索引.jsp
<form method="post" action="MYSERVLET" >
<input type="text" name="studentname" id="studentname"/>
<input type="submit" value="click" />// goes to a servlet named as MYSERVLET
</form>
我的服务器
String t=request.getParameter("studentname");
------fetching data from database and sending to result1.jsp------
String nextJSP = "/result1.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
dispatcher.forward(request,response);
结果1.jsp
//从 servlet 中获取数据并在 result1.jsp
中显示数据,并将相同的值传递给 result2.jsp
out.println(retrieved result from servlet);
<a href="result2.jsp?somestring=<%out.println(retrieved result from servlet);%>"> <%out.println(retrieved result from servlet);%></a>// after clicking on "retrieved result from servlet" i am passing this retrieved value to another jsp result2.jsp and also retrieving some data from database as follows:
结果2.jsp
String w=request.getParameter("somestring");
out.println(w);
我想在此处(在 result2.jsp 中)提供一个后退按钮
,以便在单击后退按钮
后,它将带我到result1.jsp
我可以在其中看到之前显示的数据(out.println(retrieved result from servlet);)
。但是,当我单击浏览器后退按钮(在 result2.jsp 中)时,每次都会出现警报 "Confirm Form Resubmission"
然后我重新加载该页面以查看 (out.println(retrieved result来自 servlet);)
,我想避免这个警报,我该如何避免呢?我怎样才能在没有任何警报的情况下直接看到该页面?
最佳答案
我认为您的问题出在您放入 servlet 中的“转发”操作。 “转发”只发生在服务器上,浏览器不知道服务器上发生了什么。事实上,即使您在 result1 页面上,您也应该在 url 栏中看到“MYSERVLET Url”。因此,当您继续访问 result2.jsp 时,单击“后退”只会让您再次访问 Servlet url,而不是“result1.jsp”。由于您的 servlet 是表单提交的目标,您会收到该警报。
为避免这种情况,您应该在您的 servlet 中尝试使用“redirect”或“sendRedirect”而不是“forward”。在这种情况下,您的浏览器将知道地址的更改,您也可以使用后退按钮。
但是请注意,通过重定向,您发送给 servlet 的所有请求数据都不能直接传递给 result1.jsp,您应该将它们保存在 Session 中。尝试阅读 this .
关于java - 在jsp中添加后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10794027/