Spring MVC 下Session监听器监听设置小细节

来源:互联网 发布:剑三藏剑正太脸数据 编辑:程序博客网 时间:2024/04/30 14:53

今天在SpringMVC项目中加入了一个Session监听事件,当在web.xml中注册后启动项目一直报异常,之后查证后发现,原来session监听类中不能进行依赖注入,而我同时又必须要用注入方式进行实例化,最终经过多次试验,终于解决了问题,下面是具体代码:

//记得 到web.xml中注册监听public class SessionListenerLog implements HttpSessionListener, ServletRequestListener{private HttpServletRequest request;//监听事件中 不能添加依赖注入//@Resource(name="AuditLogServiceImpl")private AuditLogService auditLogService;@Overridepublic void sessionCreated(HttpSessionEvent event) {//当client端访问server端jsp页面时,session也就创建了//但并不意味着用户就已经登录,因此登陆日志不写在这}@Overridepublic void sessionDestroyed(HttpSessionEvent event) {//可将下面类中需要的类都进行依赖注入,非常方便ApplicationContext ctx = ContextLoader.getCurrentWebApplicationContext();auditLogService = (AuditLogService) ctx.getBean("AuditLogServiceImpl");//但退出日志写在这里//只要用户退出,理论上session需要被销毁HttpSession session = event.getSession();String LoginName = (String) session.getAttribute("sessionUserName");StringBuilder sb = new StringBuilder();//details 信息SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:dd:ss");sb.append("退出时间: ").append(sdf.format(new Date())).append("\n");sb.append("退出用户: ").append(LoginName).append("\n");String detailsMsg = sb.toString();if(detailsMsg.length() != 0 ){String GUID = new RandomGUID().toString().replaceAll("-", "");GUID = GUID.substring(1, GUID.length()-1);//记录日志基本信息ZfSysLogBasicBean logBasic = auditLogService.insertZfSysLogOutBasic(request, "AJ", "", "LOGOUT", "", "100335",SessionListenerLog.class, GUID,LoginName);auditLogService.insertZfSysLogDetails(detailsMsg, logBasic);}}@Overridepublic void requestInitialized(ServletRequestEvent requestEvent) {request = (HttpServletRequest) requestEvent.getServletRequest();}@Overridepublic void requestDestroyed(ServletRequestEvent requestEvent) {}}


0 0
原创粉丝点击