成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

java中Servlet監(jiān)聽器的工作原理及示例詳解

瀏覽:171日期:2022-08-29 09:25:11

監(jiān)聽器就是一個實現(xiàn)特定接口的普通java程序,這個程序?qū)iT用于監(jiān)聽另一個java對象的方法調(diào)用或?qū)傩愿淖儯?dāng)被監(jiān)聽對象發(fā)生上述事件后,監(jiān)聽器某個方法將立即被執(zhí)行。

監(jiān)聽器原理

監(jiān)聽原理

1、存在事件源 2、提供監(jiān)聽器 3、為事件源注冊監(jiān)聽器 4、操作事件源,產(chǎn)生事件對象,將事件對象傳遞給監(jiān)聽器,并且執(zhí)行監(jiān)聽器相應(yīng)監(jiān)聽方法

監(jiān)聽器典型案例:監(jiān)聽window窗口的事件監(jiān)聽器 例如:swing開發(fā)首先制造Frame**窗體**,窗體本身也是一個顯示空間,對窗體提供監(jiān)聽器,監(jiān)聽窗體方法調(diào)用或者屬性改變: * 關(guān)閉窗體時,調(diào)用windowListener 的windowclosing() , 傳遞windowEvent參數(shù),表示窗體關(guān)閉事件對象 * 事件對象操作事件源,獲得事件源狀態(tài)

自定義監(jiān)聽器

以上內(nèi)容可以用下圖解釋:

java中Servlet監(jiān)聽器的工作原理及示例詳解

通過person.addPersonListener(new PersonListener(){})使事件源與監(jiān)聽器間產(chǎn)生聯(lián)系。

事件源(在事件源方法中創(chuàng)建事件對象):

監(jiān)聽器(參數(shù)是事件對象)

事件對象(通過事件對象可以獲得事件源)

測試方法

對上的匿名類補充:匿名內(nèi)部類的作用是創(chuàng)建一個實現(xiàn)接口的匿名類對象,含義是創(chuàng)建一個繼承自PersonListener的匿名類的對象),通過new表達(dá)式返回的引用被自動向上轉(zhuǎn)型為對PersonListener的引用

Servlet監(jiān)聽器

(不需要配置,但是監(jiān)聽器仍需要進(jìn)行注冊) 在Servlet規(guī)范中定義了多種類型的監(jiān)聽器,它們用于監(jiān)聽的事件源分別為 ServletContext, HttpSession 和 ServletRequest 這三個域?qū)ο蟆?/p>

Servlet監(jiān)聽器分為三大類 1、數(shù)據(jù)域?qū)ο髣?chuàng)建和銷毀監(jiān)聽器 2、數(shù)據(jù)域?qū)ο蠛蛯傩宰兏O(jiān)聽器 3、綁定到 HttpSession 域中的某個對象的狀態(tài)的事件監(jiān)聽器

(一)數(shù)據(jù)域?qū)ο髣?chuàng)建銷毀監(jiān)聽器 — 監(jiān)聽三個與對象 (三個監(jiān)聽器)

1、ServletContextListener : 用來監(jiān)聽ServletContext對象的創(chuàng)建和銷毀

監(jiān)聽創(chuàng)建 監(jiān)聽銷毀 * ServletContext對象代表全局唯一對象,每個web工程會產(chǎn)生一個ServletContext,服務(wù)器啟動創(chuàng)建,服務(wù)器關(guān)閉銷毀

編寫監(jiān)聽器 步驟一:編寫類實現(xiàn)特定監(jiān)聽器接口 步驟二:注冊監(jiān)聽器,不是通過事件源,而是在web.xml 進(jìn)行配置 (監(jiān)聽器和Servlet、Filter不同,不需要url配置,監(jiān)聽器執(zhí)行不是由用戶訪問的,監(jiān)聽器 是由事件源自動調(diào)用的)

servletContext域?qū)ο蠛螘r創(chuàng)建和銷毀:

創(chuàng)建:服務(wù)器啟動針對每一個web應(yīng)用創(chuàng)建servletcontext 銷毀:服務(wù)器關(guān)閉前先關(guān)閉代表每一個web應(yīng)用的servletContext

ServletContextListener主流應(yīng)用: 第一個:在服務(wù)器啟動時,對一些對象進(jìn)行初始化,并且將對象保存ServletContext數(shù)據(jù)范圍內(nèi)(因為在監(jiān)聽器內(nèi)可以獲得事件源對象) — 全局?jǐn)?shù)據(jù)

