Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I need to kill session and do one function after browser close or tab close

I want to kill session after browser close or tab close.And I need to do one database connectivity after the session get expires using Session Listener.But, for that I need to wait until the session destroys.

Here is the code which executes when the session destroyed.

public void sessionDestroyed(HttpSessionEvent event) {
        synchronized (this) {
            //System.out.println("deletion");
            ServletContext application = event.getSession().getServletContext();
            sessionCount = (Integer) application.getAttribute("SESSION_COUNT");
            application.setAttribute("SESSION_COUNT", sessionCount=sessionCount - 1);
            //application.setAttribute("SESSION_COUNT", --sessionCount);


            try
            {
                Class.forName("com.mysql.jdbc.Driver");
            }
            catch (ClassNotFoundException e) {
                System.out.println("" + e);
            }

            Connection connection = null;
            try {
                connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/raptor1_5", "root", "");
                Statement st = connection.createStatement();

                st.executeUpdate("update adminlogin set Password='admin' where Username='admin'");  

            }   catch (SQLException e) {
                e.printStackTrace();
            }

        }
        System.out.println("Session Destroyed: " + event.getSession().getId());
        System.out.println("Total Sessions after delete: " + sessionCount);
    }

But, I don't want to wait until the session destroys.I need to do this code after the browser gets close.Hope someone will get me out of this.

Thank you

like image 372
Anand Kumar Avatar asked Apr 13 '15 07:04

Anand Kumar


2 Answers

If you use jquery you can listen for the unload event

https://api.jquery.com/unload/

or using JS

 window.onbeforeunload = function() {...

Then of couse you could fire some ajax to call the server side code.

like image 62
Scary Wombat Avatar answered Sep 23 '22 07:09

Scary Wombat


Detect the Browser's Close Event and Invalidate Session using

if(session!=null) { 
session.invalidate();   
}   

How to detect browser Close Event ?

$(document).ready(function()
{
 $(window).bind("beforeunload", function() { 
   return confirm("Do you really want to close?"); // here you can invalidate
 });
});

Update

How to differentiate between Browser Close and Refresh Event ??

like image 41
Neeraj Jain Avatar answered Sep 22 '22 07:09

Neeraj Jain