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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java如何使用Listener

發(fā)布時(shí)間:2025/3/20 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java如何使用Listener 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

定義

用于監(jiān)聽Web應(yīng)用的內(nèi)部事件的實(shí)現(xiàn)類。可以監(jiān)聽用戶session的開始與結(jié)束,用戶請(qǐng)求的到達(dá)等等,當(dāng)事件發(fā)生時(shí),會(huì)回調(diào)監(jiān)聽器的內(nèi)部方法

使用Listener步驟

  • 通過實(shí)現(xiàn)具體接口創(chuàng)建實(shí)現(xiàn)類(可實(shí)現(xiàn)多個(gè)監(jiān)聽器接口)
  • 配置實(shí)現(xiàn)類成為監(jiān)聽器,有兩種配置方式:
  • 直接用@WebListener注解修飾實(shí)現(xiàn)類
  • 通過web.xml方式配置,代碼如下:
  • <listener><listener-class>com.zrgk.listener.MyListener</lisener-class> </listener>

    常用Web事件監(jiān)聽器接口

    1. ServletContextListener

  • 該接口用于監(jiān)聽Web應(yīng)用的啟動(dòng)與關(guān)閉
  • 該接口的兩個(gè)方法:
  • contextInitialized(ServletContextEvent event); // 啟動(dòng)web應(yīng)用時(shí)調(diào)用
  • contextDestroyed(ServletContextEvent event); // 關(guān)閉web應(yīng)用時(shí)調(diào)用
  • 如何獲得application對(duì)象:
    ServletContext application = event.getServletContext();
  • 示例
  • @WebListener public class MyServetContextListener implements ServletContextListener{//web應(yīng)用關(guān)閉時(shí)調(diào)用該方法@Overridepublic void contextDestroyed(ServletContextEvent event) {ServletContext application = event.getServletContext();String userName = application.getInitParameter("userName"); System.out.println("關(guān)閉web應(yīng)用的用戶名字為:"+userName);}//web應(yīng)用啟動(dòng)時(shí)調(diào)用該方法@Overridepublic void contextInitialized(ServletContextEvent event) {ServletContext application = event.getServletContext();String userName = application.getInitParameter("userName"); System.out.println("啟動(dòng)web應(yīng)用的用戶名字為:"+userName);}}

    2. ServletContextAttributeListener

  • 該接口 用于監(jiān)聽ServletContext范圍(application)內(nèi)屬性的改變。
  • 該接口的兩個(gè)方法:
  • attributeAdded(ServletContextAttributeEvent event); // 當(dāng)把一個(gè)屬性存進(jìn)application時(shí)觸發(fā)
  • attributeRemoved(ServletContextAttributeEvent event); // 當(dāng)把一個(gè)屬性從application刪除時(shí)觸發(fā)
  • attributeReplaced(ServletContextAttributeEvent event); // 當(dāng)替換application內(nèi)的某個(gè)屬性值時(shí)觸發(fā)
  • 如何獲得application對(duì)象:
    ServletContext application = event.getServletContext();
  • 示例
  • @WebListener public class MyServletContextAttributeListener implements ServletContextAttributeListener{//向application范圍內(nèi)添加一個(gè)屬性時(shí)觸發(fā)@Overridepublic void attributeAdded(ServletContextAttributeEvent event) {String name = event.getName();//向application范圍添加的屬性名Object val = event.getValue(); //向application添加的屬性對(duì)應(yīng)的屬性值System.out.println("向application范圍內(nèi)添加了屬性名為:"+name+",屬性值為:"+val+"的屬性");}//刪除屬性時(shí)觸發(fā)@Overridepublic void attributeRemoved(ServletContextAttributeEvent event) {// ... }//替換屬性值時(shí)觸發(fā)@Overridepublic void attributeReplaced(ServletContextAttributeEvent event) {// ... }}

    3. ServletRequestListener與ServletRequestAttributeListener

  • ServletRequestListener用于監(jiān)聽用戶請(qǐng)求,而ServletRequestAttributeListener用于監(jiān)聽request范圍內(nèi)屬性的變化。
  • ServletRequestListener兩個(gè)需要實(shí)現(xiàn)的方法
  • requestInitialized(ServletRequestEvent event); //用戶請(qǐng)求到達(dá)、被初始化時(shí)觸發(fā)
  • requestDestroyed(ServletRequestEvent event); // 用戶請(qǐng)求結(jié)束、被銷毀時(shí)觸發(fā)
  • ServletRequestAttributeListener兩個(gè)需要實(shí)現(xiàn)的方法
  • attributeAdded(ServletRequestAttributeEvent event); // 向request范圍內(nèi)添加屬性時(shí)觸發(fā)
  • attributeRemoved(ServletRequestAttributeEvent event); // 從request范圍內(nèi)刪除某個(gè)屬性時(shí)觸發(fā)
  • attributeReplaced(ServletRequestAttributeEvent event); // 替換request范圍內(nèi)某個(gè)屬性值時(shí)觸發(fā)
  • 獲取reqeust對(duì)象
    HttpServletRequest req = (HttpServletRequest)event.getServletRequest();
  • 代碼片
  • @WebListener public class MyRequestListener implements ServletRequestListener,ServletRequestAttributeListener{//用戶請(qǐng)求結(jié)束、被銷毀時(shí)觸發(fā)@Overridepublic void requestDestroyed(ServletRequestEvent event) {HttpServletRequest req = (HttpServletRequest) event.getServletRequest();String ip = req.getRemoteAddr();System.out.println("IP為:"+ip+"的用戶發(fā)送到"+req.getRequestURI()+"的請(qǐng)求結(jié)束");}//用戶請(qǐng)求到達(dá)、被初始化時(shí)觸發(fā)@Overridepublic void requestInitialized(ServletRequestEvent event) {HttpServletRequest req = (HttpServletRequest) event.getServletRequest();String ip = req.getRemoteAddr();System.out.println("IP為:"+ip+"的用戶發(fā)送到"+req.getRequestURI()+"的請(qǐng)求被初始化");}//向request范圍內(nèi)添加屬性時(shí)觸發(fā)@Overridepublic void attributeAdded(ServletRequestAttributeEvent event) {String name = event.getName();Object val = event.getValue();System.out.println("向request范圍內(nèi)添加了名為:"+name+",值為:"+val+"的屬性");}//刪除request范圍內(nèi)某個(gè)屬性時(shí)觸發(fā)@Overridepublic void attributeRemoved(ServletRequestAttributeEvent event) {//... }//替換request范圍內(nèi)某個(gè)屬性值時(shí)觸發(fā)@Overridepublic void attributeReplaced(ServletRequestAttributeEvent event) {// ... } }

    4. HttpSessionListener與HttpSessionAttributeListener

  • HttpSessionListener監(jiān)聽用戶session的開始與結(jié)束,而HttpSessionAttributeListener監(jiān)聽HttpSession范圍(session)內(nèi)的屬性的改變。
  • HttpSessionListener要實(shí)現(xiàn)的方法:
  • sessionCreated(HttpSessionEvent event); // 用戶與服務(wù)器的會(huì)話開始、創(chuàng)建時(shí)觸發(fā)
  • sessionDestroyed(HttpSessionEvent event); // 用戶與服務(wù)器的會(huì)話結(jié)束時(shí)觸發(fā)
  • HttpSessionAttributeListener要實(shí)現(xiàn)的方法:
  • attributeAdded(HttpSessionBindingEvent event) ; // 向session范圍內(nèi)添加屬性時(shí)觸發(fā)
  • attributeRemoved(HttpSessionBindingEvent event); // 刪除session范圍內(nèi)某個(gè)屬性時(shí)觸發(fā)
  • attributeReplaced(HttpSessionBindingEvent event); // 替換session范圍內(nèi)某個(gè)屬性值時(shí)觸發(fā)
  • 如何得到session對(duì)象
    HttpSession session = event.getSession();
  • 代碼片
  • @WebListener public class MySessionListener implements HttpSessionListener,HttpSessionAttributeListener {//建立session會(huì)話時(shí)觸發(fā)@Overridepublic void sessionCreated(HttpSessionEvent event) {HttpSession session = event.getSession();String sessionId = session.getId();System.out.println("建立了會(huì)話,會(huì)話ID為:"+sessionId);}@Overridepublic void sessionDestroyed(HttpSessionEvent event) {// ... }//向session范圍內(nèi)添加屬性時(shí)觸發(fā)@Overridepublic void attributeAdded(HttpSessionBindingEvent event) {String name = event.getName();Object val = event.getValue();System.out.println("向session范圍內(nèi)添加了名為:"+name+",值為:"+val+"的屬性");}@Overridepublic void attributeRemoved(HttpSessionBindingEvent event) {// ... }@Overridepublic void attributeReplaced(HttpSessionBindingEvent event) {// ... }}

    總結(jié)

    以上是生活随笔為你收集整理的Java如何使用Listener的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 91国偷自产一区二区三区女王 | 乱色熟女综合一区二区三区 | www.中文字幕.com| www.四虎在线 | 成人片黄网站色大片免费毛片 | 99re在线视频精品 | 日本综合视频 | 国产精品23p | 探花av在线 | 国产成人综合欧美精品久久 | 日韩伦乱| 黄色大片在线播放 | 亚洲成人自拍视频 | 日本www黄| 中文字幕第10页 | 我的丝袜美腿尤物麻麻 | 日本性久久 | 国产精品一区二区自拍 | 狼人伊人干 | 象人高潮调教丨vk | 四虎激情 | 国产区亚洲区 | 亚洲一区二区三区欧美 | 亚洲男人天堂2023 | 99视频免费在线观看 | 香蕉影音 | 天堂中文视频 | 日韩高清二区 | 91精品又粗又猛又爽 | 亚洲资源在线播放 | 久久精品99国产国产精 | 美女扒开下面让男人捅 | 亚洲人吸女人奶水 | 少妇厨房愉情理伦bd在线观看 | 自宅警备员在线观看 | 一区二区久久久 | 久久黄色一级 | 蜜臀av免费在线观看 | 久久国产视频一区 | 三级不卡 | 久久国产精品二区 | 98精品国产 | 婷婷综合av | 丝袜av电影| 欧美性爱视频久久 | 欧美午夜在线视频 | 汗汗视频 | 国产亚洲AV无码成人网站在线 | 欧美大片一区二区 | 日韩xxxxxxxxx | 爱爱免费视频网站 | 淫僧荡尼巨乳(h)小说 | 中文日韩在线 | 九九午夜视频 | 欧美五月婷婷 | 久草福利资源在线 | 成人亚洲精品 | 中日韩欧美在线观看 | 国产三级视频在线播放 | 91亚色视频 | 欧美午夜三级 | 超碰精品在线观看 | 少妇高潮21p| 精品一区二区久久久久久久网站 | 91免费视频国产 | 日本三级日本三级日本三级极 | 国产免费的av | 97成人免费视频 | 亚色中文| 插插看看 | 老牛嫩草二区三区观影体验 | 色就是色网站 | 久章草影院 | 天天碰天天摸 | 特级西西人体444www高清大胆 | 女仆乖h调教跪趴1v1 | 五月激情综合婷婷 | 日韩草比 | 六月婷婷久久 | 国产精品18久久久久久久久 | 欧美三级小视频 | 91丝袜一区二区三区 | 国产成人av一区二区三区 | 免费a级片在线观看 | 在线欧美激情 | 性感美女一级片 | 国产精品熟妇一区二区三区四区 | 九九热免费| 91春色 | 欧美黄色性视频 | 国内自拍真实伦在线观看 | 人人色视频 | 欧美国产中文字幕 | 成人自拍一区 | 噜噜吧噜噜色 | 久久不射网| 传媒视频在线观看 | 久久精品视频99 | 久久久久久免费视频 |