如何在dispatcher.forward(request,response)之后从servlet中获取请求中的上一页URL

时间:2011-12-21 16:17:33

标签: servlets request

我正在使用servlet,它在

的帮助下重定向我
dispatcher.forward(request, response);

最后。但在此之后我想获取我被重定向的页面(路径)以在下一个servlet命令中使用它(转到上一页)。我怎么能得到它? 或者以前的URL不包含在请求参数中,我应该自己添加它? 非常感谢你的帮助。

4 个答案:

答案 0 :(得分:19)

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

请参阅: Link to forum answer

答案 1 :(得分:12)

尝试使用

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

请参阅
http://www.caucho.com/resin-3.0/webapp/faq.xtp

答案 2 :(得分:0)

当你转发(..)时,任何方法都会返回源URL,所以我的解决方案是定义一个过滤器来将requestURL()存储在请求属性中以便稍后检查。要在web.xml中执行此操作,请写:

...
<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>
...

然后在CustomFilter班:

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);
    }
}

然后,您可以使用ServletRequest对象在代码中的任何位置获取它:

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

答案 3 :(得分:-1)

您可以将url存储在HttpSession中,并在需要时在下一个servlet中检索它。