我有多个 JSP 页面,并且我将用户从一个 JSP 重定向到另一个 JSP。假设我有 JSP1、JSP2 和 JSP3,并且我将用户从 JSP1 重定向到 JSP2。
问题:如果用户当前正在使用 JSP2,并且如果他/她按下浏览器的后退按钮,则会将用户从 JSP2 重定向到 JSP1。
要求:我想要的是,如果用户按下浏览器的后退按钮,它不应该重定向到 JSP1,而应该让用户保持在 JSP2 上。
请您参考如下方法:
RequestDispatcher.forward
此方法(forward())用于将请求传递到同一服务器内的另一个资源以进行进一步处理,另一个资源可以是任何 servlet、jsp 页面或任何类型的文件。当我们调用forward方法将请求发送到另一个资源而不通知客户端时,此过程由 Web 容器负责,哪个资源将处理 requestDispatcher 对象上提到的请求,我们可以通过使用 ServletContext 或 Request 两种方式获取该请求。这也称为服务器端重定向。
RequestDispatcher rd = request.getRequestDispatcher("pathToResource");
rd.forward(request, response);
或者
RequestDispatcher rd = servletContext.getRequestDispatcher("/pathToResource");
rd.forward(request, response);
SendRedirect():
该方法在 HttpServletResponse 中声明 此方法用于将客户端请求重定向到其他位置以进行进一步处理,新位置在不同服务器或不同上下文上可用。我们的 Web 容器处理此问题并使用浏览器传输请求,并且此请求在浏览器中作为新请求可见。有时这也称为客户端重定向。