HttpSessionListener接口监听网站在线人数

简介: listener代码package com.chinaseacom.store.common;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class MySessionListener implements HttpSessionListe

listener代码

package com.chinaseacom.store.common;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MySessionListener implements HttpSessionListener {  
     
    private long onlineCount;  
 
    public void sessionCreated(HttpSessionEvent event) {  
      
       this.onlineCount=this.onlineCount+1;  
                                //保存在application作用域  
        event.getSession().getServletContext().setAttribute("onlineCount", onlineCount);  
    }  
  
    public void sessionDestroyed(HttpSessionEvent event) {  
        
        this.onlineCount=this.onlineCount-1;  
        event.getSession().getServletContext().setAttribute("onlineCount", onlineCount);  
    }  
  
}

web.xml中配置

<!-- 配置自定义监听器 -->    
 <listener>      
 <listener-class>com.chinaseacom.store.common.MySessionListener</listener-class>    
 </listener>

jsp页面

${application.onlineCount }


要了解Session首先要知道一个概念:Session的销毁只有两种情况:

第一:session调用了 session.invalidate()方法.

第二:前后两次请求超出了session指定的生命周期时间. 其中Session的生命周期时间可以在web.xml配置. 默认30分钟

在web.xml可以做如下配置:

<session-config>
      <session-timeout>5</session-timeout>
</session-config>


Tomcat 默认是会在一个 application 停止的时候,将其所有的session都序列化Tomcat安装目录\work\Catalina\localhost\项目名 文件夹下面看到有一个 SESSIONS.ser 的文件中,然后在下次启动的时候,在反序列化,继续尚未过期的session的。


tomcat单独停止某个应用需要到tomcat管理界面


wKioL1XIngqzJBjzAAWHD9Ijw5Y729.jpg

禁用tomcat session序列化

在tomcat配置文件server.xml中context节点配置saveOnRestart="false"

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
       
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/>

<Context docBase="admin" path="/admin" reloadable="true" source="org.eclipse.jst.jee.server:admin">       
<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false">
<Store className="org.apache.catalina.session.FileStore" />      
</Manager>   
</Context>
   
 </Host>


path:指定访问该Web应用的URL入口。


docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。(指定项目所在地址)


reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。

参考文章:


http://blog.csdn.net/yiyuhanmeng/article/details/8156247

 

本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1683427

目录
相关文章
|
10月前
|
监控 小程序 API
叮咚抢菜-派送时段监听及推送工具🔧
叮咚抢菜-派送时段监听及推送工具🔧
96 0
|
11月前
|
前端开发
前端学习笔记202304学习笔记第九天-web前端学习-动态计算已勾选商品数量
前端学习笔记202304学习笔记第九天-web前端学习-动态计算已勾选商品数量
65 0
|
11月前
|
机器学习/深度学习 小程序 定位技术
「教程」微信小程序获取地理位置信息自动查询天气预报信息(附详细代码)
「教程」微信小程序获取地理位置信息自动查询天气预报信息(附详细代码)
200 0
|
前端开发 Java 应用服务中间件
基于websocket的实时通告功能,推送在线用户,新登录用户
SpringBoot 部署与Spring部署都有一些差别,但现在用Srpingboot的公司多,SpringBoot创建项目快,所以使用该方式来讲解,有一个问题就是开发WebSocket时发现无法通过@Autowired注入bean,一直为空。
基于websocket的实时通告功能,推送在线用户,新登录用户
|
JavaScript Unix Linux
PHP开发的网站,如何实现批量打印快递单的功能?
虽然市场中不断有新的编程语言诞生,但不得不承认PHP在web开发领域仍一直占有很大份额,高效开发是他一直以来最大的一个优点,而且他的学习成本也较低,入门门槛较低,和Python一样是解释性语言,很多人都说他是世界上最好的语言。其实语言并没有好坏之分,只有是否适用,每门语言都有自己的优缺点,毕竟想要获得一样东西,总要放弃点什么,有舍有得,看自己怎么权衡,只要能解决问题就是好的,不管黑猫白猫抓到老鼠就是好猫。自从swoole的加持以及和GO语言的结合,也弥补语言本身的很多不足,慢慢缩小和其他语言之间的差距,不过还是有很长的路要走。--题外话
303 0
|
前端开发 JavaScript
数据工厂平台-8:首页统计功能
数据工厂平台-8:首页统计功能
数据工厂平台-8:首页统计功能
|
容器
监听器应用【统计网站人数、自定义session扫描器、踢人小案例】(修订版)
从第一篇已经讲解过了监听器的基本概念,以及Servlet各种的监听器。这篇博文主要讲解的是监听器的应用。
229 0
监听器应用【统计网站人数、自定义session扫描器、踢人小案例】(修订版)
|
安全 Java 容器
JavaWeb-网站在线用户信息、网站访问量以及管理踢出用户实例(2)
JavaWeb-网站在线用户信息、网站访问量以及管理踢出用户实例
163 0
JavaWeb-网站在线用户信息、网站访问量以及管理踢出用户实例(2)
JavaWeb-网站在线用户信息、网站访问量以及管理踢出用户实例
JavaWeb-网站在线用户信息、网站访问量以及管理踢出用户实例
158 0
Servlet-监听器获得当前在线人数
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/73744940 案例一 使用监听器获得当前在线的人数。
962 0