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

前端 未结 4 1740
借酒劲吻你
借酒劲吻你 2020-12-17 16:18

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

相关标签:
4条回答
  • 2020-12-17 16:39

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

    0 讨论(0)
  • 2020-12-17 16:53

    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

    0 讨论(0)
  • 2020-12-17 16:54

    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();
    
    0 讨论(0)
  • 2020-12-17 17:04

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

    SEE: Link to forum answer

    0 讨论(0)
提交回复
热议问题