着急请教一个问题:关于Spring MVC HttpSessionListener监听的

qq_17007595 qq_17007595 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
public class OnlineUtil implements ServletContextListener, HttpSessionListener,
HttpSessionAttributeListener {
// 声明一个ServletContext对象
private ServletContext application = null;


@Override
public void contextInitialized(ServletContextEvent sce) {
// 容器初始化时,向application中存放一个空的容器
this.application = sce.getServletContext();
this.application.setAttribute("onLineUser", new ArrayList());
}


@Override
public void attributeAdded(HttpSessionBindingEvent hse) {
// 如果登陆成功,则将用户保存在列表之中
List list = (List) this.application.getAttribute("onLineUser");
if(hse.getValue() instanceof Member){
list.add(hse.getValue());
}
this.application.setAttribute("onLineUser", list);
}

/**
* 任何一个Session被销毁时进入
*/

@Override
public void sessionDestroyed(HttpSessionEvent hse) {
// 将用户名从列表中删除
List list = (List) this.application.getAttribute("onLineUser");
if(null!=list && list.size()>0){
Member member=(Member) list.get(0);
//问题就在这块 :数据库操作
// if(null!=member){
// member.setOnlineFlag(1);//更新为离线状态
// memberService.updateIsOnline(member);
// }
list.remove(member);
}
this.application.setAttribute("onLineUser", list);
}
}

private MemberService memberService;

public MemberService getMemberService() {
return memberService;
}
@Resource(name = "memberService")
public void setMemberService(MemberService memberService) {
this.memberService = memberService;
}
需求是这样的:客户要求做一个实时在线人数统计,这个做出来了。问题就是:我在客户退出的时候,
进入这个销毁sessionDestroyed的方法(如果客户点击退出按钮,这个就好办了,关键是一般人都直接关闭浏览器),
然后更新数据库中OnlineFlag(在线状态)这个字段。现在是获取不到memberService,无法进行更新操作。
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
qq_17007595
Java EE 67,535 成员 225,843 内容