浠婂ぉ閬囧埌浜嗛渶瑕佸湪 javascript 涓戶鎵跨殑闂錛?/span>
鏌ヤ簡涓浜涘笘瀛愶紝鑷繁鍙堝啓浜嗗嚑涓緥瀛愭祴璇曚簡涓涓嬶紝鎬葷粨濡備笅錛?/span>
js 涓疄鐜扮戶鎵挎湁涓夌鏂規硶錛?/span>
鍋囪鐖剁被涓?/span> Parent, 瀛愮被涓?/span> Child,
絎竴縐嶏紝瀛愮被寮哄埗璋冪敤鐖剁被鏋勯?/span>
function Child(){
聽聽聽聽聽聽 Parent.call(this);
}
絎簩縐嶏紝瀛愮被闂存帴璋冪敤鐖剁被鏋勯?/span>
function Child(){
聽聽聽聽聽聽 this.base = Parent;
聽聽聽聽聽聽 this.base();
}
絎笁縐嶏細璁劇疆鍘熷瀷
function Child(){}
Child.prototype = new Parent();
榪欑鏂瑰紡铏界劧涓嶅鐩磋錛屽嵈搴旇鏄渶鏈夋晥鐜囩殑鏂瑰紡銆?/span>
鍏跺疄 js 鏈韓鏄病鏈変粈涔堢戶鎵夸箣綾葷殑姒傚康鐨勶紝鍙槸涓轟簡浣跨敤鍒╃敤 js 鐨勪竴浜涚壒鎬ц屽姞鐨勩?/span>
js 鐨勫師鍨嬫柟寮?/span> prototype, 浣垮緱璁稿鐨勫伐浣滃彉寰楀鏄撱?/span>
涓涓?/span> function 瀵硅薄鍜屾牴鎹?/span> function 鏋勯犲嚭鏉ョ殑瀵硅薄鏄笉鍚岀殑銆?/span>
涓涓?/span> function 瀵硅薄鐨勫師鍨嬪叾瀹炲氨鏄竴涓牴鎹?/span> function 瀵硅薄鏋勫緩鍑烘潵鐨勫璞°?/span>
璁頒綇錛氳繖涓璞″彲涓?/span> new 鍑烘潵鐨勫璞′笉涓鏍楓傚湪 function 鍐呴儴鐨勪唬鐮佸茍涓嶄細琚墽琛岋紝濡傦細
this.funcName = function() 榪欐牱鐨勪唬鐮併傝?/span> new 鍑烘潵鐨勫璞″垯涓嶇劧錛屼粬鍏鋒湁鎵ц鍚庣殑瀵硅薄鐗規с?/span>
function 鐨勫眬閮ㄥ彉閲忕浉褰撲簬 class 閲岀殑縐佹湁鍙橀噺錛屾棤娉曞湪瀛愮被涓幏鍙栧拰鎿嶄綔銆備絾 this. 鐨勯儴鍒嗘槸鍙互鐨勩?/span>
錛堣繖鏄垜鎺ㄦ柇鐨勶紝娌℃湁浠諱綍鐨勬牴鎹紝褰撶劧涔熸槸鍙互嫻嬭瘯鐨勶級錛?/span>
褰撲竴涓?/span> Child 琚?/span> new 鏃訛紝絎竴浜岀鏂規硶涓紝 js 鎵ц鍣?/span>
1 銆佸厛鍒嗛厤涓涓┖闂達紝錛堢浉褰撲簬 this = new Object() 錛?/span> (msdn 涓湁鍏蜂綋鐨勬弿榪?/span> )
2 銆佹嫹璐濆師鍨嬶細
3 銆佹墽琛屾瀯閫狅細涔熷氨鏄?/span> Child.call(this) 錛堢浉褰撲簬 child(), 姝ゆ椂 this 瀵硅薄鏈夊鹼級錛?/span> msdn 涓湁鎻忚堪錛?/span>
鐒跺悗鎵ц Parent(); 榪欎釜鏃跺?/span> parent 鐨勬瀯閫犲嚱鏁版墽琛屼互涓嬪嚑姝ワ細
1 銆佸皢 parent 鐨?/span> prototype 鎷瘋礉鍒?/span> object 鍖哄煙錛岃繖鏃惰鐩栦簡鍓嶉潰鐨勫尯鍩?/span> ( 濂藉儚嫻嬭瘯璇佹槑 parent 鐨勫師鍨嬪茍涓嶄細琚嫹璐濓紝姝ゆ涓嶄細琚墽琛?/span> )
2 銆佸榪欎釜鍖哄煙鎵ц鍒濆鍖栵紝涔熷氨鏄甯哥殑 function 璋冪敤鐨勮繃紼嬨傦紙鐩稿綋浜?/span> Parent(),this 鍙橀噺鏈夊鹼級
鑰屾櫘閫氱殑 function 璋冪敤搴旇鏄繖涓牱瀛愶細鐢變簬娌℃湁 new 鎿嶄綔絎︼紝鎵浠ユ病鏈変負鍏跺垎閰嶅綋鍓嶇殑 this( 涔熸病鏈夌┖闂?/span> ),
this 琚斁鍒頒簡 window 瀵硅薄涓娿備絾鏄?/span> new 鐨勬椂鍊欐樉鐒朵笉鏄繖鏍楓?/span>
obj.func() 鐨勮皟鐢ㄥ拰 func() 璋冪敤鏄畬鍏ㄤ笉涓鏍風殑錛?/span> obj.func 涓?/span> this 瀵硅薄鏄?/span> obj 瀵硅薄錛岃?/span> func() 璋冪敤 this 瀵硅薄鏄?/span> window 瀵硅薄錛岃繖涓簲璇ュ拰 jvm 涓潤鎬佹柟娉曞拰綾誨疄渚嬫柟娉曡皟鐢ㄧ殑鍖哄埆鐨勫師鐞嗕竴鏍楓?/span>
鍦ㄥ疄鐜頒簡瀵硅薄緇ф壙涔嬪悗錛屾垜寮濮嬮潰涓村埌絎簩涓棶棰橈紝閲嶈澆銆?/span>
js 鎬庢牱瀹炵幇閲嶈澆銆?/span>
1 銆佺畝鍗曠殑閲嶈澆錛?/span>
鍦ㄨ繖縐嶉噸杞戒腑錛屽瓙綾葷殑鏂規硶鏃犻渶璋冪敤鐖剁被鐨勬柟娉曪紝鐩存帴鍦ㄦ墽琛岀埗綾繪瀯閫犱箣鍚庯紝鍐嶆墽琛屽瓙綾葷殑閲嶈澆鏂規硶錛屽 Parent 鐨?/span> toString() 鏂規硶錛岃繖鏃跺彧闇鎵ц this.toString = function(){....} 灝卞彲浠ヤ簡銆?/span>
2 銆佽皟鐢ㄧ埗綾繪柟娉曠殑閲嶈澆錛?/span>
鐢變簬 js 瀹為檯榪愯鏃跺茍娌℃湁鐖剁被銆佸瓙綾諱袱涓疄渚嬬┖闂達紝鎵浠?/span> super.toString() 鑲畾鏄笉琛岀殑錛岃屽湪瀛愮被鐨?/span> toString 鏂規硶涓繘琛?/span> this.toString() 璋冪敤鍙兘寮曡搗鍐呭瓨婧㈠嚭錛屽叾瀹炶繖縐嶄篃鍙互鎯沖姙娉曞仛鍒般?/span>
this.super_toString = this.toString();
this.toString=function(){
聽聽聽聽聽聽 ..............
聽聽聽聽聽聽 this.super_toString();
聽聽聽聽聽聽 ..............
}
鍩烘湰鐨勬柟娉曪紝緗戜笂鍒板閮芥槸錛屽湪 java 涓氨鏄湪 web.xml 娉ㄥ唽涓涓?/span> Listener 錛屽涓嬶細
<listener>
聽聽聽 <listener-class>xp.web.SessionCounter</listener-class>
</listener>
SessionCounter.java 瀹炵幇 javax.servlet.http.HttpSessionListener 鎺ュ彛錛屽垎鍒湪 sessionCreated 鏂規硶鍜?/span> sessionDestroyed 鏂規硶涓鐞?/span> session 鏁扮洰銆?/span>
榪欐牱鐨勬柟娉曟湁涓瀹氱殑闂錛?/span>
1 銆佸浜庣湡姝d粠緗戦〉璁塊棶鐨勫拰鎼滅儲寮曟搸鐨?/span> spider 鏃犳硶鍖哄垎銆?/span>
2 銆佸綋 Tomcat 閲嶅惎鏃訛紝鍔犺澆浜嗕笂嬈℃寔涔呭寲鐨?/span> session 鏃訛紝鏃犳硶鍑嗙‘璁$畻鍦ㄧ嚎鏁般?/span>
絎簩涓棶棰樻垜浠彲浠ヤ笉浜堣冭檻錛岃繖鏄?/span> tomcat 瀹瑰櫒瀹炵幇涓嶆爣鍑嗙殑闂錛屾垜浠瑙e喅鐨勬槸鐨勭涓涓棶棰橈紝濡備綍鐭ラ亾浣犵殑璁塊棶鐨勬槸鐪熷疄鐨勩?/span>
鐢?/span> js 緇曡繃鎼滅儲寮曟搸 錛?/span>
鍋氳繃 pv 緇熻鐨勯兘鐭ラ亾錛屽彲浠ョ敤 script 鐨勬柟寮忓緱鍒頒綘鐪熷疄鐨?/span> pageView 鏁扮洰錛屾垜浠幇鍦ㄨ鍋氱殑灝辨槸榪欐牱鐨勪竴浠朵簨鎯咃紝鎴戜滑鍦ㄦ墍鏈夌殑欏甸潰閮藉姞鍏ヤ竴孌佃瘽錛?/span>
<script type="text/javascript">
document.write ("<iframe src='/sessionCountServlet' width=0 height=0 frameborder=no border=0 MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING=no></iframe>");
</script>
鐒跺悗鎴戜滑鍐欎笂涓涓?/span> servlet 鏉ヨ褰曡繖浜涚湡姝g殑璁塊棶鑰呫?/span>
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SessionCounterServlet extends HttpServlet {
聽聽聽 public SessionCounterServlet() {
聽聽聽聽聽聽聽 super();
聽聽聽 }
聽聽聽 public void doGet(HttpServletRequest request,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 HttpServletResponse response) throws IOException,
聽聽聽聽聽聽聽聽聽聽聽 ServletException {
聽聽聽聽聽聽聽 process(request, response);
聽聽聽 }
聽聽聽 public void doPost(HttpServletRequest request,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 HttpServletResponse response) throws IOException,
聽聽聽聽聽聽聽聽聽聽聽 ServletException {
聽聽聽聽聽聽聽 process(request, response);
聽聽聽 }
聽聽聽 public void process(HttpServletRequest request,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 HttpServletResponse response) throws IOException,
聽聽聽聽聽聽聽聽聽聽聽 ServletException {
聽聽聽聽聽聽聽 SessionCounter.put(request.getSession().getId());
}
}
鎴戜滑鍙互鐪嬪埌榪欎釜 servlet 鍙槸鍋氫簡涓浠朵簨鎯咃紝鍦?/span> process 閲岄潰鍋氫簡 SessionCounter.put(request.getSession().getId()); 榪欎釜鍔ㄤ綔銆?/span>
鎴戜滑鏉ョ湅鐪嬫垜浠殑 SessionCounter 鍋氫簡浜涗粈涔堬細
import javax.servlet.http.*;
import java.util.Hashtable;
public class SessionCounter implements HttpSessionListener {
聽聽聽 public SessionCounter() {
聽聽聽 }
聽聽聽 public static Hashtable m_real = new Hashtable();
聽聽聽 private static long count = 0;
聽聽聽 public void sessionCreated(HttpSessionEvent e) {
聽聽聽聽聽聽聽 count++;
聽聽聽 }
聽聽聽 public void sessionDestroyed(HttpSessionEvent e) {
聽聽聽聽聽聽聽 if (count > 0) {
聽聽聽聽聽聽聽聽聽聽聽 count--;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 m_real.remove(e.getSession().getId());
聽聽聽 }
聽聽聽 public static long getSessionCount() {
聽聽聽聽聽聽聽 return count;
聽聽聽 }
聽聽聽 public static void put(String sessionId){
聽聽聽聽聽聽聽 m_real.put(sessionId,"1");
聽聽聽 }
聽聽聽 public static int getRealCount(){
聽聽聽聽聽聽聽 return m_real.size();
聽聽聽 }
}
鎴戜滑璁板綍浜嗕竴涓潤鎬佺殑 hash 琛ㄦ潵璁板綍嬋媧葷姸鎬佺殑 sessionid 錛屽茍鍦?/span> session 閿姣佺殑鏃跺欏皢榪欎釜 sessionid 緗負絀恒?/span>
鎬庝箞鎶?/span> servlet 閰嶇疆鍒?/span> web 搴旂敤涓垜灝變笉緗楀攩浜嗐?/span>