锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
浠婂ぉ閬囧埌浜嗛渶瑕佸湪
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>
鍐嶅脊鍑虹殑鑿滃崟涓夋嫨闇瑕佹墿灞曠殑鏁版嵁搴撶被鍨嬨?br />
鐐瑰嚮宸︿笂瑙扨roperty鍥炬爣錛屽脊鍑烘ā鏉胯緗獥鍙c?br />
鍦ㄧ獥鍙d腑璁劇疆鐩稿簲鐨凷ql鐢熸垚妯℃澘銆?
]]>
1.1.1.
聽聽聽
涓夌鏂規硶
1.1.2.
聽聽聽
鎬葷粨錛?/font>
1.1.3.
聽聽聽
鐚滄祴鍜屽亣鎯?/font>
1.2.
鏂規硶閲嶈澆
1.1.4.
聽聽聽
涓ょ鏂規硶
]]>
]]>
]]>
<STYLE>
DIV .head1
{
聽background-color: yellow;
}
DIV.head2
{
聽background-color: red;
}
</STYLE>
灞曠幇鏍峰紡錛?/font>
<div class="head1">div1</div>
<span class="head1">span1</span>
<div class="head2">div1</div>
<span class="head2">span1</span>
<div>
<div class="head1">div2</div>
<span class="head1">span2</span>
</div>
<p>
<div class="head1">div2</div>
<span class="head1">span2</span>
</p>
絎竴閮ㄥ垎錛欽SP鍜孞2EE
1銆?浠涔堟槸javabean
javabean鐨勫睘鎬у垎涓哄洓綾伙細
1銆乻imple錛氱畝鍗曞睘鎬?br />propName
getter:getpropName()
setter:setpropName()
2銆両ndex錛氱儲寮曞睘鎬?br />propName
getter:[] getpropName()
setter:setpropName()
getterI: obj getpropName(int i)
setterI: setpropName(int i,obj)
3銆乥ound錛氳Е鍙憄ropertychange浜嬩歡鐨勫睘鎬?br />鎺ュ彛鍜屾櫘閫氬睘鎬ф病鏈変粈涔堜笉鍚岋紝鍙槸鍦╯etter閲屾敮鎸佽Е鍙戜簨浠秔ropertychange.
4銆乧onstrained錛氶檺鍒剁被灞炴?br />鎺ュ彛鍜屾櫘閫氬睘鎬т竴鑷達紝setter鏀寔bound,鍙﹀錛?br />鍦╯etter涓敮鎸佽Е鍙戜簨浠惰鐩稿叧鐩戝惉緇勪歡鏉ュ垽鏂槸鍚﹀彲浠ヨ緗紝濡傛灉涓嶈錛屽叾浠栫粍浠朵細鎶涘嚭propertyvetoException
浜嬩歡妯″瀷錛?br />鍩轟簬婧愬拰listener鐨勭殑浜嬩歡妯″瀷銆俹bserver妯″紡銆?br />浜嬩歡錛歫ava.util.EventObject鍙婂叾瀛愮被銆?br />鐩戝惉鑰咃細java.util.EventListener鍙婂叾瀛愮被銆?br />婧愬璞★細鎺ュ彛蹇呴』鏍囧噯
public void add< ListenerType>(< ListenerType> listener)
public void remove< ListenerType>(< ListenerType> listener)
浜嬩歡閫傞厤鍣細
鍙互鐢ㄤ綔紜畾浼氬仛鍑哄弽鏄犵殑浜嬩歡鍝嶅簲鑰呯殑鐢ㄩ斻?/p>
2銆佸湪jsp涓嬌鐢?br /> 3銆乯sp涓璲avabean鐨剆cope 1銆? ejb
application scope:搴旂敤紼嬪簭綰у埆鐨勩?br />session scope:浼氳瘽綰у埆
request scope:璇鋒眰綰у埆
page scope錛氶〉闈㈢駭鍒?/p>
鐗規畩鐨勯潰鍚戞湇鍔″櫒绔殑javabeans.
鍖呭惈sessionbean鍜宔ntitybean涓ょ
home
Home 鎺ュ彛瀹氫箟浜嗗垱寤烘煡鎵懼垹闄JB 榪滅▼鎺ュ彛瀵硅薄鎴栬匛JB 鏈嶅姟鐨勬柟娉曞鎴風
搴旂敤紼嬪簭閫氳繃浣跨敤JNDI 鎶鏈畾浣岺ome 鎺ュ彛鐨勪綅緗竴鏃﹁幏寰桯ome 鎺ュ彛鐨勫疄渚嬪氨鍙互
鍒╃敤瀹冪殑create()鏂規硶鍒涘緩EJB 榪滅▼鎺ュ彛鐨勫疄渚嬪璞?br />remote鎺ュ彛
榪滅▼璋冪敤鎺ュ彛 (鎴栬呯畝縐頒負榪滅▼鎺ュ彛Remote Interface)鏄EJB 瀵硅薄鏂規硶鐨勬誨皝瑁?br />鍦ㄨ繙紼嬭皟鐢ㄦ帴鍙d腑澹版槑浜咵JB 瀵硅薄鐨勬柟娉曚絾鏄茍娌℃湁鍏蜂綋瀹炵幇榪欎簺鏂規硶銆?setproperty id="Name" property="*">
3銆乯sp涓璲avabean鐨剆cope
application scope:搴旂敤紼嬪簭綰у埆鐨勩?br />session scope:浼氳瘽綰у埆
request scope:璇鋒眰綰у埆
page scope錛氶〉闈㈢駭鍒?/p>
1銆? ejb
鐗規畩鐨勯潰鍚戞湇鍔″櫒绔殑javabeans.
鍖呭惈sessionbean鍜宔ntitybean涓ょ
home
Home 鎺ュ彛瀹氫箟浜嗗垱寤烘煡鎵懼垹闄JB 榪滅▼鎺ュ彛瀵硅薄鎴栬匛JB 鏈嶅姟鐨勬柟娉曞鎴風
搴旂敤紼嬪簭閫氳繃浣跨敤JNDI 鎶鏈畾浣岺ome 鎺ュ彛鐨勪綅緗竴鏃﹁幏寰桯ome 鎺ュ彛鐨勫疄渚嬪氨鍙互
鍒╃敤瀹冪殑create()鏂規硶鍒涘緩EJB 榪滅▼鎺ュ彛鐨勫疄渚嬪璞?br />remote鎺ュ彛
榪滅▼璋冪敤鎺ュ彛 (鎴栬呯畝縐頒負榪滅▼鎺ュ彛Remote Interface)鏄EJB 瀵硅薄鏂規硶鐨勬誨皝瑁?br />鍦ㄨ繙紼嬭皟鐢ㄦ帴鍙d腑澹版槑浜咵JB 瀵硅薄鐨勬柟娉曚絾鏄茍娌℃湁鍏蜂綋瀹炵幇榪欎簺鏂規硶銆?/p>