Ответ 1
Попробуйте использовать
request.getAttribute("javax.servlet.forward.request_uri")
Я использую сервлет, который перенаправляет меня с помощью
dispatcher.forward(request, response);
в конце. Но после этого я хочу получить страницу (путь), из которой я был перенаправлен, чтобы использовать ее в следующей команде сервлета (чтобы перейти на предыдущую страницу). Как я мог его получить? Или предыдущий URL-адрес не содержится в параметрах запроса, и я должен добавить его сам? Будем очень благодарны за вашу помощь.
Попробуйте использовать
request.getAttribute("javax.servlet.forward.request_uri")
String referer = request.getHeader("Referer");
response.sendRedirect(referer);
Любой метод вернет исходный 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();
вы можете сохранить этот url
в HttpSession
и получить его в следующем сервлете, когда вам нужно.