0

JSPとJAVAを使用してWebプロジェクトを開発しています。セッションタイムアウトを無限大に設定する必要があります。セッションは、ユーザーのブラウザが閉じられたときにのみ期限切れになります。どうすればいいですか?

セッションのタイムアウトを無限に設定するのが良い習慣かどうか、あなたの提案が必要です。ご意見をお聞かせください。

ありがとうございました。

4

3 に答える 3

0

これらの行を web.xml に追加することにより、web.xml ファイルでセッション タイムアウトを指定できます。

<session-config>
<session-timeout>30</session-timeout>
</session-config>

値は分単位で、非アクティブな期間です。つまり、ブラウザがサーバーと対話するたびに更新されます。

無限の値を持つ (可能かどうかは不明) ことは強くお勧めしません。ブラウザがいつ閉じられるか分からず、最終的にはメモリが不足するか、無用なセッションが大量に保存される可能性があります。

代わりに、お勧めしませんが、セッションを維持するために、html または ajax リクエストでメタ リフレッシュを試みることができます。タイムアウトに高い値を設定するだけです。

それが役に立てば幸い。

于 2012-08-09T11:05:14.387 に答える
0

サーブレット仕様で指定されているデフォルトのセッション タイムアウトはなく、コンテナに残されています。

tomcat の場合は 30 分です。DD ?

<session-config> 
<session-timeout>600</session-timeout> 
</session-config>

また

setMaxInactiveInterval()HttpSession オブジェクトのメソッドによってプログラムで。

セッション タイムアウトが -1 に設定されている場合、セッションの有効期間は無限に延長されます。つまり、コンテナーが実行されている限りです。

最後に、アプリケーションのセッション タイムアウトが無限である場合、セッションが期限切れになることはないため、お勧めできません。

于 2012-08-09T11:17:12.980 に答える
0

jsp で以下のコード スニペットを試して、ajax 関数を呼び出してサーバー側コンポーネントをヒットする js 関数をヒットすることができます。次に、セッション API を使用してセッションを無効にします。

window.onbeforeunload = WindowClose; 

function WindowClose() { 

  //Write a AJAx request here to hit the server side servlet of any filter 

}

または使用

<body onunload="WindowClose(); >

サーバー側のコードでは、使用

HttpSession session = request.getsession();
session.setMaxInactiveInterval(0); //or session.invalidate();

また、推奨されているように、web.xml でデフォルトのセッション タイムアウト値を定義して、ブラウザがクラッシュした場合に規定の時間が経過するとセッションが無効になるようにするのも良い方法です。

于 2012-08-09T11:21:13.723 に答える