一、 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 的属性状态