監(jiān)聽器

監(jiān)聽器

概述
API
    ServletContextListener  
        在Servlet上下文對象初始化或者銷毀時得到通知,位于javax.servlet包下
        常用方法:
            contextInitialized(ServletContextEvent  arg)    
                在Web應用程序初始化開始時由Web容器調(diào)用,該方法無返回值
            contextDestory(ServletContextEvent  arg)    
                當Servlet上下文將要關閉時由Web容器調(diào)用,該方法無返回值
    ServletContextAttributeListener 
        在Servlet上下文中的屬性列表發(fā)生變化時得到通知,位于javax.servlet包下
    HttpSessionListener 
        在Session創(chuàng)建后或者失效前得到通知,位于javax.servlet.http包下
    HttpSessionActivationListener   
        實現(xiàn)該接口的對象,如果綁定到Session中,當Session被鈍化或者激活時,Servlet容器將通知該對象,位于javax.servlet.http包下
    HttpSessionBindingListener接口
        常用方法:
            valueBound(HttpSessionBindingEvent event)   
                當對象被添加到Session時,由容器調(diào)用該方法來通知對象,該方法無返回值
            valueUnbound(HttpSessionBindingEvent event) 
                當對象從Session中清除時,由容器調(diào)用該方法來通知對象,該方法無返回值
ServletContext監(jiān)聽
    public class MyContextListener implements ServletContextListener, ServletContextAttributeListener {
        @Override
        public void attributeAdded(ServletContextAttributeEvent arg0) {
            System.out.println("屬性添加");
        }
        @Override
        public void attributeRemoved(ServletContextAttributeEvent arg0) {
            System.out.println("屬性修改");
        }
        @Override
        public void attributeReplaced(ServletContextAttributeEvent arg0) {
            System.out.println("屬性刪除");
        }
        @Override
        public void contextDestroyed(ServletContextEvent arg0) {
            System.out.println("ServletContext對象銷毀時調(diào)用");
        }
        @Override
        public void contextInitialized(ServletContextEvent arg0) {
            System.out.println("ServletContext對象創(chuàng)建時調(diào)用");
        }
    }
    <listener>
        <listener-class>com.shuai.listeners.MyContextListener</listener-class>
    </listener>
HttpServletRequest監(jiān)聽
    public class MyRequestListener implements ServletRequestListener, ServletRequestAttributeListener {
        @Override
        public void attributeAdded(ServletRequestAttributeEvent arg0) {
            System.out.println("增加屬性");
        }
        @Override
        public void attributeRemoved(ServletRequestAttributeEvent arg0) {
            System.out.println("刪除屬性");
        }
        @Override
        public void attributeReplaced(ServletRequestAttributeEvent arg0) {
            System.out.println("替換屬性的值");
        }
        @Override
        public void requestDestroyed(ServletRequestEvent arg0) {
            System.out.println("request銷毀");
        }
        @Override
        public void requestInitialized(ServletRequestEvent arg0) {
            System.out.println("request創(chuàng)建");
        }
    }
    <listener>
        <listener-class>com.shuai.listeners.MyRequestListener</listener-class>
    </listener>
HttpSession監(jiān)聽
    public class MySessionListener implements HttpSessionListener, HttpSessionAttributeListener {
        @Override
        public void attributeAdded(HttpSessionBindingEvent arg0) {
            System.out.println("新增屬性");
        }
        @Override
        public void attributeRemoved(HttpSessionBindingEvent arg0) {
            System.out.println("屬性移除");
        }
        @Override
        public void attributeReplaced(HttpSessionBindingEvent arg0) {
            System.out.println("修改屬性");
        }
        @Override
        public void sessionCreated(HttpSessionEvent arg0) {
            System.out.println("session創(chuàng)建");
        }
        @Override
        public void sessionDestroyed(HttpSessionEvent arg0) {
            System.out.println("session銷毀");
        }
    }
    <listener>
        <listener-class>com.shuai.listeners.MySessionListener</listener-class>
    </listener>
    全局改變session回收時間
        web.xml中配置
            <session-config>
                <session-timeout>1</session-timeout>
            </session-config>
案例
    顯示當前登錄的用戶-并且可以踢出用戶
    HTTPSession屬性監(jiān)聽器-當用戶登錄的時候把登錄信息保存到session中
    session監(jiān)聽到屬性增加的時候,把用戶信息保存到application中。
    session監(jiān)聽到屬性移除的時候,把用戶信息從application中移除。
    一個servlet專門用來做用戶的顯示
    做一個請求過濾器做權限控制。
其它
    訪問者ip
        request.getRemoteHost()
    session創(chuàng)建時間
        session.getCreationTime()
    session最后訪問時間
        session.getLastAccessedTime()
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容