Spring boot 项目HttpSessionListener用于监听session失效时移除在线用户的全局参数

在项目中会出现用户不点击登出时间触发session.invalidate()方法,此时我们就无法确定用户的实际登录状态,再次我们使用HttpSessionListener监听器来管理用户session失效,进而解决了在线用户的统计或者全局参数的控制


值得注意的是:

  1. @ServletComponentScan注解需要添加到springboot启动类中,否则监听器无法被扫描到而不能执行
  2. @WebListenter注解,添加到实现类上,如果没有添加那么将不能使用
/**
 * 使用说明  需要在启动类上添加@ServletComponentScan注解,以扫描到该监听器
 * 用户监听器实现用于移除在线登录用户信息
 * @author kexin 2018/11/19
 *
 */
@WebListener//监听器注解
public class OpOnlineUserSessionListener implements HttpSessionListener {

	
	/**
	 * session被销毁时触发,如下情况
	 * 		1.主动调用session.invalidate()
	 * 		2.session超时
	 */
	@Override
	public void sessionDestroyed(HttpSessionEvent event) {
		HttpSession session = event.getSession();
		//获取当前用户信息
		User loginUser = (User)session.getAttribute(Constant.LOGIN_USER);
		//移除在线用户
		GlobalVariable.loginMap.remove(loginUser.getUserId());
	}
	
	//session被创建时触发
	@Override
	public void sessionCreated(HttpSessionEvent event) {}

}

猜你喜欢

转载自blog.csdn.net/k18381315803/article/details/84250428
今日推荐