前提是在登录方法的时候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()`方法。 然后,我们来看如何...
标题中的问题涉及到的是一个常见的Web应用安全问题,即用户在登录后没有正确退出,再次访问时直接出现404错误。这通常与身份验证和会话管理有关,具体到这个情况,可能是由于Shiro(一个Java安全框架)的配置或使用...
它们的结构包含多个字段,例如`ut_type`标识日志记录的类型,`ut_pid`是进程ID,`ut_line`表示终端名称,`ut_user`存储用户名,`ut_host`是主机名,还有时间戳和其他信息。`exit_status`结构体用于记录退出状态。 ...
在VC++编程环境中,日志记录是至关重要的一个环节,它可以帮助开发者跟踪程序运行状态,定位和解决问题。本文将详细探讨“VC日志记录类”的实现及其特点,以`LogFile.cpp`和`LogFile.h`两个文件为核心,我们将深入...
以下是一些关于实现Spring Security多用户登录退出功能的关键知识点: 1. **配置注销URL**: 在Spring Security的配置中,你需要定义一个注销URL,如`/logout`。例如,在XML配置中,你可以使用`<http>`元素的`...
- 使用 FDMemTable:FDMemTable 是 FireDAC 提供的一种内存中的数据表,你可以将它用作临时存储,用来记录用户对数据的操作。当你对 FDMemTable 进行插入、更新或删除操作时,Delta 会自动跟踪这些变化。 - 开启 ...
退出登录的主要目的是清除用户的登录状态,保护用户的安全。操作如下: - 销毁Session:在服务器端结束Session,使用户失去登录状态。 - 清除Cookie:如果应用使用了Cookie来辅助身份验证,也需要清除相关Cookie。 -...
### Oracle清除归档日志 在Oracle数据库管理中,归档日志的管理和清理是一项重要的维护任务。归档日志是数据库系统为了实现数据恢复而产生的日志文件,当数据库处于归档模式时,每一次完整的数据库备份后都会生成...
* wtmp:记录用户每次登录和退出时间的永久日志 * xferlog:记录FTP会话的日志 Linux系统日志的清除是非常重要的,因为这些日志文件会不断增长,占用系统资源,影响系统性能。以下是清除Linux系统日志的方法: * ...
该纪录一直用到用户登录退出时删除。utmp 文件被各种命令文件使用,包括 who、w、users 和 finger. 下一步,login 程序打开文件 wtmp 附加用户的 utmp 纪录。当用户登录退出时,具有更新时间戳的同一 utmp 纪录附加...
这一部分更深入地涉及用户登录、退出、主叫号码、账号、互联网地址或域名等信息的记录。检查方法包括模拟多种网络行为,如论坛发帖、邮件发送等,然后通过日志留存设备验证这些行为是否被准确记录。同时,要求系统...
在Linux系统中,`...通过以上配置,Linux系统可以详细记录用户的操作日志,包括登陆时间,并在会话退出时避免覆盖其他会话的记录。这不仅有助于用户个人回顾操作,也为系统管理员提供了监控和审计用户行为的手段。
在IT行业中,日志记录和跟踪是软件开发过程中的重要环节,它可以帮助开发者理解软件运行时的状态,定位和解决问题。本项目聚焦于使用C++语言编写日志跟踪系统,特别利用了Windows API中的treeview控件来展示日志信息...
在实际编程中,可能还需要处理其他细节,比如加密通信以保护登录信息的安全,或者实现错误处理和日志记录,以便于调试和维护。总之,通过对 `IdTCPServer` 的自定义和扩展,我们可以根据具体需求构建出各种复杂的...
本文将详细介绍如何使用crontab实现定时清除日志。 首先,我们来看`clean-log`这个文件,这可能是一个脚本,用于执行日志清理任务。通常,这样的脚本会包含一些命令,如`rm`或`find`,用来查找并删除指定路径下的旧...
1.日志搜索: 直接在左下方输入文件名称即可完成搜索。 2.日志阅读: 界面右上方可以选择阅读模式,自主确定是否进行阅读。 3.新建日志文件: 直接点击右下角’笔‘按钮,自动跳转编辑界面,输入内容即可,自动识别...
1. **操作日志**:记录用户的每一个操作,如登录、退出、数据修改等,便于追踪用户行为。 2. **错误日志**:当系统发生异常或错误时,记录详细的错误信息,有助于开发者定位问题。 3. **性能日志**:记录系统性能...
同时,利用Redis存储用户登录状态,键为token,值为用户信息。若发现用户已存在,则清除之前的登录状态,更新Redis中的token。 3. **跨域配置**:由于前后端分离,需要配置SpringBoot应用支持跨域请求。 4. **...
用户日志:记录系统用户登录及退出系统的相关信息。 程序日志:由各种应用程序抽立管理的日志文件,记录格式不统一。 日志消息的级别 日志消息的级别可以从配置文件 /etc/rsyslog.conf 中看到,受 rsyslogd ...
7. **错误处理和日志记录**:当发生异常情况时,系统应能捕获并记录错误,以便于后期排查和修复问题。 在开发ASP+SQL用户登录及管理系统时,开发者需要熟悉ASP编程、SQL语法以及网络安全相关的知识。同时,对于前端...