监听器

监听器_第1张图片
 
八种web监听器详解
  a)Web中有三个事件源,分别是ServletContext->HttpSession->ServletRequest
    要在web.xml中进行事件源注册事件监听器
  b)ServletContext对象        Context对象    实现的接口是没有适配器的     在初始化工作中使用的非常多
        >>创建和销毁:ServletContextListener,Web容器部署时产生,Web容器重新部署时销毁原ServletContext对象
                >>属性变化:ServletContextAttributeListner
            application.setAttirbute("name","jack")
            setAttribute("name","杰克")
            removeAttribute("name")
 
  c)ServletRequest对象        请求对象    
        >>创建和销毁:ServletRequestListener,     每次请求产生,响应完毕后销毁,产生和消亡的频率非常快
                >>属性变化:ServletRequestAttributeListner
            request.setAttirbute("name","jack")
            setAttribute("name","杰克")
            removeAttribute("name")            
 
 
  d)HttpSession对象        会话对象
        >>创建和销毁:HttpSessionListener,当Web容器创建HttpSession对象中产生,当Web容器销毁HttpSession对象执行对应的销毁方法
                也就是说访问页面的时候就创建,默认30分钟后就消亡
                >>属性变化:HttpSessionAttributeListner
            session.setAttirbute("name","jack")
            setAttribute("name","杰克")
            removeAttribute("name")            

    对属性的监听   


  e)HttpSessionBindListener监听器,专用于监听JavaBean对象在HttpSession中的状态情况
            但凡是监听三个域对象,就需要在web.xml文件中配置,除外,无需要web.xml文件配置

 
   
  当HttpSession不用时,但用在HttpSession的有效期中,这时将内存中的HttpSessio移到外存,叫钝化。  
  反之,将HttpSession由外存移到内存,叫激活。


  f)HttpSessionActivationListener监听器,专用于监听JavaBean对象的钝化与激活
   
 监听器的工作过程和生命周期
  开发过程:
  a)写一个普通类实现对应的接口,即事件监听器
  b)在web.xml文件中注册事件监听器
    <!-- 事件源注册事件监听器,由容器完成 -->
    <listener>
        <listener-class>cn.itcast.web.listener.MyServletContextListener</listener-class>        
      </listener>

   生命周期:
    第一次  空参构造(1次)->初始化(1次)     第二次   销毁化(1次)->空参构造(1次)->初始化(1次)       是一个单例的模式
     

   在部署web应用是产生,即用户第一次访问之前已经产生,在重新部署web应用时,后销毁原监听器,再产生新的监听器

package cn.itcast.web.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

//事件监听器[用于监听ServletContext对象产生和销毁]
public class MyServletContextListener implements ServletContextListener{
	public MyServletContextListener(){
		System.out.println("空参构造");
		System.out.println(this.hashCode());
	}
	//产生
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("ServletContext产生");
		System.out.println(this.hashCode());
	}
	//销毁
	public void contextDestroyed(ServletContextEvent sce) {
		System.out.println("ServletContext销毁");
		System.out.println(this.hashCode());
	}
}



package cn.itcast.web.listener;

import java.util.Date;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

//监听器[用于监听HttpSesison产生和销毁]
public class MyHttpSessionListener implements HttpSessionListener {
	//产生
	public void sessionCreated(HttpSessionEvent se) {
		HttpSession session = se.getSession();
		System.out.println(session.getId());
		System.out.println("sessionCreated()" + new Date().toLocaleString());
	}
	//销毁
	public void sessionDestroyed(HttpSessionEvent se) {
		HttpSession session = se.getSession();
		System.out.println(session.getId());
		System.out.println("sessionDestroyed()");
		System.out.println("sessionCreated()" + new Date().toLocaleString());
	}
}



package cn.itcast.web.listener;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;

//监听器[用于监听ServletRequest对象的产生和销毁]
public class MyServletRequestListener implements ServletRequestListener {
	//产生
	public void requestInitialized(ServletRequestEvent sre) {
		System.out.println("requestInitialized()");
	}
	//销毁
	public void requestDestroyed(ServletRequestEvent sre) {
		System.out.println("requestDestroyed()");
	}
}



你可能感兴趣的:(监听器)