私が作業しているサーブレットには、変数session
があります。
私はsession.invalidate();
を試しましたが、これはセッションを破壊したようですが、response.sendRedirect("restanes.jsp");
のようなリダイレクトを行うと、この行で_HTTP Status 500
_エラーが発生します:
_Java.lang.IllegalStateException: getAttribute: Session already invalidated
_
これは、セッションを破棄しようとしていたためです。
しかし、なぜページはリダイレクトできませんか?同じページの他の場所で、リダイレクトに成功しました。
セッションを破棄して正常にリダイレクトするにはどうすればよいですか?
コードスニペット:
_if(request.getParameter("logout") != null ){
session.invalidate();
response.sendRedirect("restanes.jsp");
}
_
更新:必要なことは、response.sendRedirect("restanes.jsp");
の後に_return;
_だけでした。 BalusC
に心から感謝します。
リダイレクトを送信した後、メソッドから戻る必要があります。
_if (request.getParameter("logout") != null) {
session.invalidate();
response.sendRedirect("restanes.jsp");
return; // <--- Here.
}
_
それ以外の場合、コードは実行を継続し、ブロックのさらに下のsession.getAttribute()
メソッドをヒットして、まさにこの例外を引き起こします。少なくとも、これがこれまでに説明した問題の最も可能性の高い原因であり、これはかなり一般的なスターターの間違いであるという事実に基づいています。例もご覧ください。 この答え 。
あなたのコードは大丈夫です
if(request.getParameter("logout") != null )
{
session.invalidate();
response.sendRedirect("restanes.jsp");
}
ただし、リダイレクトページにセッション属性が含まれていないことを確認してください。 「restanes.jsp」ページからの500内部エラー。リダイレクトされたページとセッションアクティビティを処理します。