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

qq_17007595 2015-04-23 05:20:27
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,无法进行更新操作。
...全文
251 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_17007595 2015-04-23
  • 打赏
  • 举报
回复
已经解决了。通过WebApplicationContext context=WebApplicationContextUtils .getWebApplicationContext(application); MemberDao memberDao=(MemberDao) context.getBean("memberDao");获取dao对象。操作数据库
qq_17007595 2015-04-23
  • 打赏
  • 举报
回复
信息: The listener "cn.kofsoft.util.online.OnlineUtil" is already configured for this context. The duplicate definition has been ignored. 2015-4-23 17:24:21 org.apache.catalina.core.StandardContext listenerStart 严重: Error configuring application listener of class cn.kofsoft.util.online.OnlineUtil javax.naming.NameNotFoundException: Name memberService is not bound in this Context at org.apache.naming.NamingContext.lookup(NamingContext.java:770) at org.apache.naming.NamingContext.lookup(NamingContext.java:153) at org.apache.catalina.util.DefaultAnnotationProcessor.lookupMethodResource(DefaultAnnotationProcessor.java:231) at org.apache.catalina.util.DefaultAnnotationProcessor.processAnnotations(DefaultAnnotationProcessor.java:163) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3790) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 2015-4-23 17:24:21 org.apache.catalina.core.StandardContext listenerStart 严重: Skipped installing application listeners due to previous error(s) 2015-4-23 17:24:21 org.apache.catalina.core.StandardContext start 严重: Error listenerStart 异常代码

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