一、Servlet中对象作用域
1、 ServletContext 上下文
应用服务器一启动就产生该对象,服务器关闭即销毁
作用于全局,所有Servlet ,相当于静态变量
2、 HttpSession 会话
客户端第一次请求产生,session过期销毁
作用于同一个客户端,相当于成员变量
3、 ServletRequest请求
一次请求产生一个对象,请求结束即销毁
作用于同一次请求,相当于局部变量
二、Servlet监听器
工作流程:
(1)确定事件源
(2)写一个类,实现Servlet监听器接口,并从写接口里面的方法
(3)在web.xml里注册建立联系,
<listener>
<listener-class>Servlet类事件源全路径</listener-class>
</listener>
(4)事件源触发事件,监听器调用相应方法
1、ServletContext事件
(1)ServletContextListener接口,用于监听ServletContext的创建与销毁
相应方法:
void contextInitialized(ServletContextEvent e); ServletContext创建触发
void contextDestroyed(ServletContextEvent e); ServletContext销毁触发
(2)ServletContextAttribyteListener接口,用于监听ServletContext属性状态
相应方法:
void attributeAdded(ServletContextEvent e); ServletContext属性加入触发
context.setAttribute(“a”,”b”);
void attributeRemovd(ServletContextEvent e); ServletContext属性删除触发
context.removeAttribute(“a”,);
void attributeReplaced(ServletContextEvent e); ServletContext属性修改触发
context.setAttribute(“a”,”c”);
2、HttpSession事件
(1)HttpSessionListener接口,用于监听session的创建与销毁
相应方法:
void sessionCreated(HttpsessionEvent e) session 创建触发
void sessionDestroyed (HttpsessionEvent e) session 销毁触发
(2)HttpSession AttributeListener接口,用于监听session属性状态
相应方法:同ServletContextAttribyteListener
(3)HttpSessionBindingListener接口,用于监听绑定对象到Session属性监听
唯一一个不用在web.xml里注册的监听接口
绑定
Ression.setAttribute(“a”, 实现该接口的对象),
触发void valueBound(HttpSessionBindingEvent e);方法
移除:
Ression.removeAttribute(“a”),
触发void valueUnbound(HttpSessionBindingEvent e);方法
3、 SercletRequest事件
(1)ServletRequestListener接口 用于监听request的销毁与创建
(2)ServletRequesAttributetListener接口 用于监听request的属性状态