最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

java - I need to kill session and do one function after browser close or tab close - Stack Overflow

programmeradmin1浏览0评论

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(".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

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(".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

Share Improve this question asked Apr 13, 2015 at 7:27 AnandKumar SelvamaniAnandKumar Selvamani 3991 gold badge8 silver badges22 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 2 +50

If you use jquery you can listen for the unload event

https://api.jquery./unload/

or using JS

 window.onbeforeunload = function() {...

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

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 ??

发布评论

评论列表(0)

  1. 暂无评论