Ответ 1
Передайте первоначально запрошенный URL-адрес в качестве параметра запроса при перенаправлении на страницу входа.
String from = URLEncoder.encode(request.getRequestURI(), "UTF-8");
if (request.getQueryString() != null) {
from += "?" + request.getQueryString();
}
response.sendRedirect("login.jsp?from=" + from);
В login.jsp
передать его в форму отправки формы входа в качестве скрытого поля ввода.
<input type="hidden" name="from" value="${fn:escapeXml(param.from)}" />
(примечание: fn:escapeXml()
не позволяет XSS при повторном отображении управляемых пользователем данных в HTML)
В действии входа проверьте, есть ли он там, а затем обрабатывать соответственно.
String from = request.getParameter("from");
if (from != null && !from.isEmpty()) {
response.sendRedirect(from);
} else {
response.sendRedirect("home.jsp");
}