栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【JavaWeb】Listener监听

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【JavaWeb】Listener监听

Listener

Listener是监听器,监听Servlet某一个事件的发生或者状态的改变,它的内部其实就是接口回调

ServletContextListener

监听对象:
ServletContextListener用于监听ServletContext对象作用域创建和销毁,利用它可以完成自己想要的初始化工作。

生命周期
  • servletcontext创建contextInitialized:
    1、启动服务器的时候

  • servletContext销毁contextDestroyed:
    1、关闭服务器
    2、从服务器移除项目

创建:

public class MyContextListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("contextInitialized ...");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("contextDestroyed ...");
    }
}

配置:

    
        com.xxx(包名).MyContextListener
    
ServletRequestListener

监听对象:
ServletRequestListener用于监听ServletRequest对象作用域创建和销毁,利用它可以判断当前是否存在请求。

生命周期
  • request创建requestInitialized:
    访问服务器上的任意资源都会有请求出现。
    访问 html :会
    访问 jsp :会
    访问 servlet :会

  • request销毁requestDestroyed:
    服务器已经对这次请求作出了响应。

创建:

public class MyRequestListener implements ServletRequestListener {
    @Override
    public void requestInitialized(ServletRequestEvent servletRequestEvent) {
        System.out.println("requestInitialized ...");
    }

    @Override
    public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
        System.out.println("requestDestroyed ...");
    }
}

配置:

    
        com.xxx(包名).MyRequestListener
    
HttpSessionListener

监听对象:
HttpSessionListener用于监听HttpSession对象作用域创建和销毁,利用它可以统计在线人数。

生命周期
  • session的创建sessionCreated:
    只要调用getSession()方法。
    html :不会
    jsp :会
    servlet :会

  • session的销毁sessionDestroyed:
    1、会话超时30分钟。
    2、非正常关闭服务器。
    3、正常关闭服务器(序列化)

创建:

public class MySessionListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        System.out.println("sessionCreated ...");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        System.out.println("sessionDestroyed ...");
    }
}

配置:

    
        com.xxx(包名).MySessionListener 
    
监听三个作用域属性状态变更

ServletContextAttributeListener 监听ServletContext存值状态变更。
ServletRequestAttributeListener 监听ServletRequest存值状态变更。
HttpSessionAttributeListener 监听HttpSession存值状态变更。

主要方法:
attributeAdded()
attributeRemoved()
attributeReplaced()

监听HttpSession存值状态变更

HttpSessionBindingListener :监听对象与session绑定和解除绑定的动作。(这一类监听器不用注册。)

valueBound(HttpSessionBindingEvent httpSessionBindingEvent){
}
valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent){
}

HttpSessionActivationListener:用于监听现在session的值是钝化(序列化)还是活化(反序列化)的动作

  • 钝化(序列化) :把内存中的数据存储到硬盘上。
  • 活化(反序列化):把硬盘中的数据读取到内存中。

如何钝化:

  1. 在tomcat的 conf/context.xml 里面配置
    对所有的运行在这个服务器的项目生效。

  2. 在tomcat的 conf/Catalina/localhost/context.xml 里面配置
    对localhost生效。

  3. 在自己的web工程项目中的 meta-INF/context.xml 里面配置
    只对当前的工程生效。

具体配置信息如下:
maxIdleSwap : 1分钟不用就钝化。
directory : 钝化后的那个文件存放的目录位置。


	
		
	

创建:

public class MySessionActivationListener implements HttpSessionActivationListener {
    @Override
    public void sessionWillPassivate(HttpSessionEvent httpSessionEvent) {
        System.out.println("sessionWillPassivate ...");
    }

    @Override
    public void sessionDidActivate(HttpSessionEvent httpSessionEvent) {
        System.out.println("sessionDidActivate ...");
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/308132.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号