用户退出登录删除登录日志表记录

前提是在登录方法的时候setAttribute("onlineinfo",onlineinfoEntity);
以下是对web.xml中session时间自动失效后的操作,或者,用户主动退出时候也可用此方法。

package org.springside.modules.web.struts2;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import org.springframework.stereotype.Component;
import org.springside.modules.utils.ContextUtil;

import com.ictrep.base.entity.onlines.OnlineInfo;
import com.ictrep.base.entity.onlines.OnlineOutLog;
import com.ictrep.base.service.onlines.OnlineInfoManager;
import com.ictrep.base.service.onlines.OnlineOutLogManager;
import com.ictrep.base.web.base.onlines.OnlineinfoAction;
import com.ictrep.base.web.base.onlines.OnlineoutlogAction;

/**
 * Application Lifecycle Listener implementation class CountSessionListener
 * @author Lnw
 * @date 2012-06-15
 */
//,HttpSessionAttributeListener,HttpSessionActivationListener,HttpSessionBindingListener
@Component
public class CountSessionListener implements HttpSessionListener{

	/*@Autowired
	private OnlineInfoManager  onlineinfoManager;*/
							 //onlineinfoManager
	
	 /**
     * Default constructor. 
     */
    public CountSessionListener() {
       System.out.println("启动了。。。。。。");
    }
	
   /* public static ServletContext getServletContext() {
		// WebContext wc = WebContextFactory.get();
		// if (wc != null) {
		// return wc.getServletContext();
		// } else
		//{
			ServletContext context = ContextUtil.get(Constant.SERVLET_CONTEXT, ServletContext.class);
			if (context != null) {
				return context;
			}
		//}
		//logger.warn("此方法只能在Web服务器环境下使用.");
		return null;
	}

    public static ApplicationContext getWebApplicationContext() {
		ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
		return ctx;
	}*/
    
    /**
     * @正常退出系统时 
     * @与非正常退出时 
     * 都走此方法attributeRemoved()
     * 但是要分情况
     */
    // user exit 
    //private List<OnlineInfo> m_info=new ArrayList<OnlineInfo>();
	public void sessionDestroyed(HttpSessionEvent system_exitEvent) {
		String userid=((String)system_exitEvent.getSession().getAttribute("userId_date")).split("_")[0];
		OnlineInfo info=(OnlineInfo)system_exitEvent.getSession().getAttribute("onlineinfo");
		//m_info.add(info);
		OnlineOutLog outlog=new OnlineOutLog();
		//如果数据库中有id为这个的对象   就去 删除 SYSTEM_ONLINE表中当前退出用户 id的记录
		System.out.println("监听器: "+info.getUser().getUsername());
		//if(onlineinfoManager.getOlineInfoById(info.getId()).size()>0){
			if(userid.equals(String.valueOf(info.getUser().getId()))){
				outlog.setUser(info.getUser());
				outlog.setDepartment(info.getDepartment());
				outlog.setLogindate(info.getLogindate());
				outlog.setLastvisitdate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
				outlog.setSessionid(info.getSessionid());
				outlog.setIpaddress(info.getIpaddress());
				outlog.setSyscode(info.getSyscode());
			}
		//}
		try{
			OnlineInfoManager onlineinfoManager= ContextUtil.getBean("onlineinfoManager", OnlineInfoManager.class); //拿到login manager
			OnlineOutLogManager online_OutManager= ContextUtil.getBean("onlineoutlogManager", OnlineOutLogManager.class); //拿到out manager
					online_OutManager.save(outlog); 				//保存日志记录
					onlineinfoManager.removeObject(info.getId());   //删除登录记录
			
		}catch (Exception e) {
			//System.out.println("异常:"+info.getUser().getUsername());
			//e.printStackTrace();
			System.out.println(e.getMessage());
			//m_info.clear();
		}
	}
	
	public void sessionCreated(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub
		
	}


	public void attributeAdded(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		
	}


	public void attributeReplaced(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void sessionDidActivate(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void sessionWillPassivate(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void valueBound(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void valueUnbound(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	
}

猜你喜欢

转载自primarykeylw.iteye.com/blog/1564790