例如:創(chuàng)建數(shù)據(jù)庫連接池

第二個:對框架進(jìn)行初始化 例如:Spring框架初始化通過ServletContextListener (因為監(jiān)聽器代碼在服務(wù)器啟動時執(zhí)行)

Spring框架(配置文件隨服務(wù)器啟動加載) org.springframework.web.context.ContextLoaderListener

第三個:實現(xiàn)任務(wù)調(diào)度,啟動定時程序 (Timer、TimerTask) 使一個程序,定時執(zhí)行

比如說每天晚上十二點給過生日的人進(jìn)行生日祝福,中國移動對賬戶進(jìn)行同步,會在服務(wù)器使用較少的時間,例如凌晨之類,啟動一段程序,進(jìn)行同步

java.util.Timer 一種線程設(shè)施,用于安排以后在后臺線程中執(zhí)行的任務(wù)。可安排任務(wù)執(zhí)行一次,或者定期重復(fù)執(zhí)行。 Timer提供了啟動定時任務(wù)方法 schedule * schedule(TimerTask task, Date firstTime, long period) 用來在指定一個時間啟動定時器,定期循環(huán)執(zhí)行 * schedule(TimerTask task, long delay, long period) 用來在當(dāng)前時間delay多少毫秒后啟動定時器 停止定時器,timer.cancel取消任務(wù)

2、HttpSession 數(shù)據(jù)對象創(chuàng)建和銷毀監(jiān)聽器 —? HttpSessionListener

監(jiān)聽Session對象創(chuàng)建 監(jiān)聽Session對象銷毀

Session何時創(chuàng)建:request.getSession() Session何時銷毀:關(guān)閉服務(wù)器,Session過期,session.invalidate *Session過期時間通過web.xml配置(tomcat配置文件中),默認(rèn)時間30分鐘

配置:

HttpSession監(jiān)聽器

現(xiàn)有如下JSP頁面:

1.jsp

2.jsp

