默认情况下第一次访问服务器,服务器端就会产生一个session对象,再会话期内,这个对象一直存在。
但是可以通过修改一些配置来设置浏览器每次请求访问的时候不产生session对象。
(有什么不对的,大家可以指出来啊,自己对session的理解不是很到位。)
在做这个例子的时候,无论如何我都获取不到EL表达式的值,想了半天终于知道了。
首先我在运行代码的时候,浏览器一直在运行着,所以session对象已经有了,当我访问我项目的index.jsp页面时,根本不会触发myhttpSessionListener方法中的created函数,也就是根本不会将num的值放到上下文对象中,因此index。jsp页面中无法获取到num的值。
下边来看源代码
MyHttpSessionListener代码
@WebListener public class myHttpSessionListener implements HttpSessionListener{ private int num=0; @Override public void sessionCreated(HttpSessionEvent se) { num++; se.getSession().getServletContext().setAttribute("num", num); } @Override public void sessionDestroyed(HttpSessionEvent se) { num--; se.getSession().getServletContext().setAttribute("num", num); } } |
<body> 当前在线人数:${num} </body> |
知道自己错误的原因后,我只在心里默默地骂了我自己三声,你是笨蛋,你是笨蛋,你是笨蛋。
我待代码如初恋,代码虐我千百遍。