一笑奈何

对一个男人来说,最无能为力的事儿就是“在最没有能力的年纪,碰见了,最想照顾一生的姑娘。...

Listener监听器

1,什么是监听器

监听器用于监听web应用中某些对象(application,session,request)、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。

2,监听器的用途

  • 1、统计在线人数和在线用户
  • 2、系统加载时进行信息的初始化工作
  • 3、统计网站的访问量
  • 4、跟Spring结合
3,监听器的分类

第一维度:按照被监听的对象划分:ServletRequest域,HttpSession域,ServletContext域

第二维度:监听的内容分:监听域对象的创建与销毁的监听域对象的属性变化的


4,监听器的编写步骤(重点)

    a、编写一个监听器类去实现监听器接口

    b、覆盖监听器的方法

    c、 需要在web.xml中进行配置---注册

5,监听三大域对象的创建与销毁的监听器

(1)监听ServletContext域的创建与销毁的监听器ServletContextListener(重点)

   1)Servlet域的生命周期

        何时创建:服务器启动创建

        何时销毁:服务器关闭销毁

   2)ServletContextListener监听器的主要作用

      a、初始化的工作:初始化对象 初始化数据 ---- 加载数据库驱动  连接池的初始 化

      b、加载一些初始化的配置文件 --- spring的配置文件

      c、任务调度----定时器----Timer/TimerTask

   3)重写的方法

     public void contextInitialized(ServletContextEvent sce);//上下文初始化
     public void contextDestroyed(ServletContextEvent sce);//上下文销毁

     //ServletContextEvent事件:取得一个ServletContext(application)对象
c案例
@Override
	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("创建");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		Date parse = null;
		try {
			parse = sdf.parse("2018-04-16 00:00:00");
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			@Override
			public void run() {
				System.out.println("银行开始计息了。。。");
			}
		}, parse, 24*60*60*1000);

	}

(2)监听Httpsession域的创建于销毁的监听器HttpSessionListener

1)HttpSession对象的生命周期

      何时创建:第一次调用request.getSession时创建

      何时销毁:服务器关闭销毁  session过期(web.xml)  手动销毁(session.invalidate();

2)里面重写的方法

@Override
	public void sessionCreated(HttpSessionEvent arg0) {
		
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent arg0) {
		
	}

2)利用HttpSessionListener统计最多在线用户人数

	private int counts = 0;// 用于统计在线人数

	@Override
	public void sessionCreated(HttpSessionEvent arg0) {
		counts++;
		arg0.getSession().getServletContext().setAttribute("name", counts); // 用户人数+1
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent arg0) {
		counts--;
		arg0.getSession().getServletContext().setAttribute("Count", counts);
	}

(3)监听ServletRequest域创建与销毁的监听器ServletRequestListener

1)ServletRequest的生命周期

    创建:每一次请求都会创建request

    销毁:请求结束

2)ServletRequestListener的方法

@Override
	public void requestDestroyed(ServletRequestEvent arg0) {
		
	}

	@Override
	public void requestInitialized(ServletRequestEvent arg0) {
		
	}
6,监听三大域对象的属性变化的

(1)域对象的通用的方法:

 setAttribute(name,value)

        --- 触发添加属性的监听器的方法   

        --- 触发修改属性的监听器的方法

getAttribute(name)

removeAttribute(name)  --- 触发删除属性的监听器的方法 

(2)ServletContextAttibuteListener监听器

@Override
	public void attributeAdded(ServletContextAttributeEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void attributeRemoved(ServletContextAttributeEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void attributeReplaced(ServletContextAttributeEvent arg0) {
		// TODO Auto-generated method stub
		
	}
其他的域对象属性类似

参考文章  http://www.cnblogs.com/coderland/p/5902874.html









   







阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZJ_2420441444/article/details/79967799
个人分类: java
想对作者说点什么? 我来说一句

STRUTS:listener监听器

2012年01月29日 57KB 下载

listener监听器demo

2017年02月22日 16KB 下载

定时器例子

2011年12月24日 2KB 下载

没有更多推荐了,返回首页

不良信息举报

Listener监听器

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