訪問1.jsp時會執(zhí)行監(jiān)聽器原因:因為如果觀察jsp的源碼,封閉式英語培訓(xùn)jsp會被預(yù)處理成.java代碼(在tomcat中work文件夾下,參見http://blog.csdn.net/megustas_jjc/article/details/53462025),我們打開這個.java代碼的源碼:

java中Servlet監(jiān)聽器的工作原理及示例詳解

其中的getSession的實現(xiàn)實際就是request.getSession()

3、HttpServletRequest對象的創(chuàng)建和銷毀監(jiān)聽器 —- ServletRequestListener

—-監(jiān)聽request對象創(chuàng)建 監(jiān)聽request對象銷毀

Request何時創(chuàng)建:請求發(fā)起時創(chuàng)建 Request何時銷毀:響應(yīng)結(jié)束時銷毀

例如:每次刷新界面都會創(chuàng)建銷毀一次

注意(創(chuàng)建銷毀次數(shù)由請求次數(shù)決定): 使用forward —- request創(chuàng)建銷毀幾次 —? 一次 使用sendRedirect —- request創(chuàng)建銷毀兩次 (兩次請求)

(二)ServletContext/HttpSession/ServletRequest中保存數(shù)據(jù) 創(chuàng)建、修改、移除監(jiān)聽器

ServletContextAttributeListener 監(jiān)聽ServletContext中屬性變化 HttpSessionAttributeListener 監(jiān)聽HttpSession中屬性變化 ServletRequestAttributeListener 監(jiān)聽ServletRequest中屬性變化

attributeAdded 監(jiān)聽屬性添加 —- 當(dāng)數(shù)據(jù)范圍對象沒有該屬性,第一次添加時調(diào)用執(zhí)行 attributeRemoved 監(jiān)聽屬性移除 —- 從一個數(shù)據(jù)范圍對象刪除一個已經(jīng)存在屬性執(zhí)行 attributeReplaced 監(jiān)聽屬性替換 —? 當(dāng)一個數(shù)據(jù)范圍已經(jīng)存在一個屬性,向數(shù)據(jù)范圍添加相同名稱屬性觸發(fā)替換方法

例如,此處我們用HttpSessionAttributeListener舉例(ServletContextListener與ServletRequestListener同理):

JSP頁面

監(jiān)聽器

注冊

注意:獲得返回值通過session.getAttribute(se.getName())

(三)被綁定Session對象,自我狀態(tài)感知監(jiān)聽器

保存在 Session 域中的對象可以有多種狀態(tài):綁定到 Session 中;從 Session 域中解除綁定;隨 Session 對象持久化到一個存儲設(shè)備中(鈍化);隨 Session 對象從一個存儲設(shè)備中恢復(fù)(活化)

被存放Session的Java對象,感知自我四種狀態(tài)變化 1、被綁定 2、被解除綁定 3、被鈍化 —? 數(shù)據(jù)從內(nèi)存序列化硬盤 4、被活化 —- 數(shù)據(jù)從硬盤重新加載回內(nèi)存

HttpSessionBindingListener實現(xiàn)接口的java對象,感知自己被綁定到Session或者從Session中解除綁定 HttpSessionActivationListener實現(xiàn)接口的java對象,感知從內(nèi)存被鈍化硬盤上,雅思托福的區(qū)別從硬盤活化到內(nèi)存中 實現(xiàn)這兩個接口的類不需要 web.xml 文件中進(jìn)行注冊,都是由Session自主完成的,例如在存儲對象的時候會自動調(diào)用綁定

HttpSessionBindingListener

* 綁定對象方法 —- * 解除綁定方法 —?、當(dāng)Session對象銷毀時,當(dāng)中所有綁定對象解除綁定

JSP頁面:

HttpSessionActivationListener

* 感知對象被活化 * 感知對象被鈍化 使用場景:Session保存數(shù)據(jù),很長一段時間沒用,但是不能銷毀Session對象,不想占用服務(wù)器內(nèi)存資源 —? 鈍化(將服務(wù)器內(nèi)存中數(shù)據(jù)序列化硬盤上)

JSP界面

讀取數(shù)據(jù)

注意

鈍化和活化應(yīng)該由tomcat服務(wù)器 自動進(jìn)行 —- 配置tomcat

配置context有幾個位置? 1、tomcat/conf/context.xml 對所有虛擬主機 所有web工程生效 2、tomcat/conf/Catalina/localhost/context.xml 對當(dāng)前虛擬主機所有web工程生效 3、當(dāng)前工程/META-INF/context.xml 對當(dāng)前工程有效

鈍化后 it315目錄在哪里?在“tomcat/work/Catalina/localhost/項目名”目錄中

java對象如果想實現(xiàn)序列化,需要實現(xiàn)Serializable接口(因此上述Bean2實現(xiàn)Serializable接口,才可以被鈍化,并之后進(jìn)行活化并讀取)

到此這篇關(guān)于java中Servlet監(jiān)聽器的工作原理及示例詳解的文章就介紹到這了,更多相關(guān)java Servlet監(jiān)聽器內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
丁香婷婷综合激情五月色| 亚洲男同1069视频| 亚洲另类春色国产| 国内精品久久国产| 日韩欧美国产一区在线观看| 精品系列免费在线观看| 91久久精品国产91性色tv| 婷婷激情综合网| 国产精品婷婷| 亚洲风情在线资源站| 欧美亚洲一区二区三区| 亚洲成人www| 色综合久久88色综合天天6| 午夜精品影院在线观看| 母乳一区在线观看| 日韩激情视频网站| 色94色欧美sute亚洲线路二 | 波多野结衣亚洲| 欧美成人一区二区三区片免费| 国产成人无遮挡在线视频| 这里只有精品视频在线观看| 国产精品亚洲а∨天堂免在线| 91精品久久久久久久久99蜜臂| 国产精品综合网| 久久国产66| 天天色天天爱天天射综合| 老司机亚洲精品| 日本色综合中文字幕| 欧美少妇性性性| 国产黄人亚洲片| 日韩一卡二卡三卡| 91麻豆6部合集magnet| 国产精品乱人伦| 国产农村妇女精品一区二区| 日本伊人色综合网| 欧美丰满少妇xxxbbb| av在线综合网| 亚洲人成网站色在线观看| 国产精品视频福利| 久久99久久久欧美国产| 日韩亚洲欧美一区二区三区| 欧美成人精品| 亚洲激情一二三区| 91福利社在线观看| 国产福利一区在线观看| 亚洲精品一区二区三区香蕉 | 伦理电影国产精品| 欧美一区二区播放| 91年精品国产| 亚洲美女在线一区| 欧洲国内综合视频| 粉嫩av一区二区三区粉嫩| 日本一区二区三区电影| 国产精品普通话对白| 激情文学综合网| 久久精品欧美一区二区三区麻豆| 亚洲国产精品第一区二区| 日韩电影在线观看电影| 欧美日韩国产一区二区三区地区| 成人a级免费电影| 亚洲欧洲精品一区二区三区| 久久在线视频| 成人av电影在线网| 亚洲精品免费一二三区| 精品污污网站免费看| 不卡电影一区二区三区| 亚洲欧美成人一区二区三区| 欧美在线三级电影| 91在线播放网址| 亚洲天堂免费在线观看视频| 亚洲欧洲日韩综合二区| 美国一区二区三区在线播放| 久久精品一区八戒影视| 久久国产一区| 99久久精品情趣| 五月天丁香久久| 久久这里只有精品视频网| 香蕉久久a毛片| eeuss影院一区二区三区| 亚洲一区中文在线| 精品久久人人做人人爱| 亚洲在线成人| 国产成人精品三级| 亚洲色大成网站www久久九九| 欧美在线不卡视频| 欧美日韩91| 免费欧美在线视频| 国产亚洲综合在线| 麻豆久久婷婷| 9人人澡人人爽人人精品| 亚洲成av人**亚洲成av**| 精品国产欧美一区二区| 美女图片一区二区| 99久久国产综合精品色伊| 亚洲成人一区二区| 久久久精品综合| 在线观看精品一区| 亚洲性图久久| 国产成人av一区二区三区在线 | 在线观看国产日韩| 99久久国产综合精品麻豆| 午夜精品久久久久久不卡8050| 亚洲精品一区在线观看| 在线免费亚洲电影| 欧美激情1区2区| 久久精品国产99国产| 国产精品久久毛片| 欧美一级艳片视频免费观看| 国产精品夜夜夜| 91色乱码一区二区三区| 免费在线欧美视频| 日韩美女视频19| 欧美大胆一级视频| 老司机精品视频网站| 欧美日韩中文| 久久成人av少妇免费| 亚洲三级电影网站| 欧美tk丨vk视频| 久久久久综合一区二区三区| 欧美日韩一区二区国产| 国产精华液一区二区三区| 性欧美大战久久久久久久久| 久久精品欧美一区二区三区麻豆| 欧美日韩1区2区| 久久riav二区三区| 欧美日韩国产高清视频| 激情五月播播久久久精品| 亚洲一区二区三区美女| 欧美成人女星排名| 欧美日韩国产在线观看| 亚洲永久免费精品| 亚洲午夜一区| 成人天堂资源www在线| 美女免费视频一区二区| 一色屋精品亚洲香蕉网站| 亚洲精品一区二区在线观看| 欧美视频在线观看一区二区| 久久久久se| 国产精品毛片| 国产精品二区在线| 99精品视频中文字幕| 国产乱码精品一品二品| 天堂成人免费av电影一区| 综合自拍亚洲综合图不卡区| 国产欧美日韩激情| 欧美大尺度电影在线| 欧美在线不卡视频| 在线中文字幕一区二区| 亚洲欧美日韩精品综合在线观看| 亚洲成人直播| 亚洲丰满在线| 国产精品videosex极品| 91在线视频观看| yourporn久久国产精品| 国产高清成人在线| 国产精品一区二区黑丝| 国产又黄又大久久| 蜜桃视频一区二区三区在线观看| 婷婷一区二区三区| 视频一区视频二区在线观看| 亚洲一区视频在线| 亚洲男人的天堂一区二区| 国产精品国模大尺度视频| 欧美国产精品v| 国产人伦精品一区二区| 久久精品视频在线免费观看| 久久婷婷综合激情| 久久久久青草大香线综合精品| 精品国产乱码久久久久久牛牛| 日韩丝袜美女视频| 欧美一区二区三区不卡| 日韩一区二区三区四区| 欧美一区二区视频在线观看2022| 欧美精品电影在线播放| 欧美剧情片在线观看| 欧美日韩电影一区| 制服丝袜亚洲色图| 91麻豆精品91久久久久久清纯| 91精品国产aⅴ一区二区| 欧美精品高清视频| 欧美大胆一级视频| 国产亚洲欧洲997久久综合| 国产亚洲精品精华液| 国产精品三级av在线播放| 国产精品伦一区| 亚洲免费av高清| 亚洲综合免费观看高清完整版在线 | 亚洲自拍偷拍综合| 午夜精品久久久久久久久久久| 午夜av电影一区| 免费成人深夜小野草| 国产精品一区二区男女羞羞无遮挡| 国产福利91精品一区二区三区| 成人一二三区视频| 91免费小视频| 亚洲国产1区| 六月婷婷一区| 欧美色男人天堂| 日韩精品一区二区在线| 久久精品一级爱片|