java web listener 监听器

监听器:
    正对WEB环境的监听
    主要有三类:
        1.ServletContext:对servlet上下文(application对象)进行监听
        2.Session:对session监听
        3.Request:对request的监听
主要是:ServeltContext.Session的监听
在WEB端实现监听实质:

实现一系列的监听接口(实现相应的接口,覆写各接口中相应的方法,在相应的事件触发的时候会执行自己的监听器中的覆写的方法,在各个方法中完成自己想要的操作,从而实现了监听)

监听--就是在进行某种各个范围(application,session,request)中有相关值的设置、修改、替换的时候,这些操作都会触发事件,而java中事件的代理机制,事件处理是利用listener机制,所以为了在事件触发的时候能够使自己能够采取相应的措施,就需要---->继承这样的listener,在listener中覆写相应的方法,覆写相应的事件处理方法,在对应的方法中处理对应的事件,也就是进行了监听

对ServletContext的监听
        ServletContext---javax.servlet.ServletContext
    1.ServletContextListener---对整个Servlet上下文进行监听(启动、销毁)
        public void contextInitialized(ServletConfigEvent sce)---上下文初始化
        public    void    contextDestroyed(ServletConfigEvent  sce)--上下文的销毁

    ServletConfigEvent
        public ServletContext getServletContext()--就是取得application对象

    2.ServletContextAttributeListener---对Servlet上下文的属性的监听
        public void attributeAdded(ServletContextAttributeEvent scab):增加属性
        public void attributeRemoved(ServletContextAttributeEvent scab) :移除属性
        public void attributeReplaced(ServletContextAttributeEvent scab) :替换属性(第二次设置统一属性的值)
        
        ServletContextAttributeEvent
            public java.lang.String getName()---得到属性的名称
            public java.lang.Object getValue()--得到属性的值
            与setAttribute(String name,Object value)是对应的

web.xml中的配置 ---跟过滤器一样是组件式的工作方式
<listener>
    <listener-class>****</listener-class>
</listener>


上下文监听(ServletContext监听)主要是针对容器的初始化、容器销毁、属性操作
session监听是对session的创建、销毁和属性操作

    session是HTTP写一下的类容,所以是javax.servlet.http包中
    
    javax.servlet.http  Interface HttpSessionListener
        public void sessionCreated(HttpSessionEvent se)---session创建
        public void sessionDestroyed(HttpSessionEvent se)---session销毁
        
        HttpSessionEvent
            public HttpSessionEvent(HttpSession source)--取得当前的session
    javax.servlet.http Interface HttpSessionAttributeListener
        --public void attributeAdded(HttpSessionBindingEvent se)
        --public void attributeRemoved(HttpSessionBindingEvent se)
        --public void attributeReplaced(HttpSessionBindingEvent se)
        javax.servlet.http Class HttpSessionBindingEvent
            --public HttpSession getSession()
            --public java.lang.String getName()
            --public java.lang.Object getValue()
页面中:session.setAttribute()触发了两个事件----session创建和属性增加

session销毁有两种方式:
1.session超时(web.xml)
    ·<session-config>
        <time-out>时间</time-out>  #单位为分钟,在达到这个时间之后session失效,并触发sessionDestroyed事件
    </session-config>
2.手动使session失效
    invalidate()---session.invalidate()手动调用invalidate方法使session失效
二者都会使session失效,并触发sessionDestroyed事件----这就是我们使用的“注销”

监听器的使用案例:
    统计当前在线人员




  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值