java - 在jsp中添加后退按钮

标签 java javascript jsp servlets back-button

我有 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/

相关文章:

Java Hibernate OneToOne 异常映射错误?

java - 如何使用 Spring Boot 指定 BeanNamingStrategy?

javascript - 我如何知道我页面上的所有异步调用何时完成(解析云函数)?

javascript - 错误设备 : (3:9741) (0, l.useLinkBuilder) 不是函数。 (在 '(0,l.useLinkBuilder)()' 中, '(0,l.useLinkBuilder)' 未定义)

java - 如果测试不显示代码部分 - spring mvc

java - 如何使 Java 可以使用任意字体文件?

java - 将日志文件解析为 XML

javascript - 在 chrome 控制台重新加载后保留 Javascript 迭代

java - pageContext.request.contextPath 不工作

java - 在Struts2中如何检查List是否包含特定元素?