Listener 监听器

来源:互联网 发布:关于网络组建的论文 编辑:程序博客网 时间:2024/05/20 10:55

listener:监听器

作用:监听web中的三个域对象 :ServletContext  ServletRequest  HttpSession
监听内容:
监听三个对象的创建和销毁
监听三个对象属性的变化
监听session中的javabean的状态
注意:listener全部是接口
监听三个对象的创建和销毁
ServletContextListener
ServletRequestListener
HttpSessionListener
监听三个对象属性的变化
ServletContextAttributeListeren
ServletRequestAttributeListeren
HttpSessiontAttributeListeren
监听session中的javabean的状态
HttpSessionActiveationListener(钝化和活化)
HttpSessionBindingListener(绑定和解绑)
使用步骤:
1,编写一个类 实现接口
2, 重写方法
3,编写配置文件(大部分都需要)
监听三个对象的创建和销毁
ServletContextListener
创建;服务器启动的时候会为每一个项目都创建一个ServletContextListener
销毁:服务器关闭的时候,或者项目被移除的时候
加载配置文件

ServletRequestListener
创建:请求来的时候被创建
销毁:响应生成的时候

HttpSessionListener
一个浏览器对应一个session
创建:request.getSession();
jsp中有内置对象session
jsp访问的时候session就创建了
销毁:三种情况:
session超时:默认30分钟
手动销毁session invalidate
服务器非正常关闭
HttpSessionBindingListener(绑定和解绑)(不需要配置):
检测javabean是否添加到session或从session中移除
HttpSessionActiveationListener(钝化和活化)
钝化:javabean从session中序列化到磁盘上,从内存到硬盘
活化:javabean从磁盘上序列化到session中,从硬盘到内存
可以通过配置文件修改javabean什么时候钝化


监听三个对象属性的变化
public class MyContextAttriLis implements ServletContextAttributeListener {@Overridepublic void attributeAdded(ServletContextAttributeEvent arg0) {// System.out.println("在servletcontext中添加一个属性"+arg0.getName());}@Overridepublic void attributeRemoved(ServletContextAttributeEvent arg0) {// System.out.println("在servletcontext中移除一个属性"+arg0.getName());}@Overridepublic void attributeReplaced(ServletContextAttributeEvent arg0) {// System.out.println("在servletcontext中替换一个属性"+arg0.getName());}
public class MyRequestListener implements ServletRequestListener {@Overridepublic void requestDestroyed(ServletRequestEvent arg0) {// System.out.println("请求销毁了");}@Overridepublic void requestInitialized(ServletRequestEvent arg0) {// System.out.println("请求创建了");}
public class MyServletContextLis implements ServletContextListener{@Overridepublic void contextDestroyed(ServletContextEvent arg0) {// 销毁操作System.out.println("ServletContext销毁了");}@Overridepublic void contextInitialized(ServletContextEvent arg0) {// 创建操作System.out.println("ServletContext创建了");}
监听创建、销毁以及属性变化时需要在web中编写配置文件
filter>    <filter-name>HelloFilter</filter-name>    <filter-class>com.xxx.filter.HelloFilter</filter-class>  </filter>  <filter-mapping>    <filter-name>HelloFilter</filter-name>    <url-pattern>/demo1</url-pattern>  </filter-mapping>
filter-mapping的子标签
filter-name:匹配那个filter对象
url-pattern:匹配过滤的路径
监听session中的javabean的状态
public class Person implements HttpSessionBindingListener{private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic void valueBound(HttpSessionBindingEvent arg0) {// TODO Auto-generated method stubSystem.out.println("person对象绑定到session中");}@Overridepublic void valueUnbound(HttpSessionBindingEvent arg0) {// TODO Auto-generated method stubSystem.out.println("person对象从session中解绑");}
public class Person2 implements HttpSessionActivationListener{private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic void sessionDidActivate(HttpSessionEvent arg0) {//活化System.out.println("对象序列化到内存上  活化");}@Overridepublic void sessionWillPassivate(HttpSessionEvent arg0) {// 钝化System.out.println("对象序列化到磁盘上  钝化");}