Servlet 监听器的分类
按监听的对象划分
1.用于监听应用程序环境对象(ServletContext)的事件监听器
2.用于监听用户会话对象(HttpSession )的事件监听器
3.用于监听请求消息对象(ServletRequest)的事件监听器
1.用于监听应用程序环境对象(ServletContext)的事件监听器
l
2.用于监听用户会话对象(HttpSession )的事件监听器
3.用于监听请求消息对象(ServletRequest)的事件监听器
l
按监听的事件类项划分
1. 用于监听域对象自身的创建和销毁的事件监听器()
1. 用于监听域对象自身的创建和销毁的事件监听器()
2.
用于监听域对象中的属性的增加和删除的事件监听器()
域对象创建和销毁的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象的创建和销毁事件的监听器。
l
域对象的创建和销毁时机:
1 、ServletContext (ServletContextListenner 接口)
1 、ServletContext (ServletContextListenner 接口)
* 创建:是在 Web 服务器启动并加载某个 Web 应用程序时创建相应的 对象,
public void contextInitialized(ServletContextEvent sce)
* 销毁:是在 Web 服务器关闭或卸载时为每个 Web 应用程序销毁相应的
ServletContext 对象。
public void contextDestoyed(ServletContextEvent sce)
2 、HttpSession HttpSessionListenner 接口)
2 、HttpSession HttpSessionListenner 接口)
创建:是在浏览器开始与服务器会话时创建,
pulic void sessionCreated(HttpSessionEvent se)
销毁:是在调用HttpSession.invalidate();超过了Sessiond的最大有效时
间间隔,服务器进程被停止的时候。
pulic void sessionDestoryed(HttpSessionEvent se)
3 、ServletRequest ServletRequestListenner 接口)
3 、ServletRequest ServletRequestListenner 接口)
*创建:每次请求开始时创建,
public void requestInitialized(ServletContextEvent sce)
*销毁: 每次访问结束后销毁
public void requestDestoyed(ServletContextEvent sce)
3.用于监听绑定到HttpSession域中的某个对象的状态的事件监听器()
HttpSessionBindingListenner接口
它定义了JavaBean对象被绑定到HttpSession对象中和从HttpSession中取出时候调用的方法:
valueBound方法: valueUnbound方法
案例统计在线人数和注册人数
![](http://hi.csdn.net/attachment/201006/7/0_1275924837kjvJ.gif)
开发步骤:
第一步:
* 前台 所有用户不登陆(游客) login.jsp
* 后台 显示游客的信息 onlinenum.jsp
执行:
* 定义SessionUser extends User implements HttpSessionBindingListener
* 定义ServletContextList的实现类,初始化map集合
Map<String,SeesionUser> map=new HashMap<String,SessionUser>()
放置到ServletContext作用域中
* 定义login.jsp页面
* 获取ip
* 实例化SessionUser
* 放置sessionUser到作用域中
* 在HttpSessionBindingListener 接口中的valueBound方法中增加
* 把sessionUser放置到Map集合中
第二歩:
* 前台 用户登陆 loginServlet title.jsp
和 chatper.jsp
* 后台 显示游客的信息和登录用户的信息 onlinenum.jsp
第三步:
* 将登录用户转为游客
第四步:
* 清除长时间不予系统交互的用户(游客)
第一步:
* 前台 所有用户不登陆(游客) login.jsp
* 后台 显示游客的信息 onlinenum.jsp
执行:
* 定义SessionUser extends User implements HttpSessionBindingListener
* 定义ServletContextList的实现类,初始化map集合
Map<String,SeesionUser> map=new HashMap<String,SessionUser>()
放置到ServletContext作用域中
* 定义login.jsp页面
* 获取ip
* 实例化SessionUser
* 放置sessionUser到作用域中
* 在HttpSessionBindingListener 接口中的valueBound方法中增加
* 把sessionUser放置到Map集合中
第二歩:
* 前台 用户登陆 loginServlet title.jsp
和 chatper.jsp
* 后台 显示游客的信息和登录用户的信息 onlinenum.jsp
第三步:
* 将登录用户转为游客
第四步:
* 清除长时间不予系统交互的用户(游客)
onlinenum.jsp 后台显示信息,
login:登陆页面
chatper.jsp 只有登录用户才能访问该页面
Servlet监听器 初始化一些变量
session监听器:当session过期或者消亡时候从集合中移除
Loginservlet:
removeSerlvet:
javabean: