送信されたかどうかはブラウザに依存しているので、とにかくリファラーヘッダーを信頼しません。むしろ、現在のリクエスト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");