0

アプリケーションにセッションの有効期限を実装しようとしています。私はMVCパターンに従います。web.xml ファイルでタイムアウトを設定しました。これは私のセッション有効期限の実装です

protected void doPost(HttpServletRequest request, HttpServletResponse response)    throws    ServletException, IOException 
{
HttpSession session = request.getSession(false);
if (session != null)
{
// controller code
}
else
response.sendRedirect("JSP/HomePage.jsp?message=Your Session Has Expired");     
}

私の知る限り、要求されたセッションがまだ作成されていない場合、request.getSession(false) は null オブジェクトを返します。

上記のコードは、(つまり、HomePage.jsp にリダイレクトする) 場合にうまく機能し ます

今私の問題は、(セッションが期限切れになった後)1つのjspページでアンカータグリンクをクリックすると、新しいjspページに移動し、フォームリクエストを作成すると、コードがHomePage.jspに転送されないことです。

HttpListenerの助けを借りて、新しいセッションが作成され、新しい jsp ページがナビゲートされたときに request.getSession(false) が新しく作成されたセッションを返すことを確認できます (ただし、最初の 2 つのケースでは、 request.getSession(false) は null を返します)。 )。

誰かが私がしていることを教えてもらえますか? そして、私は今どのように進めるべきですか?

4

1 に答える 1

1

次の行を jsp ファイルに追加できます。

<%@ page session="false" %>

これは、jsp が提供されるときにセッションを作成しないようにサーブレット コンテナーに指示します。

于 2012-11-30T14:24:19.477 に答える