Go back to same JSP that sent request with RequestDispatcher in Servlet

Colinch picture Colinch · Jun 26, 2013 · Viewed 13.4k times · Source

I have a servlet which can get requests by multiple JSP's.

But when I use the RequestDispatcher in the servlet, I don't know how to forward to the JSP that sent the request.

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

I know there is something like this in html: javascript:javascript:history.go(-1)

I just need something like this:

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

That piece of code is probably very noob but it gives you the idea of what I need.

So: I need to forward to the page that sent the original request (basically reload the page), but because multiple jsp's use the servlet, I cannot simply forward to "page.jsp"

Answer

Prasad Kharkar picture Prasad Kharkar · Jun 26, 2013

You can do following

  • Create a hidden parameter for every jsp named jspName and give value for respective JSPs. e.g. for JSP A, parameter name is jspName and value is a, for JSP B, parameter name is jspName and value is b
  • Read this hidden parameter in the servlet using following code.

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

When you are calling the servlet from JSP A, then it will have paramter japName=a, when servlet code is running, it will retrieve the value a from request.getParamter("jspName") and a getRequestDispatcher(jspName) will create the dispatcher for the same and rd.forward(request, response) will forward to the jsp.