【问题标题】:Go back to same JSP that sent request with RequestDispatcher in Servlet返回到在 Servlet 中使用 RequestDispatcher 发送请求的同一 JSP
【发布时间】:2013-06-26 10:27:14
【问题描述】:

我有一个 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”

【问题讨论】:

  • 所以你想将请求从JSP A转发到JSP B,然后在JSP B返回到JSP A
  • 另外,您似乎在混合转发和重定向。你知道有什么区别吗? history.go(...) 显示重定向,但您希望在 JSP 中使用转发。你需要什么,真的吗?看起来这个问题更像是设计问题而不是代码问题。
  • 我有 JSP A、JSP B、ServletC。当 JSP A 向 ServletC 发送请求时,requestdispatcher 应该“转发/重定向”到 JSP A。当 JSP B 向 ServletC 发送请求时,requestdispatcher 应该“转发/重定向”到 JSP B。我不确定有什么区别转发和重定向之间是,但它应该只是转到请求来自的同一页面。

标签: java jsp servlets forward requestdispatcher


【解决方案1】:

你可以做以下

  • 为每个名为jspName 的jsp 创建一个隐藏参数,并为各个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 代码运行时,它将从 request.getParamter("jspName") 检索值 agetRequestDispatcher(jspName) 将为同样和rd.forward(request, response) 会转发到jsp。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      在 JSP 中

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

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

      在 Servlet 中

      request.getRequestDispatcher(session.getAttribute("jspName").toString()).forward(req, res);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-26
        • 2013-04-28
        • 1970-01-01
        相关资源
        最近更新 更多