0

以下のコードで sessionCreated は、新しいセッションが作成されるたびに機能します。ただし、sessionDestroyed は、session.invalidate(); を呼び出す場合にのみ機能します。次の状況でどのように機能させることができますか**

1) ユーザーがブラウザを閉じる

2) システムの電源オフ

3) セッションタイムアウト**

 import java.util.*;
 import javax.servlet.*;
 import javax.servlet.http.*;
 public class SesListener implements HttpSessionListener 
 {
long sttime,endtime;
public void sessionCreated(HttpSessionEvent se)
{
    sttime=System.currentTimeMillis();
    HttpSession ses=se.getSession();
    ServletContext sc=ses.getServletContext();
    sc.log("session started at "+new Date());
    System.out.println("session started at "+new Date());
}

public void sessionDestroyed(HttpSessionEvent se)
{

    endtime=System.currentTimeMillis();
    HttpSession ses=se.getSession();
    ServletContext sc=ses.getServletContext();
    sc.log("session ended at "+new Date());
    System.out.println("session ended  at "+new Date());
}
 }

私の.xmlファイルは

 <listener>
   <listener-class>SesListener</listener-class>
 </listener>
4

1 に答える 1

2

サーバーに接続してセッションを無効にする信頼できる方法はありません。たとえば、ネットワーク損失/電力損失: (サーバーに接続できない)

ただし、ブラウザーを閉じると、onunload イベントを使用してユーザーのブラウザー クローズ イベントをキャプチャし、ログアウト要求をトリガーすることができます。

また、セッションタイムアウト中にリスナーの sessionDestroyed() が実行されます

于 2012-11-17T05:59:35.983 に答える