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事件----這就是我們使用的“註銷”

監聽器的使用案例:
    統計當前在線人員




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章