session的使用

session的使用

整体思路

重写HttpSessionListener方法;

在Listener中设置全局的计数器。

当网页有新的访问就更新计数器。

然后在服务端设置一个超时时间,

超过一定时间且用户没有活动时,

Session才会过期然后触发事件。

所以这个统计不会是实时准确的。

 实验效果

 

 

 

 

Listener.java
package com.fakeweb.session;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

@WebListener
public class SessionListener implements HttpSessionListener{
    private Integer TotalOnline=0;
    
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    @Override
    public void sessionCreated(HttpSessionEvent arg0) {
        // TODO Auto-generated method stub
        TotalOnline++;
        System.out.println("已创建"+sdf.format(new Date())+"目前在线人数:"+TotalOnline);
        arg0.getSession().getServletContext().setAttribute("online", TotalOnline);
        /*
         * 参考链接
         * https://www.pocketdigi.com/20120405/753.html
         */
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent arg0) {
        // TODO Auto-generated method stub
        TotalOnline--;
        System.out.println("已销毁"+sdf.format(new Date())+"目前在线人数:"+TotalOnline);
        arg0.getSession().getServletContext().setAttribute("online", TotalOnline);

    }

}

web.xml
<?xml version="1.0" encoding="UTF-8"?>

<web-app ...>
        
   ...
    
  <listener>
      <listener-class>com.fakeweb.session.SessionListener</listener-class>
  </listener>

  <session-config>  
     <session-timeout>2</session-timeout>  
  </session-config>  
 
   ...  

</web-app>

 <input type="text" value="当前在线人数<%=(Integer)application.getAttribute("online")%>" ......>

 

 

 

 

百度云

 链接: https://pan.baidu.com/s/1687WynllFZ0DN95TnsdGDQ 提取码: z5us 复制这段内容后打开百度网盘手机App,操作更方便哦

 

参考连接

https://www.pocketdigi.com/20120405/753.html

posted @ 2019-04-05 18:27  Huppert_Wu  阅读(202)  评论(0编辑  收藏  举报