ログイン フォーム jsp とログイン認証サーブレットの 2 つのサーブレットを使用します。ログイン フォーム jsp は現在の jsp に似ていますが、検証/リダイレクトは行わず、ユーザーがログインしていない場合はログイン フォームを表示するだけです。セッション属性で確認できます。ユーザーがログインしている場合は、レンダリング時に空白にする必要があります。ログイン フォーム自体は、別のページにリダイレクトするのではなく、AJAX 要求を実行する必要があります。
TL;DR : ログイン jsp は、javascript (AJAX) を使用して LoginServlet との通信を処理する必要があります。
login.jsp:
<% if (session.getAttribute("isLoggedIn") != null) {%>
$.post('LoginServlet', function(data) {
//hide this with js
});
<% } %>
これは LoginServlet に送信され、isLoggedIn
ログインが成功すると属性が設定されます。また、AJAX フォームに json または xml の応答を返します。
public class LoginServlet extends HttpServlet
{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String user = req.getParameter("username");
String pass = req.getParameter("password");
if (login(user, pass))
{
req.getSession().setAttribute("isLoggedIn", true);
returnJsonOKAnswer();
}
else
{
returnJsonInvalidUserOrPassAnswer();
}
}
//...
}