浠庝綔鐢ㄥ煙鑼冨洿鏉ヨ,Servlet鐨勪綔鐢ㄥ煙鏈塖ervletContext,HttpSession,ServletRequest.
Context鑼冨洿:
ServletContextListener:
瀵逛竴涓簲鐢ㄨ繘琛屽叏灞鐩戝惉.闅忓簲鐢ㄥ惎鍔ㄨ屽惎鍔?闅忓簲鐢ㄦ秷澶辮屾秷澶變富瑕佹湁涓や釜鏂規(guī)硶:
contextDestroyed(ServletContextEvent event)
鍦ㄥ簲鐢ㄥ叧闂殑鏃跺欒皟鐢?BR>contextInitialized(ServletContextEvent event)
鍦ㄥ簲鐢ㄥ惎鍔ㄧ殑鏃跺欒皟鐢?BR>
榪欎釜鐩戝惉鍣ㄤ富瑕佺敤浜庝竴浜涢殢鐫搴旂敤鍚姩鑰岃瀹屾垚鐨勫伐浣?涔熷氨鏄緢澶氫漢璇寸殑鎴戞兂鍦ㄥ鍣?BR>鍚姩鐨勬椂鍊欏共..........
涓鑸潵璇村"鍏ㄥ眬鍙橀噺"鍒濆鍖?濡?BR>public void contextInitialized(ServletContextEvent event){
ServletContex sc = event.getServletContext();
sc.setAttribute(name,value);
}
浠ュ悗浣犲氨鍙互鍦ㄤ換浣晄ervlet涓璯etServletContext().getAttribute(name);
鎴戞渶鍠滄鐢ㄥ畠鏉ュ仛瀹堟姢鎬у伐浣?灝辨槸鍦╟ontextInitialized(ServletContextEvent event)
鏂規(guī)硶涓疄鐜頒竴涓猅imer,鐒跺悗灝辮搴旂敤鍦ㄦ瘡嬈″惎鍔ㄧ殑鏃跺欒榪欎釜Timer宸ヤ綔:
public void contextInitialized(ServletContextEvent event){
timer = new Timer();
timer.schedule(new TimerTask(){
public void run(){
//do any things
}
},0,鏃墮棿闂撮殧);
}
鏈変漢璇碩imer鍙兘瑙勫畾浠庣幇鍦ㄥ紑濮嬬殑澶氶暱鏃墮棿鍚?姣忛殧澶氫箙鍋氫竴嬈′簨鎴栧湪浠涔堟椂闂村仛
涓嬈′簨,閭f垜鎯沖湪姣忔湀1鍙鋒垨姣忓ぉ12鐐瑰仛涓欏瑰伐浣滃浣曞仛鍛?
浣犲彧瑕佽涓涓棿闅?鐒跺悗姣忔鍒ゆ柇涓涓嬪綋鏃舵槸涓嶆槸閭d釜鏃墮棿孌靛氨琛屼簡鍟?姣斿姣忔湀涓鍙峰仛,閭d綘
鏃墮棿闂撮殧璁句負(fù)澶?鍗?4灝忔椂涓涓驚鐜?鐒跺悗鍦╮un鏂規(guī)硶涓垽鏂綋鏃舵棩鏈焠ew Date().getDate()==1
灝辮浜嗗晩.濡傛灉鏄瘡澶╃殑12鐐?閭d綘鏃墮棿闂撮殧璁句負(fù)灝忔椂,鐒跺悗鍦╮un涓垽鏂璶ew Date().getHour()
==12,鍐嶅仛鏌愪簨灝辮浜?
ServletContextAttributeListener:
榪欎釜鐩戝惉鍣ㄤ富瑕佺洃鍚琒ervletContex瀵硅薄鍦╯etAttribute()鍜宺emoveAttribute()鐨勪簨浠?娉ㄦ剰
涔熷氨鏄竴涓?鍏ㄥ眬鍙橀噺"鍦ㄨAdd(絎竴嬈et),replace(瀵瑰凡鏈夌殑鍙橀噺閲嶆柊璧嬪?鍜宺emove鐨勬椂鍊?
鍒嗗埆璋冪敤涓嬮潰涓変釜鏂規(guī)硶:
public void attributeAdded(ServletContextAttributeEvent scab)榪欎釜鏂規(guī)硶涓嶄粎鍙互鐭ラ亾
鍝簺鍏ㄥ眬鍙橀噺琚姞榪涙潵,鑰屼笖鍙幏鍙栧鍣ㄥ湪鍚姩鏃惰嚜鍔ㄨ緗簡鍝簺context鍙橀噺:
public void attributeAdded(ServletContextAttributeEvent scab){
System.out.println(scab.getName());
}
public void attributeRemoved(ServletContextAttributeEvent scab)
public void attributeReplaced(ServletContextAttributeEvent scab)
Session鑼冨洿:
HttpSessionListener:
榪欎釜鐩戝惉鍣ㄤ富瑕佺洃鍚竴涓猄ession瀵硅薄琚敓鎴愬拰閿姣佹椂鍙戠敓鐨勪簨浠?瀵瑰簲鏈変袱涓柟娉?
public void sessionCreated(HttpSessionEvent se)
public void sessionDestroyed(HttpSessionEvent se)
涓鑸潵璇?涓涓猻ession瀵硅薄琚玞reate鏃?鍙互璇存槑鏈変竴涓柊瀹㈢榪涘叆.鍙互鐢ㄦ潵綺楃暐緇熻鍦ㄧ嚎浜?BR>鏁?娉ㄦ剰榪欎笉鏄簿紜殑,鍥犱負(fù)榪欎釜瀹㈡埛绔彲鑳界珛鍗沖氨鍏抽棴浜?浣唖essionDestroyed鏂規(guī)硶鍗翠細(xì)鎸変竴瀹?BR>鐨勭瓥鐣ュ緢涔呬互鍚庢墠浼?xì)鍙戠?
HttpSessionAttributeListener:
鍜孲ervletContextAttributeListener涓鏍?瀹冪洃鍚竴涓猻ession瀵硅薄鐨凙ttribut琚獳dd(涓涓壒瀹?BR>鍚嶇О鐨凙ttribute姣忎竴嬈¤璁劇疆),replace(宸叉湁鍚嶇О鐨凙ttribute鐨勫艱閲嶈)鍜宺emove鏃剁殑浜嬩歡.
瀵瑰氨鐨勬湁涓変釜鏂規(guī)硶.
public void attributeAdded(HttpSessionBindingEvent se)
public void attributeRemoved(HttpSessionBindingEvent se)
public void attributeReplaced(HttpSessionBindingEvent se)
涓婇潰鐨勫嚑涓洃鍚櫒鐨勬柟娉?閮芥槸鍦ㄧ洃鍚簲鐢ㄩ昏緫涓璼ervlet閫昏緫涓彂鐢熶簡浠涔堜簨,涓鑸殑鏉ヨ.
鎴戜滑鍙瀹屾垚閫昏緫鍔熻兘,姣斿session.setAttribute("aaa","111");鎴戝彧瑕佹妸涓涓悕涓篴aa鐨勫彉閲?BR>鏀懼湪session涓互渚夸互鍚庢垜鑳借幏鍙栧畠,鎴戝茍涓嶅叧蹇冨綋session.setAttribute("aaa","111");鍙戠敓鏃?BR>鎴戣繕瑕佸共浠涔?(褰撶劧鏈変簺鏃跺欒鍒╃敤鐨?,浣嗗浜庝笅闈㈣繖涓洃鍚櫒,浣犲簲璇ュソ濂藉彂瑙d竴涓?
HttpSessionBindingListener:
涓婇潰鐨勭洃鍚櫒閮芥槸浣滀負(fù)涓涓嫭绔嬬殑Listener鍦ㄥ鍣ㄤ腑鎺у埗浜嬩歡鐨?鑰孒ttpSessionBindingListener
瀵瑰湪涓瀵硅薄涓洃鍚瀵硅薄鐨勭姸鎬?瀹炵幇浜嗚鎺ュ彛鐨勫璞″鏋滆浣滀負(fù)value琚玜dd鍒頒竴涓猻ession涓垨浠?BR>session涓璻emove,瀹冨氨浼?xì)鐭ラ亾鑷繁宸簿l忎綔涓轟竴涓猻ession瀵硅薄鎴栧凡緇忎粠session鍒犻櫎,榪欏浜庝竴浜涢潪
綰疛AVA瀵硅薄,鐢熷懡鍛ㄦ湡闀夸簬session鐨勫璞?浠ュ強鍏跺畠闇瑕侀噴鏀捐祫婧愭垨鏀瑰彉鐘舵佺殑瀵硅薄闈炲父閲嶈.
姣斿:
session.setAttribute("abcd","1111");
浠ュ悗session.removeAttribute("abcd");鍥犱負(fù)abcd鏄竴涓瓧絎︿腑,浣犱粠session涓璻emove鍚?瀹冨氨浼?BR>鑷姩琚瀮鍦懼洖鏀跺櫒鍥炴敹,鑰屽鏋滄槸涓涓猚onnection:(鍙槸涓句緥,浣犲崈涓囦笉瑕佸姞connection寰session
涓姞鍏?
session.setAttribute("abcd",conn);
浠ュ悗session.removeAttribute("abcd");榪欐椂榪欎釜conn琚粠session涓璻emove浜?浣犲凡緇忔棤娉曡幏鍙栧畠
鐨勫彞鏌?鎵浠ヤ綘鏍規(guī)湰娌℃硶鍏抽棴瀹?鑰屽湪娌℃湁remove涔嬪墠浣犳牴鏈笉鐭ラ亾浠涔堟椂鍊欒琚玶emove,浣犲張鏃犳硶
close(),閭d箞榪欎釜connection瀵硅薄灝辨浜?鍙﹀榪樻湁涓浜涘璞″彲浠ュ湪琚姞鍏ヤ竴涓猻ession鏃惰閿佸畾
榪樿琚玶emove鏃惰瑙i攣,搴斿洜浣犲湪紼嬪簭涓棤娉曞垽鏂粈涔堟椂鍊欒remove(),add榪樺ソ鎿嶄綔,鎴戝彲浠ュ厛鍔犻攣
鍐峚dd,浣唕emove灝卞悗浣犲氨鎵句笉鍒板畠鐨勫彞鏌勪簡,鏍規(guī)湰娌℃硶瑙i攣,鎵浠ヨ繖浜涙搷浣滃彧鑳藉湪瀵硅薄鑷韓涓疄鐜?
涔熷氨鏄湪瀵硅薄琚玜dd鏃舵垨remove鏃墮氱煡瀵硅薄鑷繁鍥炶皟鐩稿簲鐨勬柟娉?
MyConn extends Connection implements HttpSessionBindingListener{
public void valueBound(HttpSessionBindingEvent se){
this.initXXX();
}
public void valueUnbound(HttpSessionBindingEvent se){
this.close();
}
}
session.setAttribute("aaa",new MyConn());
榪欐椂濡傛灉璋冪敤session.removeAttribute("aaa"),鍒欒Е鍙憊alueUnbound鏂規(guī)硶,灝變細(xì)鑷姩鍏抽棴鑷繁.
鑰屽叾瀹冪殑闇瑕佹敼鍙樼姸鎬佺殑瀵硅薄浜嗘槸涓鏍?
鍙﹀榪樻湁涓涓狧ttpSessionActivationListener鐩戝惉鍣ㄦ槸瀹炵幇鍒嗗竷寮忓簲鐢ㄤ腑session鍚屾鐨?涓嶄綔
澶氫粙緇?濡傛灉鏈夎瀹炵幇璇ュ姛鑳界殑鏈嬪弸鍙互鍜屾垜鑱旂郴.
鍦╯ervlet2.4涓?瀵逛簬request鑼冨洿宸茬粡瀹炵幇瀵瑰簲鐨勭洃鍚櫒:
ServletRequestListener錛孲ervletRequestAttributeListener