`

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

    博客分类:
  • J2EE
阅读更多
前提是在登录方法的时候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
		
	}
	
}
分享到:
评论

相关推荐

    判断用户已经退出和防止用户未登录直接访问页面

    // 在这里处理用户退出的逻辑,例如清除用户相关的缓存、日志记录等 } ``` 当Session超时或者用户手动注销时,这个事件会被触发。如果需要立即注销用户,可以调用`Session.Abandon()`方法。 然后,我们来看如何...

    处理含有登录地址第二次没退出登录就404的问题

    标题中的问题涉及到的是一个常见的Web应用安全问题,即用户在登录后没有正确退出,再次访问时直接出现404错误。这通常与身份验证和会话管理有关,具体到这个情况,可能是由于Shiro(一个Java安全框架)的配置或使用...

    渗透测试TIPS之删除伪造Linux系统登录日志1

    它们的结构包含多个字段,例如`ut_type`标识日志记录的类型,`ut_pid`是进程ID,`ut_line`表示终端名称,`ut_user`存储用户名,`ut_host`是主机名,还有时间戳和其他信息。`exit_status`结构体用于记录退出状态。 ...

    VC日志记录类

    在VC++编程环境中,日志记录是至关重要的一个环节,它可以帮助开发者跟踪程序运行状态,定位和解决问题。本文将详细探讨“VC日志记录类”的实现及其特点,以`LogFile.cpp`和`LogFile.h`两个文件为核心,我们将深入...

    Spring Security 3多用户登录实现之十一 退出

    以下是一些关于实现Spring Security多用户登录退出功能的关键知识点: 1. **配置注销URL**: 在Spring Security的配置中,你需要定义一个注销URL,如`/logout`。例如,在XML配置中,你可以使用`&lt;http&gt;`元素的`...

    Delphi FireDac Delta 记录操作日志 与 Delta转SQL

    - 使用 FDMemTable:FDMemTable 是 FireDAC 提供的一种内存中的数据表,你可以将它用作临时存储,用来记录用户对数据的操作。当你对 FDMemTable 进行插入、更新或删除操作时,Delta 会自动跟踪这些变化。 - 开启 ...

    javaweb 登录、注册、修改密码、退出登录

    退出登录的主要目的是清除用户的登录状态,保护用户的安全。操作如下: - 销毁Session:在服务器端结束Session,使用户失去登录状态。 - 清除Cookie:如果应用使用了Cookie来辅助身份验证,也需要清除相关Cookie。 -...

    Oracle清除归档日志

    ### Oracle清除归档日志 在Oracle数据库管理中,归档日志的管理和清理是一项重要的维护任务。归档日志是数据库系统为了实现数据恢复而产生的日志文件,当数据库处于归档模式时,每一次完整的数据库备份后都会生成...

    LINUX系统日志的清除.docx

    * wtmp:记录用户每次登录和退出时间的永久日志 * xferlog:记录FTP会话的日志 Linux系统日志的清除是非常重要的,因为这些日志文件会不断增长,占用系统资源,影响系统性能。以下是清除Linux系统日志的方法: * ...

    Linux 操作系统日志管理全攻略

    该纪录一直用到用户登录退出时删除。utmp 文件被各种命令文件使用,包括 who、w、users 和 finger. 下一步,login 程序打开文件 wtmp 附加用户的 utmp 纪录。当用户登录退出时,具有更新时间戳的同一 utmp 纪录附加...

    用户日志留存所采用的技术手段.docx

    这一部分更深入地涉及用户登录、退出、主叫号码、账号、互联网地址或域名等信息的记录。检查方法包括模拟多种网络行为,如论坛发帖、邮件发送等,然后通过日志留存设备验证这些行为是否被准确记录。同时,要求系统...

    history保存用户操作日志,登陆时间,防止会话退出时覆盖

    在Linux系统中,`...通过以上配置,Linux系统可以详细记录用户的操作日志,包括登陆时间,并在会话退出时避免覆盖其他会话的记录。这不仅有助于用户个人回顾操作,也为系统管理员提供了监控和审计用户行为的手段。

    日志记录及跟踪软件运行代码

    在IT行业中,日志记录和跟踪是软件开发过程中的重要环节,它可以帮助开发者理解软件运行时的状态,定位和解决问题。本项目聚焦于使用C++语言编写日志跟踪系统,特别利用了Windows API中的treeview控件来展示日志信息...

    delphi通过IdTCPServer只允许一个用户登录

    在实际编程中,可能还需要处理其他细节,比如加密通信以保护登录信息的安全,或者实现错误处理和日志记录,以便于调试和维护。总之,通过对 `IdTCPServer` 的自定义和扩展,我们可以根据具体需求构建出各种复杂的...

    linux-定时清除日志

    本文将详细介绍如何使用crontab实现定时清除日志。 首先,我们来看`clean-log`这个文件,这可能是一个脚本,用于执行日志清理任务。通常,这样的脚本会包含一些命令,如`rm`或`find`,用来查找并删除指定路径下的旧...

    日志记录管理系统,可以做日志,可以记笔记,QT源代码

    1.日志搜索: 直接在左下方输入文件名称即可完成搜索。 2.日志阅读: 界面右上方可以选择阅读模式,自主确定是否进行阅读。 3.新建日志文件: 直接点击右下角’笔‘按钮,自动跳转编辑界面,输入内容即可,自动识别...

    JSPSmart系统-权限管理与日志记录模块的设计与开发(源代码+lw).zip

    1. **操作日志**:记录用户的每一个操作,如登录、退出、数据修改等,便于追踪用户行为。 2. **错误日志**:当系统发生异常或错误时,记录详细的错误信息,有助于开发者定位问题。 3. **性能日志**:记录系统性能...

    SpringBoot+Vue+Redis实现单点登录(一处登录另一处退出登录)

    同时,利用Redis存储用户登录状态,键为token,值为用户信息。若发现用户已存在,则清除之前的登录状态,更新Redis中的token。 3. **跨域配置**:由于前后端分离,需要配置SpringBoot应用支持跨域请求。 4. **...

    第15章 告警和日志信息监控.pptx

    用户日志:记录系统用户登录及退出系统的相关信息。 程序日志:由各种应用程序抽立管理的日志文件,记录格式不统一。 日志消息的级别 日志消息的级别可以从配置文件 /etc/rsyslog.conf 中看到,受 rsyslogd ...

    ASP+SQL用户登录及管理系统

    7. **错误处理和日志记录**:当发生异常情况时,系统应能捕获并记录错误,以便于后期排查和修复问题。 在开发ASP+SQL用户登录及管理系统时,开发者需要熟悉ASP编程、SQL语法以及网络安全相关的知识。同时,对于前端...

Global site tag (gtag.js) - Google Analytics