我有一个可以通过多个JSP获取请求的servlet。
但是当我在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”
答案 0 :(得分:3)
您可以执行以下操作
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代码运行时,它将从a
和{{{{}}检索值request.getParamter("jspName")
。 1}}将创建相同的调度程序,getRequestDispatcher(jspName)
将转发到jsp。
答案 1 :(得分:0)
我没有尝试以下方法,但我希望这可以帮助您解决问题。
req.setAttribute("originalRequest", req.getRequestPage());
req.getRequestDispatcher(req.getAttribute(originalRequest).toString()).forward(req, resp);
答案 2 :(得分:0)
我已经尝试过了,它为我工作...
在JSP中
您需要在每个JSP中进行设置。例如:index.jsp是我的jsp名称。
<% session.setAttribute("jspName","index.jsp"); %>
在Servlet中
request.getRequestDispatcher(session.getAttribute("jspName").toString()).forward(req, res);