日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

方立勋_30天掌握JavaWeb_Servlet事件监听器

發布時間:2023/12/20 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 方立勋_30天掌握JavaWeb_Servlet事件监听器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

監聽器

監聽器就是一個實現特定接口的普通java程序,這個程序專門用于監聽另一個java對象的方法調用或屬性改變,當被監聽對象發生上述事件后,監聽器某個方法將立即被執行。

監聽器典型案例:監聽window窗口的事件監聽器

Java事件監聽機制面試題:
請描述一下java事件監聽機制。
1. java的事件監聽機制涉及到三個組件:事件源、事件監聽器、事件對象
2. 當事件源上發生操作時,它將會調用事件監聽器的一個方法,并在調用這個方法時,會傳遞事件對象過去
3. 事件監聽器由開發人員編寫,開發人員在事件監聽器中,通過事件對象可以拿到事件源,從而對事件源上的操作進行處理。

Servle監聽器

在Servlet規范中定義了多種類型的監聽器,它們用于監聽的事件源分別為ServletContext, HttpSessionServletRequest這三個域對象。

Servlet規范針對這三個對象上的操作,又把這多種類型的監聽器劃分為三種類型。
監聽三個域對象創建和銷毀的事件監聽器
監聽域對象中屬性的增加和刪除的事件監聽器
監聽綁定到 HttpSession 域中的某個對象的狀態的事件監聽器。(查看API文檔)

監聽servletContext域對象創建和銷毀

  • ServletContextListener 接口用于監聽 ServletContext 對象的創建和銷毀事件。
  • 當 ServletContext 對象被創建時,激發contextInitialized (ServletContextEvent sce)方法
  • 當 ServletContext 對象被銷毀時,激發contextDestroyed(ServletContextEvent sce)方法。

  • Q:servletContext域對象何時創建和銷毀:
    A:創建:服務器啟動針對每一個web應用創建servletcontext
    銷毀:服務器關閉前先關閉代表每一個web應用的servletContext

編寫 Servlet 監聽器

和編寫其它事件監聽器一樣,編寫servlet監聽器也需要實現一個特定的接口,并針對相應動作覆蓋接口中的相應方法。
和其它事件監聽器略有不同的是,servlet監聽器的注冊不是直接注冊在事件源上,而是由WEB容器負責注冊,開發人員只需在web.xml文件中使用<listener>標簽配置好監聽器,web容器就會自動把監聽器注冊到事件源中。
一個 web.xml 文件中可以配置多個 Servlet 事件監聽器,web 服務器按照它們在 web.xml 文件中的注冊順序來加載和注冊這些 Serlvet 事件監聽器。

監聽HttpSession域對象創建和銷毀

  • HttpSessionListener接口用于監聽HttpSession的創建和銷毀
  • 創建一個Session時,sessionCreated(HttpSessionEvent se) 方法將會被調用。
  • 銷毀一個Session時,sessionDestroyed (HttpSessionEvent se) 方法將會被調用。
  • (此處復習session對象,寫多個servlet都去getSession,看session的創建)
  • Session域對象創建和銷毀的時機創建:用戶每一次訪問時,服務器創建session
    銷毀:如果用戶的session 30分鐘沒有使用,服務器就會銷毀session,我們在web.xml里面也可以配置session失效時間

監聽HttpRequest域對象創建和銷毀

  • ServletRequestListener 接口用于監聽ServletRequest 對象的創建和銷毀。
  • Request 對象被創建時,監聽器的requestInitialized方法將會被調用。
  • Request對象被銷毀時,監聽器的requestDestroyed方法將會被調用。

  • (此處復習request對象,在瀏覽器窗口中多次刷新訪問servlet,看request對象的創建和銷毀,并寫一個servlet,然后用sendRedirect、forward方式跳轉到其它servlet,查看request對象的創建和消耗)

  • servletRequest域對象創建和銷毀的時機:
    創建:用戶每一次訪問,都會創建一個reqeust
    銷毀:當前訪問結束,request對象就會銷毀

Servlet監聽器在開發中的應用案例

  • 統計當前在線人數
  • 自定義session掃描器

監聽三個域對象屬性變化

  • Servlet規范定義了監聽 ServletContext, HttpSession, HttpServletRequest 這三個對象中的屬性變更信息事件的監聽器。

  • 這三個監聽器接口分別是ServletContextAttributeListener, HttpSessionAttributeListener ServletRequestAttributeListener

  • 這三個接口中都定義了三個方法來處理被監聽對象中的屬性的增加,刪除和替換的事件,同一個事件在這三個接口中對應的方法名稱完全相同,只是接受的參數類型不同。

attributeAdded 方法

  • 當向被監聽器對象中增加一個屬性時,web容器就調用事件監聽器的 attributeAdded 方法進行相應,這個方法接受一個事件類型的參數,監聽器可以通過這個參數來獲得正在增加屬性的域對象和被保存到域中的屬性對象
  • 各個域屬性監聽器中的完整語法定義為:
    public void attributeAdded(ServletContextAttributeEvent scae)
    public void attributeReplaced(HttpSessionBindingEvent hsbe)
    public void attributeRmoved(ServletRequestAttributeEvent srae)

attributeRemoved 方法

  • 當刪除被監聽對象中的一個屬性時,web 容器調用事件監聽器的這個方法進行相應
  • 各個域屬性監聽器中的完整語法定義為:
    public void attributeRemoved(ServletContextAttributeEvent scae)
    public void attributeRemoved (HttpSessionBindingEvent hsbe)
    public void attributeRemoved (ServletRequestAttributeEvent srae)

