我正在使用servlet,它在
的帮助下重定向我dispatcher.forward(request, response);
最后。但在此之后我想获取我被重定向的页面(路径)以在下一个servlet命令中使用它(转到上一页)。我怎么能得到它? 或者以前的URL不包含在请求参数中,我应该自己添加它? 非常感谢你的帮助。
答案 0 :(得分:19)
String referer = request.getHeader("Referer");
response.sendRedirect(referer);
请参阅: Link to forum answer
答案 1 :(得分:12)
尝试使用
request.getAttribute("javax.servlet.forward.request_uri")
答案 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中检索它。