在JavaWeb中的监听器分类

在Javaweb中存在三个被监听对象:

HttpServletRequest

HttpSessoin

ServletContext

监听者

被监听者

监听到事件对象

HttpSessionActivationListener

HttpSession – 监听HttpSession活化和顿化。

HttpSessionEvent 

HttpSessionAttributeListener[W1]

HttpSession – 监听session的属性变化的。S.setAttributee();

HttpSessionBindingEvent 

HttpSessionBindingListener

HttpSession - 监听哪一个对象,绑定到了session上。S.setAtrri(name,User);

HttpSessionListener[W2]

HttpSesion – 监听sessioin创建销毁

HttpSessionEvent

ServletContextAttributeListener

ServletContext – 属性变化的

ServletContextListener

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)的更多相关文章

  1. Effective java笔记(一),创建与销毁对象

    1.考虑用静态工厂方法代替构造器 类的一个实例,通常使用类的公有的构造方法获取.也可以为类提供一个公有的静态工厂方法(不是设计模式中的工厂模式)来返回类的一个实例.例如: //将boolean类型转换 ...

  2. effective java读书小记(一)创建和销毁对象

    序言 <effective java>可谓是java学习者心中的一本绝对不能不拜读的好书,她对于目标读者(有一点编程基础和开发经验)的人来说,由浅入深,言简意赅.每一章节都分为若干的条目, ...

  3. 《用Java写一个通用的服务器程序》02 监听器

    在一个服务器程序中,监听器的作用类似于公司前台,起引导作用,因此监听器花在每个新连接上的时间应该尽可能短,这样才能保证最快响应. 回到编程本身来说: 1. 监听器最好由单独的线程运行 2. 监听器在接 ...

  4. java最简单的知识之创建一个简单的windows窗口,利用Frame类

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing 首先给大家看一下 ...

  5. java实现下载器(以及创建一个URL对象)

    java实现下载器(以及创建一个URL对象) 1.思路讲解: (1)注意路径:是网络路径噢 (2)创建创建网路协议对象(远程对象):HttpURLConnection urlConnection (3 ...

  6. 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以“62”开头,如图所示。

    查看本章节 查看作业目录 需求说明: 使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62"开头,如图所示. 实现思路: (1)创建 J ...

  7. java之Servlet监听器Listener

    常用应用场景:单点登录.统计在线人数 一.简介 (一)概述 1.Listener 用于监听 java web程序中的事件,例如创建.修改.删除Session.request.context等,并触发响 ...

  8. 【Servlet】Java Serlvet Listener 监听器

    Listener监听器 Servlet规范中定义的一种特殊的组件,用来监听Servlet容器产生的事件并进行相应的处理 容器产生的事件分类 - 生命周期相关的事件 - 设置和删除Attribute数据 ...

  9. Java三大器之监听器(Listener)的工作原理和代码演示

    现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次, ...

随机推荐

  1. VB.Net条形码编程的方法

    一.条形码的读取用过键盘口式的扫条码工具的朋友就知道,它就如同在鍵盘上按下数字鍵一样,基本不需任何编程和处理.但如果你使用的是其它接口的话,可能你就要为该设备编写通讯代码了.以下有一段简单的25针串口 ...

  2. JVM 调优参数设置

    先看Linux内存大小(假设为2G) cat /proc/meminfo |grep MemTotal 查看java初始配置 java -XX:+PrintFlagsInitial Tomcat配置 ...

  3. Linux学习---新建文件,查看文件,修改权限,删除

    过程:在一个文件夹下面新建一个文件,然后查看文件,再修改权限,运行,最后删除 1.新建文件: touch  Test.sh 补充:新建文件有好多种方式,一般用mkdir(创建目录,即文件夹).touc ...

  4. testng的xml文件说明(TestNG DTD)

    testNG启发自JUnit和NUnit的一种测试框架,通过使用testNG使的测试更简单.,比如如下的一些特点: 1.通过注释来管理测试 2.多线程并发执行测试,且是安全的 3.支持数据驱动测试 4 ...

  5. CHEMISTS DISCOVER A SAFE, GREEN METHOD TO PROCESS RED PHOSPHORUS

                   When it comes to making phosphorus compounds, chemists have traditionally relied on w ...

  6. 搭建简单的Spring框架

    1.Spring框架相关jar包下载地址http://repo.springsource.org/libs-release-local/org/springframework/spring,复制,进入 ...

  7. WebService之SOAP

    SOAP(Simple Object Access Protocol),它是一种标准消息传递协议,通常是Web Service的事实标准.SOAP是以XML为基础,SOAP消息格式是由XML Sche ...

  8. jquery获得/修改html标签

    1.添加 meta$("head").append('<meta http-equiv="content-type" content="text ...

  9. c语言技术课第一次作业

    读邹欣老师博客关于师生关系有感 1)大学和高中最大的不同是没有人天天看着你,请看大学理想的师生关系是?有何感想? 答:    在邹欣老师博客中我看到邹欣老师列举了很多师生关系的类型,把这种关系比喻成很 ...

  10. 关于jFinal开发中遇到的中文乱码问题解决办法

    关于jFinal开发中遇到的中文乱码问题解决办法 设置tomcat的编码,修改 <Connector port="8080" protocol="HTTP/1.1& ...