本文共 3867 字,大约阅读时间需要 12 分钟。
javaEE包括13门规范 ,其中一个就是 servlet技术 ,同时 servlet规范包括三个技术点:servlet listener filter
监听器就是监听某个对象的的状态变化的组件
监听器的相关概念:
事件源: 被监听的对象 ----- 三个域对象 request session servletContext 监听器: 监听事件源对象 事件源对象的状态的变化都会触发监听器 注册监听器: 将监听器与事件源进行绑定 响应行为: 监听器监听到事件源的状态变化时 所涉及的功能代码 ---- 程序员编写代 码
监听器一共有6+2个,我们先了解前六个简单的。
第一维度:按照被监听的对象划分:ServletRequest域 HttpSession域 ServletContext域。 第二维度:监听的内容分:监听域对象的创建与销毁的 监听域对象的属性变 化的。、 | ServletContext域 | HttpSession域 | ServletReqest域 |
---|---|---|---|
域对象的创建与销毁 | ServletContextListener | HttpSessionListener | ServletReqestListener |
域对象内的属性的变化 | ServletContextAttributeListener | HttpSessionAttributeListener | ServletReqestAttributeListener |
何时创建:服务器启动创建
何时销毁:服务器关闭销毁a、编写一个监听器类去实现监听器接口
b、覆盖监听器的方法 c、需要在web.xml中进行配置—注册使用eclipse创建一个dynamic web project项目。
创建一个类:myServletcontextListenerpackage test;public class myServletcontextListener { }
a、编写一个监听器类去实现监听器接口
package test;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class myServletcontextListener implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent sce) { // TODO Auto-generated method stub } @Override public void contextInitialized(ServletContextEvent sce) { // TODO Auto-generated method stub }}
b、覆盖监听器的方法
package test;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class myServletcontextListener implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("监听到正在创建"); } @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("监听到正在销毁"); }}
c.配置文件:
Listener index.html index.htm index.jsp default.html default.htm default.jsp test.myServletcontextListener
运行结果:
此时,启动服务器,那么在console窗口就可以看到创建监听器的打印字符串。package test;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class myServletcontextListener implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("监听到正在创建"); //获取被监听的对象_servletcontext ServletContext servletcontext= sce.getServletContext(); //或者: Object source=sce.getSource();//这个获取的也是被监听的对象,但是是object类型,,是通用的方法。 } @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("监听到正在销毁"); }}
何时创建:第一次调用request.getSession时创建
何时销毁:服务器关闭销毁 session过期 手动销毁与监听ServletContext域的创建与销毁的监听器ServletContextListener相同。
创建:每一次请求都会创建request
销毁:请求结束与监听ServletContext域的创建与销毁的监听器ServletContextListener相同。
(1)域对象的通用的方法:
setAttribute(name,value) — 触发添加属性的监听器的方法 — 触发修改属性的监听器的方法 getAttribute(name) removeAttribute(name) — 触发删除属性的监听器的方法具体使用方法同监听ServletContext域的创建与销毁的监听器ServletContextListener相同。
上文中我们了解到,监听器一共有6+2个,接下来我们讲讲剩下的两个。
绑定状态:就一个对象被放到session域中
解绑状态:就是这个对象从session域中移除了 钝化状态:是将session内存中的对象持久化(序列化)到磁盘 活化状态:就是将磁盘上的对象再次恢复到session内存中具体使用方法同监听ServletContext域的创建与销毁的监听器ServletContextListener相同。
具体使用方法同监听ServletContext域的创建与销毁的监听器ServletContextListener相同。
转载地址:http://lxhbb.baihongyu.com/