常州酌乒文化传播有限公司

當(dāng)前位置:

java認(rèn)證考試專業(yè)語言串講Servlet中的八大Listener詳解

發(fā)表時(shí)間:2015/4/9 14:01:27 來源:互聯(lián)網(wǎng) 點(diǎn)擊關(guān)注微信:關(guān)注中大網(wǎng)校微信
關(guān)注公眾號(hào)

Servlet中的八大Listener詳解

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

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

1. Servlet中的Listener和Event:

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

l ServletContextListener

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

[接收事件] ServletContextEvent

[觸發(fā)場(chǎng)景] 在Container加載Web應(yīng)用程序時(shí)(例如啟動(dòng) Container之后),會(huì)呼叫contextInitialized(),而當(dāng)容器移除Web應(yīng)用程序時(shí),會(huì)呼叫contextDestroyed ()方法。

l ServletContextAttributeListener

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

[接收事件] ServletContextAttributeEvent

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

l HttpSessionListener

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

[接收事件] HttpSessionEvent

[觸發(fā)場(chǎng)景] 在session(HttpSession)對(duì)象建立或被消滅時(shí),會(huì)分別呼叫這兩個(gè)方法。

l HttpSessionAttributeListener

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

[接收事件] HttpSessionBindingEvent

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

l ServletRequestListener

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

[接收事件] RequestEvent

[觸發(fā)場(chǎng)景] 在request(HttpServletRequest)對(duì)象建立或被消滅時(shí),會(huì)分別呼叫這兩個(gè)方法。

l ServletRequestAttributeListener

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

[接收事件] HttpSessionBindingEvent

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

l HttpSessionBindingListener

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

[接收事件] HttpSessionBindingEvent

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

l HttpSessionActivationListener

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

[接收事件] HttpSessionEvent

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

2. 注冊(cè)監(jiān)聽器

除了HttpSessionBindingListener和HttpSessionActivationListener外,必須在web.xml中向容器注冊(cè),容器才會(huì)在對(duì)應(yīng)的事件發(fā)生時(shí)呼叫對(duì)應(yīng)的類別,如:

demo.servlet.listener.CustomServletContextListener

listener-class>

listener>

編輯推薦

java認(rèn)證考試專業(yè)語言串講資料匯總

JAVA認(rèn)證考試報(bào)考指南 / 更多JAVA考試資料

(責(zé)任編輯:xy)

2頁,當(dāng)前第1頁  第一頁  前一頁  下一頁
最近更新 考試動(dòng)態(tài) 更多>
麻栗坡县| 宜兰县| 普定县| 墨脱县| 延津县| 冷水江市| 寿光市| 广饶县| 苏尼特左旗| 五台县| 大埔区| 南乐县| 锡林郭勒盟| 剑川县| 康定县| 池州市| 阿城市| 双桥区| 永靖县| 高平市| 乐业县| 象山县| 彭阳县| 化州市| 德令哈市| 普兰店市| 新昌县| 灵山县| 乌兰浩特市| 泗洪县| 北辰区| 杨浦区| 乌审旗| 曲松县| 会理县| 方城县| 大庆市| 涿鹿县| 新野县| 莫力| 上栗县|