java—实现一个监听器HttpServletRequest的创建销毁、在线人数 (56)
在JavaWeb中的监听器分类
在Javaweb中存在三个被监听对象:
HttpServletRequest
HttpSessoin
ServletContext
监听者 |
被监听者 |
监听到事件对象 |
HttpSession – 监听HttpSession活化和顿化。 |
||
HttpSession – 监听session的属性变化的。S.setAttributee(); |
||
HttpSession - 监听哪一个对象,绑定到了session上。S.setAtrri(name,User); |
||
HttpSesion – 监听sessioin创建销毁 |
||
ServletContext – 属性变化的 |
||
servletContext 创建销毁 |
||
ServletRequestListener - serlvetRequestAttibuteListner |
Rrequest -创建销毁 |
实现一个监听器HttpServletRequest的创建销毁
第一步:实现一个类:
package cn.hx.listener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
public class RequestListener implements ServletRequestListener {
public void requestDestroyed(ServletRequestEvent sre) {
System.err.println("request销毁了:");
Object o = sre.getSource();
System.err.println("这个o is :"+o);//apache.RequestFaced@22222
}
public void requestInitialized(ServletRequestEvent sre) {
System.err.println("request创建了:");
Object o = sre.getSource();
System.err.println("这个o是 :"+o);//apache.RequestFaced@22222
}
}
第二步:必须要配置到web.xml
<listener>
<listener-class>cn.itcast.listener.RequestListener</listener-class>
</listener>
说明:
1:配置一个Listener只要求提供类名就可以了。
2:在tomcat启动时,会自动的初始化这个监听器类。
3:tomcat创建的Listner,Serlvet,Filter都是单列的.
在线人数
只要有人访问本站点,成功创建一个Session就是一个会话,一个会话就是一个在线人数。
用HttpSSessionListener来监听Session的创建。
第一步:
package cn.hx.listener;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* 以下实现在线人数的统计
*/
public class MySessionListener implements HttpSessionListener {
private Integer online=1;
//request.getSession();
public void sessionCreated(HttpSessionEvent se) {
System.err.println("有人访问本网点了");
HttpSession hs1 = (HttpSession) se.getSource();
HttpSession hs2 = se.getSession();
System.err.println("hs1:"+hs1.getId()+","+hs2.getId()+",ip:");
//获取整个域的对象
ServletContext sc= se.getSession().getServletContext();
sc.setAttribute("online",online++);
//将所有session放到servletContext
//先从application获取所有已经维护的sesison
List<HttpSession> list = (List<HttpSession>) sc.getAttribute("sessions");
if(list==null){//第一个访问的人
list = new ArrayList<HttpSession>();
sc.setAttribute("sessions", list);
}
list.add(hs2);
}
//过期(30),s.invalidate();
public void sessionDestroyed(HttpSessionEvent se) {
System.err.println("有人退出了..."+se.getSession().getId());
ServletContext sc= se.getSession().getServletContext();
sc.setAttribute("online",online--);
}
}
java—实现一个监听器HttpServletRequest的创建销毁、在线人数 (56)的更多相关文章
- Effective java笔记(一),创建与销毁对象
1.考虑用静态工厂方法代替构造器 类的一个实例,通常使用类的公有的构造方法获取.也可以为类提供一个公有的静态工厂方法(不是设计模式中的工厂模式)来返回类的一个实例.例如: //将boolean类型转换 ...
- effective java读书小记(一)创建和销毁对象
序言 <effective java>可谓是java学习者心中的一本绝对不能不拜读的好书,她对于目标读者(有一点编程基础和开发经验)的人来说,由浅入深,言简意赅.每一章节都分为若干的条目, ...
- 《用Java写一个通用的服务器程序》02 监听器
在一个服务器程序中,监听器的作用类似于公司前台,起引导作用,因此监听器花在每个新连接上的时间应该尽可能短,这样才能保证最快响应. 回到编程本身来说: 1. 监听器最好由单独的线程运行 2. 监听器在接 ...
- java最简单的知识之创建一个简单的windows窗口,利用Frame类
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing 首先给大家看一下 ...
- java实现下载器(以及创建一个URL对象)
java实现下载器(以及创建一个URL对象) 1.思路讲解: (1)注意路径:是网络路径噢 (2)创建创建网路协议对象(远程对象):HttpURLConnection urlConnection (3 ...
- 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以“62”开头,如图所示。
查看本章节 查看作业目录 需求说明: 使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62"开头,如图所示. 实现思路: (1)创建 J ...
- java之Servlet监听器Listener
常用应用场景:单点登录.统计在线人数 一.简介 (一)概述 1.Listener 用于监听 java web程序中的事件,例如创建.修改.删除Session.request.context等,并触发响 ...
- 【Servlet】Java Serlvet Listener 监听器
Listener监听器 Servlet规范中定义的一种特殊的组件,用来监听Servlet容器产生的事件并进行相应的处理 容器产生的事件分类 - 生命周期相关的事件 - 设置和删除Attribute数据 ...
- Java三大器之监听器(Listener)的工作原理和代码演示
现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次, ...
随机推荐
- 跟我学算法- tensorflow 实现RNN操作
对一张图片实现rnn操作,主要是通过先得到一个整体,然后进行切分,得到的最后input结果输出*_w[‘out’] + _b['out'] = 最终输出结果 第一步: 数据载入 import ten ...
- 如何设置mysql允许外网访问
修改表,登录mysql数据库,切换到mysql数据库,使用sql语句查看"select host,user from user ;" console: >use mysql; ...
- MD5 几种方法的选择
转:http://zoroeye.iteye.com/blog/2026984?utm_source=tuicool&utm_medium=referral md5加密实现方法有很多种,也导致 ...
- springmvc 数据验证 hibernate-validator --->对象验证
数据验证步骤: 1.测试环境的搭建: 2.验证器的注册 在springmvc.xml配置文件中加以下代码: 3.验证注解添加到对应实体类上 4.修改处理器 5.将验证失败信息写入到表单 index.j ...
- 基于jquery-ui及bootstrap的可拖拽模态框
可直接使用代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ...
- Could not load TestContextBootstrapper [null]
在对SpringBoot进行单元测试时,报错“Could not load TestContextBootstrapper [null]” 错误原因: Maven的pom.xml中某些SpringBo ...
- oracle返回最大值一条记录
虽然网上例子很多,但是试过多种办法都无效,原代码出处: https://blog.csdn.net/qyshibb/article/details/73332075 这个例子简单有效 select p ...
- Linux运维实战之DNS(bind)服务器的安装与配置
转自http://sweetpotato.blog.51cto.com/533893/1598225 上次博文我们讨论了DNS的基础,本次博文我们重点来看看如何配置一台DNS服务器. [本次博文的主要 ...
- vbs执行系统命令
首先说明一下,我的所有代码都是vbscript,jscript我没有研究过,不过我想也差不多. 关于最基础的语法比如变量的申明,分支,循环,函数的调用,等等这些我就不讲了,不懂得自己看一下. 1.我们 ...
- PBYTE
typedef BYTE near *PBYTE;