对象作用域与servlet事件监听器

来源:互联网 发布:windows ad管理 文件夾 编辑:程序博客网 时间:2024/05/29 03:24
(一)、对象作用域

Session:会话作用域:session针对所有的Servlet,但是不针对多个用户;
处理线程安全性:尽量避免在servlet中使用全局变量、使用的时候要使用同步;
Request:一次请求过程;存储事件比上下文作用域和会话作用短,请求结束后,对象就会被垃圾回收;
ServletContext(上下文):整个web应用程序

主要属性操作方法:
void setAttribute(String,Object);
Object getAttribute(String);
void removeAttribute(String);
Enumeration : 枚举
getAttributeNames()

(二)servlet事件监听器

监听器概述:session、request、application单个对象存储数据变化;
①监听器在事情发生前、发生后做一些必要的处理;
②servlet主要目的是给WEB应用增加事件处理机制,以便更好地监视和控制web应用的状态变化;
③实现了特定接口的普通程序,这个程序用于监控其他java对象的方法修改和状态的改变,一旦改变就发生某个行为;因此,他是专门用于监听的对象(监听其他对象身上状态的改变);
监听器构成
事件源(被监控的对象):
function(){}(执行行为):
event对象:(监听器对象):保存当前操作的一些行为;根据event可以得到事件源;
监听器分类
ServletContext事件:上下文事件监听
ServletContextListener:
ServletContextAttributeListener
HttpSession事件: 会话监听
HttpSessionListener:(创建方法、销毁方法):

ServletRequest事件: 请求监听
ServletRequestListener:(请求销毁,请求创建)
2、ServletContext事件:一旦用户创建servlet(web容器),就被创建;
1、实现接口:
2、实现注册:实现注册,以绑定事件源;

主要作用:实现监控系统信息,记录一些日志;

ServletContextAttributeListener 事件:(获取上下文属性增加,删除,替换属性的值
作用:记录下所有的属性操作的日志; event.getName() event.getValue()
3、HttpSessionListener:(创建方法、销毁方法);
1、实现接口
2、实现注册(无需映射):
<listener>
<description>servletContextListener<description>
<listener-class>com.lovo.listener.servletContextListener</listener-class>
</listener>
//在注册处进行销毁session,一分钟内销毁session
<session-config>
<session-timeout>1</session-timeout>
</session-config>
主要作用:统计在线人数(创建保存到数据库,销毁在数据库删除);用户一旦登录肯定会创建一个session。将数据保存在数据库;session一旦销毁取出数据减去人数;

HttpSessionAttributeListener:(增加属性、删除,替换属性
event.getName() event.getValue()

HttpSessionBindingListener:给session绑定对象或者移除的时候发生;
是对象主动发生不需要去注册【session.setAttribute("bean",bean)】
bean是一个对象;写在对象bean身上,实现该接口,被绑定和未绑定时执行相关动作;
bean上实现HttpSessionBindingListener;
再实现方法 valueBound绑定, valueUnbound解除绑定;
为何无需注册? 当newbean的时候已经产生了实例,注册主要是进行实例化;已经实例化,因此不用再实例化;
为何接口实现在bean对象身上? 因为对bean是否被绑定要bean来做决定,他愿意绑定才实现;

4、ServletRequestListener:(创建状态、销毁状态)
1、实现接口
2、实现注册
3、进入一个页面两个都要监听启动
对内部派发无效;
4、当在这个页面进行了一次内部派发,则只实现一次创建状态和一次销毁状态;
5、当页面进行重定向操作的时候,实现了两次创建状态和销毁状态;
主要作用:记录网站访问量、流量;
ServletRequestAttributeListener:增加属性、删除,替换属性

0 0