Я бы не стал доверять заголовку реферера, так как вы зависите от браузера, был ли он отправлен.Вместо этого укажите его самостоятельно на основе текущего URI запроса.
response.sendRedirect("login?from=" + URLEncoder.encode(request.getRequestURI(), "UTF-8"));
, а затем в форме входа в систему
<form action="login" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="hidden" name="from" value="${param.from}">
<input type="submit">
</form>
, а затем в действии входа в систему
User user = userDAO.find(username, password);
if (user != null) {
session.setAttribute("user", user);
response.sendRedirect(request.getParameter("from"));
} else {
request.setAttribute("error", "Unknown login");
request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
}
Обновление : или, если вы хотите быть без параметров (согласно вашему комментарию к другому ответу), (ab) используйте сеанс.
session.setAttribute("from", request.getRequestURI());
response.sendRedirect("login");
, а затем вдействие входа
response.sendRedirect((String) session.getAttribute("from"));
session.removeAttribute("from");