<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dev@Free

    zJun's Tech Weblog

    JSP/Servlet 中的事件處理

    寫過AWT或Swing程序的人一定對桌面程序的事件處理機制印象深刻:通過實現(xiàn)Listener接口的類可以在特定事件(Event)發(fā)生時,呼叫特定的方法來對事件進行響應。

    其實我們在編寫JSP/Servle程序時,也有類似的事件處理機制,所不同的是在JSP/Servlet中是在web.xml中注冊Listener,由Container在特定事件發(fā)生時呼叫特定的實現(xiàn)Listener的類。

    1. Servlet中的Listener和Event:

    在JSP 2.0/Servlet 2.4中,共有八個Listener接口,六個Event類別。

    • ServletContextListener接口

    [接口方法] contextInitialized()與 contextDestroyed()

    [接收事件] ServletContextEvent

    [觸發(fā)場景] 在Container加載Web應用程序時(例如啟動 Container之后),會呼叫contextInitialized(),而當容器移除Web應用程序時,會呼叫contextDestroyed ()方法。

    • ServletContextAttributeListener

    [接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()

    [接收事件] ServletContextAttributeEvent

    [觸發(fā)場景] 若有對象加入為application(ServletContext)對象的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、attributeRemoved()。

    • HttpSessionListener

    [接口方法] sessionCreated()與sessionDestroyed ()

    [接收事件] HttpSessionEvent

    [觸發(fā)場景] 在session (HttpSession)對象建立或被消滅時,會分別呼叫這兩個方法。

    • HttpSessionAttributeListener

    [接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()

    [接收事件] HttpSessionBindingEvent

    [觸發(fā)場景] 若有對象加入為session(HttpSession)對象的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、 attributeRemoved()。

    • HttpSessionActivationListener

    [接口方法] sessionDidActivate()與 sessionWillPassivate()

    [接收事件] HttpSessionEvent

    [觸發(fā)場景] Activate與Passivate是用于置換對象的動作,當session對象為了資源利用或負載平衡等原因而必須暫時儲存至硬盤或其它儲存器時(透過對象序列化),所作的動作稱之為Passivate,而硬盤或儲存器上的session對象重新加載JVM時所采的動作稱之為Activate,所以容易理解的,sessionDidActivate()與 sessionWillPassivate()分別于Activeate后與將Passivate前呼叫。

    • ServletRequestListener

    [接口方法] requestInitialized()與 requestDestroyed()

    [接收事件] RequestEvent

    [觸發(fā)場景] 在request(HttpServletRequest)對象建立或被消滅時,會分別呼叫這兩個方法。

    • ServletRequestAttributeListener

    [接口方法] attributeAdded()、 attributeReplaced()、attributeRemoved()

    [接收事件] HttpSessionBindingEvent

    [觸發(fā)場景] 若有對象加入為request(HttpServletRequest)對象的屬性,則會呼叫attributeAdded(),同理在置換屬性與移除屬性時,會分別呼叫attributeReplaced()、 attributeRemoved()。

    • HttpSessionBindingListener

    [接口方法] valueBound()與valueUnbound()

    [接收事件] HttpSessionBindingEvent

    [觸發(fā)場景] 實現(xiàn)HttpSessionBindingListener接口的類別,其實例如果被加入至session(HttpSession)對象的屬性中,則會呼叫 valueBound(),如果被從session(HttpSession)對象的屬性中移除,則會呼叫valueUnbound(),實現(xiàn)HttpSessionBindingListener接口的類別不需在web.xml中設定。

    2. 如何注冊Servlet中的事件

    實現(xiàn)上面這幾個接口的類別,除了HttpSessionBindingListener,必須在web.xml中向容器注冊,容器才會在對應的事件發(fā)生時呼叫對應的類別,如:

    < listener > ?
    < listener-class > demo.servlet.listener.CustomServletContextListener </ listener-class >
    ?
    </ listener >

    3. Servlet事件的應用實例

    看到這里,你也許會有疑問: 了解這些 listener和event 有什么用呢?我平時開發(fā)沒有用到這些,一樣也能完成任務啊.

    不錯,在日常的開發(fā)中很少用到這些事件處理的方面,但是在某些情況下使用事件處理機制卻可以達到事半功倍的效果,例如下面兩個例子:

    利用HttpSessionListener實現(xiàn)網(wǎng)站在線人數(shù)統(tǒng)計功能

    使用ServletContextListener在服務器啟動和關閉時創(chuàng)建和關閉緩存

    posted on 2006-07-20 14:23 zJun's帛羅閣 閱讀(2505) 評論(4)  編輯  收藏

    評論

    # re: JSP/Servlet 中的事件處理 2006-10-28 16:45 y

    rt  回復  更多評論   

    # re: JSP/Servlet 中的事件處理 2006-11-14 11:50 小野貓

    demo.servlet.listener.CustomServletContextListener
    必須是一個class么?如果把這個類放到一個jsp里呢?  回復  更多評論   

    # re: JSP/Servlet 中的事件處理 2006-11-17 09:47 zjun

    @小野貓
    不是很明白你的意思,為什么要放到JSP里?  回復  更多評論   

    # re: JSP/Servlet 中的事件處理 2011-04-20 15:23 Hector

    剛學jsp的飄過  回復  更多評論   


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     

    導航

    <2006年7月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    統(tǒng)計

    常用鏈接

    留言簿(15)

    隨筆分類

    隨筆檔案

    相冊

    收藏夾

    博客

    文檔

    站點

    論壇

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲中文字幕无码一区| 亚洲AV永久无码精品一区二区国产| 亚洲欧洲日产国码av系列天堂| 美女视频黄a视频全免费网站一区| 精品国产精品久久一区免费式| 亚洲精品无码专区| 深夜国产福利99亚洲视频| 色噜噜的亚洲男人的天堂| 亚洲av无码国产精品色在线看不卡 | 一级做a免费视频观看网站| 免费国产成人午夜电影| 美美女高清毛片视频黄的一免费 | 国产精品高清全国免费观看| 看亚洲a级一级毛片| 亚洲国产精品丝袜在线观看| 男女一进一出抽搐免费视频 | 亚洲AV无码成人专区| 国产小视频免费观看| 免费一级毛suv好看的国产网站| 亚洲国产天堂久久综合| 久久国产精品国产自线拍免费| 亚洲三级电影网址| 99精品全国免费观看视频| 真正全免费视频a毛片| 综合亚洲伊人午夜网| 最近免费中文字幕mv电影 | 日韩在线观看免费| 久久亚洲精品成人综合| 韩国免费一级成人毛片| 看Aⅴ免费毛片手机播放| 亚洲色大成网站www永久一区| 最近高清中文字幕免费| 国产亚洲精品第一综合| 亚洲av永久无码精品漫画| 久久天天躁狠狠躁夜夜免费观看| 偷自拍亚洲视频在线观看| 亚洲av日韩av不卡在线观看| 夜夜嘿视频免费看| 国色精品va在线观看免费视频 | 亚州**色毛片免费观看| 91亚洲一区二区在线观看不卡|