1

我有一个 servlet,它可以获取多个 JSP 的请求。

但是当我在servlet中使用RequestDispatcher时,我不知道如何转发到发送请求的JSP。

req.getRequestDispatcher("page.jsp").forward(req, resp);

我知道 html 中有这样的东西:javascript:javascript:history.go(-1)

我只需要这样的东西:

req.setAttribute("originalRequest", req.getRequestPage());
req.getRequestDispatcher(originalRequest).forward(req, resp);

那段代码可能很菜鸟,但它让你知道我需要什么。

所以:我需要转发到发送原始请求的页面(基本上是重新加载页面),但是由于多个jsp使用servlet,我不能简单地转发到“page.jsp”

4

3 回答 3

3

您可以执行以下操作

  • 为每个命名的 jsp 创建一个隐藏参数,jspName并为相应的 JSP 赋值。例如,对于 JSP A,参数名称是jspName,值是a,对于 JSP B,参数名称是jspName,值是b
  • 使用以下代码在 servlet 中读取此隐藏参数。

    String jspName = request.getParameter("jspName");
    RequestDispatcher rd = request.getRequestDispatcher(jspName);
    
    rd.forward(request, response);
    

当您从 JSP A 调用 servlet 时,它将具有参数japName=a,当 servlet 代码运行时,它将从中检索值arequest.getParamter("jspName")并且 agetRequestDispatcher(jspName)将为其创建调度程序rd.forward(request, response)并将转发到 jsp。

于 2013-06-26T10:43:05.163 回答
0

我没有尝试以下方法,但我希望这可以帮助您解决问题。

req.setAttribute("originalRequest", req.getRequestPage());
req.getRequestDispatcher(req.getAttribute(originalRequest).toString()).forward(req, resp);
于 2015-11-09T09:17:22.213 回答
0

我已经尝试过这种方式,它对我有用......

在 JSP 中

您需要在每个 JSP 中设置它。例如:index.jsp 是我的 jsp 名称。

<% session.setAttribute("jspName","index.jsp"); %>

在 Servlet 中

request.getRequestDispatcher(session.getAttribute("jspName").toString()).forward(req, res);
于 2020-11-10T10:54:12.227 回答