java文档一
package web1Pac;
public class onLineCounter
{  private static long onLineUser=0;
   public static long getOnLineUser()
    { return onLineUser;
    }
   public static void UserIn()
   { onLineUser++;
   
   }
   public static void UserOut()
   { onLineUser--;
   
   }
}
java文档二
package web1Pac;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebServlet("/CounterListener")
public class CounterListener extends HttpServlet implements HttpSessionListener
 { public void sessionCreated(HttpSessionEvent event) 
{ HttpSession session=event.getSession();
  session.setMaxInactiveInterval(60);
  synchronized(this)
  { onLineCounter.UserIn();
  
  }
}      public void sessionDestroyed(HttpSessionEvent event) 
{ synchronized(this)
{ onLineCounter.UserOut();
  
}


}jsp文档三
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="web1Pac.onLineCounter" %>
<%@page import="web1Pac.CounterListener" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String s=String.valueOf(onLineCounter.getOnLineUser());
out.println(s);
%>
</body>
</html>上面的三个文档是实现session的计数功能,当我用springsource自带浏览器运行文档三时,显示的结果是0;也就是类onLineCounter成员变量的默认值.此结果表明监听器事件没有发生。我作为第一个访问服务器资源的用户,public void sessionCreated(HttpSessionEvent event) 应该发生啊,也就是结果输出的结果应为1,这是怎么回事??

解决方案 »

  1.   

    我在本机测试了下,显示为1,是正常的。
    你是否没有在web.xml中添加:
    <listener>
        <listener-class>web1Pac.CounterListener</listener-class>
    </listener>
      

  2.   

    问题已经解决了springsource编译软件自动完成配置文件,是@WebServlet("/CounterListener")
    public class CounterListener extends HttpServlet implements HttpSessionListener出了问题,改为@WebListener 和public class CounterListener implements HttpSessionListener