And
And

Reputation: 343

How to get the previous page URL from request in servlet after dispatcher.forward(request, response)

I'm using the servlet which redirects me with the help of

dispatcher.forward(request, response);

in the end. But after this I want to get the page(path) from which I was redirected to use it in next servlet command(to go to previous page). How could I get it? Or previous URL is not contained in request parameters and I should add it myself? Will be very grateful for your help.

Upvotes: 13

Views: 31828

Answers (4)

rickz
rickz

Reputation: 4474

Try using

request.getAttribute("javax.servlet.forward.request_uri")  

See
https://tomcat.apache.org/tomcat-9.0-doc/servletapi/constant-values.html
and
How to get the url of the client

Upvotes: 14

jlbofh
jlbofh

Reputation: 442

Any method will return source URL when you do forward(..) so my solution is to define a filter to store the requestURL() in a request attribute to check later. To do this in your web.xml write:

...
<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>my.package.CustomFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>MyFilter</filter-name>
    <url-pattern>*</url-pattern>
</filter-mapping>
...

Then in CustomFilter class:

public class CustomFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void destroy() {}

    @Override
    public void doFilter(ServletRequest req, ServletResponse rsp,
            FilterChain chain) throws IOException, ServletException {
        req.setAttribute("OriginURL", req.getRequestURL().toString());
        chain.doFilter(req, rsp);
    }
}

Then you can get it everywhere in your code with ServletRequest object with:

request.getAttribute("OriginURL").toString();

Upvotes: 1

Gyan
Gyan

Reputation: 1176

String referer = request.getHeader("Referer"); response.sendRedirect(referer);

SEE: Link to forum answer

Upvotes: 21

dku.rajkumar
dku.rajkumar

Reputation: 18568

you can store that url in HttpSession and retrieve it in next servlet when you need.

Upvotes: -1

Related Questions