ที่เราเห็นใช้กันบ่อยหน่อย ก็คงจะเป็น ServletContextListener ซึ่งจะ support event ที่เกี่ยวกับการ initialize และ destroy context หรือเมื่อเรา deploy application เราขึ้นไปบน web container หรือตอนที่ เรา undeploy หรือตอนที่ server start หรือ clash ก็จะมีการเรียก class นี้ไปใช้ ส่วน ServletContextAttributeListener ก็จะเป็นคลาสที่ทำงานเมื่อการมี add, remove, replace attribute เข้าไปที่ context (ดังนั้นจะต้องเป็น attribute ที่เป็น context scope เท่านั้น)
ส่วน ServletRequestListener และ ServletRequestAttributeListener ก็จะคล้ายกัน คือ สำหรับเมื่อมี request เกิดขึ้น หรือก่อนที่ request จะจบ และเมื่อมีการเปลี่ยนแปลงของ attribute ใน request (page scope)
ส่วนอีก 4 listener ที่เหลือ คือ HttpSessionListener, HttpSessionAttributeListner และ HttpSessionActivationListener, HttpSessionBindingListener ก็จะเป็น listener ที่เกี่ยวกับ session โดย 2 อันแรก จะคล้ายกับที่กล่าวมาข้างต้น คือเกี่ยวกับ สร้าง/ทำลาย session และเกี่ยวกับ add, remove, replace ของ session attribute
สำหรับ HttpSessionActivationListener จะเกี่ยวพันถึงการ migrate session ข้าม jvm (สำหรับบางกรณี เช่นการทำ load-balancing) และ HttpSessionBindingListener จะคล้ายกับ HttpSessionAttributeListener แต่ต่างกันที่เป็น listener ที่จะ implement โดย attribute class คือมันจะ notify ที่ attribute ที่ implement มัน เมื่อ attribute นั้นๆ ถูกผูกเข้ากับ session หรือโยนออกจาก session
ซึ่ง listener class ส่วนใหญ่จะต้อง declare ไว้ใน DD (web.xml) ยกเว้น HttpSessionBindingListener ที่ไม่ต้องใส่ไว้ใน DD
Listener | Description | method |
---|---|---|
javax.servlet. ServletContextListener | support event ที่เกี่ยวกับการ initialize และ destroy context หรือเมื่อเรา deploy application เราขึ้นไปบน web container หรือตอนที่ เรา undeploy หรือตอนที่ server start หรือ clash ก็จะมีการเรียก class นี้ไปใช้ | contextInitialized(ServletContextEvent) contextDestroyed(ServletContextEvent) |
javax.servlet. ServletContextAttributeListener | ทำงานเมื่อการมี add, remove, replace attribute เข้าไปที่ context | attributeAdded(ServletContextAttributeEvent) attributeRemoved(ServletContextAttributeEvent) attributeReplaced(ServletContextAttributeEvent) |
javax.servlet. ServletRequestListener | เมื่อมี request เกิดขึ้น หรือก่อนที่ request จะจบ | requestInitialized(ServletRequestEvent) requestDestroyed(ServletRequestEvent) |
javax.servlet. ServletRequestAttributeListener | เมื่อมีการเปลี่ยนแปลงของ attribute ใน request | attributeAdded(ServletRequestAttributeEvent) attributeRemoved(ServletRequestAttributeEvent) attributetReplaced(ServletRequestAttributeEvent) |
javax.servlet.http. HttpSessionListener | เกี่ยวกับ สร้าง/ทำลาย session | sessionCreated(HttpSessionEvent) sessionDestroyed(HttpSessionEvent) |
javax.servlet.http. HttpSessionAttributeListner | เกี่ยวกับ add, remove, replace ของ session attribute | attributeAdded(HttpSessionBindingEvent) attributeRemoved(HttpSessionBindingEvent) attributeReplaced(HttpSessionBindingEvent) |
javax.servlet.http. HttpSessionActivationListener | จะเกี่ยวพันถึงการ migrate session ข้าม jvm (สำหรับบางกรณี เช่นการทำ load-balancing) | sessionDidActivate(HttpSessionEvent) sessionWillPassivate(HttpSessionEvent) |
javax.servlet.http. HttpSessionBindingListener | คล้ายกับ HttpSessionAttributeListener แต่ต่างกันที่เป็น listener ที่จะ implement โดย attribute class คือมันจะ notify ที่ attribute ที่ implement มัน เมื่อ attribute นั้นๆ ถูกผูกเข้ากับ session หรือโยนออกจาก session | valueBound(HttpSessionBindingEvent) valueUnbound(HttpSessionBindingEvent) |
No comments:
Post a Comment