attributeReplaced 方法

  • 當監聽器的域對象中的某個屬性被替換時,web容器調用事件監聽器的這個方法進行相應
  • 各個域屬性監聽器中的完整語法定義為:
    public void attributeReplaced(ServletContextAttributeEvent scae)
    public void attributeReplaced (HttpSessionBindingEvent hsbe)
    public void attributeReplaced (ServletRequestAttributeEvent srae)

感知Session綁定的事件監聽器

  • 保存在 Session 域中的對象可以有多種狀態:綁定到 Session 中;從 Session 域中解除綁定;隨 Session 對象持久化到一個存儲設備中;隨 Session 對象從一個存儲設備中恢復

  • Servlet 規范中定義了兩個特殊的監聽器接口來幫助 JavaBean 對象了解自己在 Session 域中的這些狀態:HttpSessionBindingListener接口和HttpSessionActivationListener接口 ,實現這兩個接口的類不需要 web.xml 文件中進行注冊。

HttpSessionBindingListener接口

  • 實現了HttpSessionBindingListener接口的 JavaBean 對象可以感知自己被綁定到 Session 中和從 Session 中刪除的事件
  • 當對象被綁定到 HttpSession 對象中時,web 服務器調用該對象的 void valueBound(HttpSessionBindingEvent event) 方法
  • 當對象從 HttpSession 對象中解除綁定時,web 服務器調用該對象的 void valueUnbound(HttpSessionBindingEvent event)方法

HttpSessionActivationListener接口

  • 實現了HttpSessionActivationListener接口的 JavaBean 對象可以感知自己被活化和鈍化的事件
  • 當綁定到 HttpSession 對象中的對象將要隨 HttpSession 對象被鈍化之前,web 服務器調用如下方法sessionWillPassivate(HttpSessionBindingEvent event) 方法
  • 當綁定到 HttpSession 對象中的對象將要隨 HttpSession 對象被活化之后,web 服務器調用該對象的 void sessionDidActive(HttpSessionBindingEvent event)方法
<Context> <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1"> <Store className="org.apache.catalina.session.FileStore" directory="it315"/> </Manager> </Context>

練習:顯示登陸用戶列表,并實現踢人功能

總結

以上是生活随笔為你收集整理的方立勋_30天掌握JavaWeb_Servlet事件监听器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 我要看一级黄色片 | 国产精品自在线 | 伊人看片| 在线成人日韩 | 九九热只有精品 | 69视频在线播放 | 久操超碰 | 国产1区2区3区中文字幕 | 天天弄| 国产乱子伦视频一区二区三区 | 免费在线网站 | 欧洲视频一区二区三区 | 久草国产在线视频 | 精品久久久久一区二区国产 | jizz性欧美15| 曰批免费视频播放免费 | 亚洲欧美伦理 | 在线观看黄色免费网站 | 欧美视频a | 国产视频污在线观看 | 影音先锋 日韩 | 日韩av资源| 亚洲中文字幕一区 | 黄色网战入口 | 美女在线免费视频 | jvid在线 | 国产老妇伦国产熟女老妇视频 | 草在线视频 | 亚洲国产视频一区二区 | 91成人免费在线观看 | 精品成人av一区二区在线播放 | 成人精品毛片 | 国产伦精品一区二区三区视频女 | 黄色av片三级三级三级免费看 | 久久精品一二三 | 波多野结衣一区二区三区四区 | 欧美黄色特级片 | 日韩乱码一区二区三区 | 伊人称影院 | 黄色一级视屏 | 亚洲欧美日韩精品在线观看 | 精品日韩一区二区三区四区 | 嫩草国产在线 | 天天色天天射天天干 | 国产情侣久久久久aⅴ免费 caoporn成人 | 免费av毛片 | 麻豆资源 | 金瓶风月在线 | 国产精品综合久久久久久 | 国产成年妇视频 | 日日摸日日碰夜夜爽av | 久久精品久久99 | 欧美性动态图 | 91精品国产高清一区二区三密臀 | 97se.com| 欧美三日本三级少妇三99 | av观看网址 | 不良视频在线观看 | 朝桐光一区二区三区 | 黄色在线免费 | 在线观看小视频 | 欧美日韩成人一区二区 | 亚洲三级黄色 | 日韩一级理论片 | 精品孕妇一区二区三区 | 国产男男gay | 黄色大全免费观看 | 成人福利一区 | 人人干超碰 | 不用播放器的av网站 | 人人99| 国产成人观看 | 精精国产xxxx视频在线 | 精品人妻一区二区三区视频 | 亚洲高清视频在线观看 | 成人小网站| 欧美日韩黄色 | 日韩欧美黄色片 | 亚洲一二三精品 | 免费一区二区视频 | 火影黄动漫免费网站 | 视频在线观看电影完整版高清免费 | 女~淫辱の触手3d动漫 | 老头老太吃奶xb视频 | 7m精品福利视频导航 | 亚洲一区二区观看播放 | 久久精品视频在线免费观看 | 91视频成人| 日本三级日本三级日本三级极 | 免费公开在线视频 | 久久精品夜 | 日韩视频不卡 | 色片网站在线观看 | 在线观看日韩一区二区 | 免费在线观看网址入口 | 午夜精品成人毛片非洲 | 秋霞黄色网 | 欧美丰满老妇熟乱xxxxyyy | 亚洲综合激情五月久久 |