ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩一区不卡,色视频在线观看福利,亚洲精品欧美http://www.aygfsteel.com/esprit/AZA~AZA~FIGHTING......zh-cnMon, 28 Jul 2025 20:29:07 GMTMon, 28 Jul 2025 20:29:07 GMT60- [转]IE与Firefox对CSSè§£æžçš„区åˆ?/title><link>http://www.aygfsteel.com/esprit/archive/2006/09/21/71099.html</link><dc:creator>esprit</dc:creator><author>esprit</author><pubDate>Thu, 21 Sep 2006 06:49:00 GMT</pubDate><guid>http://www.aygfsteel.com/esprit/archive/2006/09/21/71099.html</guid><wfw:comment>http://www.aygfsteel.com/esprit/comments/71099.html</wfw:comment><comments>http://www.aygfsteel.com/esprit/archive/2006/09/21/71099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/esprit/comments/commentRss/71099.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/esprit/services/trackbacks/71099.html</trackback:ping><description><![CDATA[
<p>1ã€IE与Firefox下对CSSè§£æžçš„区åˆ?˜q™æ˜¯æˆ‘在使用ä¸çš„一些ç»éªŒï¼Œæ‹¿å‡ºæ¥å’Œå¤§å®¶åˆ†äínåQŒå¸Œæœ›å¤§å®¶ç‘ô¾l?/p>
<p>
<strong>寚w«˜åº¦çš„è§£æž</strong>
</p>
<p>IEåQšå°†æ ÒŽ®å†…容的高度å˜åŒ–,包括未定义高度的囄¡‰‡å†…容åQŒå³ä½¿å®šä¹‰äº†é«˜åº¦åQŒå½“内容‘…过高度æ—Óž¼Œž®†ä‹É用实际高度ã€?/p>
<p>FirefoxåQšæ²¡æœ‰å®šä¹‰é«˜åº¦æ—¶åQŒå¦‚果内容ä¸åŒ…括了图片内容,MFçš„é«˜åº¦è§£æžæ˜¯æ ÒŽ®å°åˆ·æ ‡å‡†åQŒè¿™æ ·å°±ä¼šé€ æˆå’Œå®žé™…内定w«˜åº¦ä¸½W¦åˆçš„æƒ…况;当定义了高度,但是内容‘…过高度æ—Óž¼Œå†…容会超出定义的高度åQŒä½†æ˜¯åŒºåŸŸä‹Éç”¨çš„æ ·å¼ä¸ä¼šå˜åŒ–åQŒé€ æˆæ ·å¼é”™ä½ã€?/p>
<p>¾l“论åQšå¤§å®¶åœ¨å¯ä»¥¼‹®å®šå†…容高度的情况下最好定义高度,如果真的没有办法定义高度åQŒæœ€å¥½ä¸ç”¨ä‹Éç”¨è¾¹æ¡†æ ·å¼ï¼Œå¦åˆ™æ ·å¼è‚¯å®šä¼šå‡ºçŽ°æØœä¹±ï¼</p>
<p>
<strong>img对象altå’Œtitle的解æž?br /></strong>altåQšå½“照片ä¸å˜åœ¨æˆ–者load错误时的æç¤ºåQ?br />titleåQšç…§ç‰‡çš„tip说明ã€?br />在IEä¸å¦‚果没有定义titleåQŒalt也å¯ä»¥ä½œä¸ºimgçš„tip使用åQŒä½†æ˜¯åœ¨MFä¸ï¼Œä¸¤è€…å®Œå…¨æŒ‰ç…§æ ‡å‡†ä¸çš„定义ä‹Éç”?/p>
<p>¾l“论åQšå¤§å®¶åœ¨å®šä¹‰img对象æ—Óž¼Œæœ€åŽå°†altå’Œtitle对象都写全,ä¿è¯åœ¨å„¿Uæµè§ˆå™¨ä¸éƒ½èƒ½æ£å¸æ€‹Éç”?/p>
<p>
<strong>其他的细节差åˆ?br /></strong>å½“ä½ åœ¨å†™css的时候,特别是用float: leftåQˆæˆ–rightåQ‰æŽ’列一½Hœå›¾ç‰‡æ—¶åQŒä¼šå‘现在firefoxé‡Œé¢æ£å¸¸è€ŒIEé‡Œé¢æœ‰é—®é¢˜ã€‚æ— è®ÞZ½ 用margin:0,˜q˜æ˜¯border: 0æ¥çº¦æŸï¼Œéƒ½æ— ‹¹ŽäºŽäº‹ã€?/p>
<p>其实˜q™é‡Œ˜q˜æœ‰å¦å¤–一个问题,ž®±æ˜¯IE对于½Iºæ ¼çš„处ç†ï¼Œfirefox是忽略的而IE对于å—与å—之间的½Iºæ ¼æ˜¯å¤„ç†çš„。也ž®±æ˜¯è¯´ä¸€ä¸ªdiv¾l“æŸåŽè¦ç´§æŽ¥ç€ä¸€ä¸ªdiv写,ä¸é—´ä¸è¦æœ‰å›žè½¦æˆ–è€…ç©ºæ ¹{€‚ä¸ç„¶ä¹Ÿè®æ€¼šæœ‰é—®é¢˜ï¼Œæ¯”如3pxçš„å差,而且˜q™ä¸ªåŽŸå› å¾ˆéš¾å‘现ã€?/p>
<p>éžå¸¸ä¸èµ°˜q的是我åˆç¢°åˆîCº†˜q™æ ·çš„问题,多个imgæ ‡ç¾˜qžç€åQŒç„¶åŽå®šä¹‰çš„float: leftåQŒå¸Œæœ›è¿™äº›å›¾ç‰‡å¯ä»¥è¿žèµäh¥ã€‚但是结果在firefoxé‡Œé¢æ£å¸¸è€ŒIEé‡Œé¢æ˜„¡¤ºçš„æ¯ä¸ªimg都相隔了3pxã€‚æˆ‘æŠŠæ ‡½{¾ä¹‹é—´çš„½Iºæ ¼éƒ½åˆ 除都没有作用ã€?/p>
<p>åŽæ¥çš„è§£å†Ïx–¹æ³•是在img外é¢å¥—liåQŒåƈ且对li定义margin: 0åQŒè¿™æ ·å°±è§£å†³äº†IEå’Œfirefox的显½Cºå差。IE对于一些模型的解释会äñ”ç”Ÿå¾ˆå¤šé”™è¯¯é—®é¢˜ï¼Œåªæœ‰å¤šå¤šž®è¯•æ‰èƒ½å‘çŽ°åŽŸå› ã€?/p>
<p>
<strong>2ã€åµŒå¥—DIV:父DIV的高度ä¸èƒ½æ ¹æ®åDIV自动å˜åŒ–的解å†Ïx–¹æ¡?/strong>
<br /><div id="parent"><br /><div id="content"> </div><br /></div></p>
<p>当Content内容多时åQŒå³ä½¿parent讄¡½®äº†é«˜åº?00%或auto,在ä¸åŒæµè§ˆå™¨ä¸‹è¿˜æ˜¯ä¸èƒ½å®Œå¥½çš„自动伸展ã€?解决æ–ÒŽ¡ˆ</p>
<p><div id="parent"><br /><div id="content"></div><br /><div style="font: 0px/0px sans-serif;clear: both;display: block"> </div><br /></div></p>
<p>åœ¨å±‚çš„æœ€ä¸‹æ–¹äº§ç”Ÿä¸€ä¸ªé«˜åº¦äØ“1的空æ û|¼Œå¯è§£é™¤è¿™ä¸ªé—®é¢?/p>
<p>
<strong>3ã€CSS DIV å¦ä¹ ½W”è®°</strong>
<br />一ã€åŸºæœ¬ä¸Šæ¯ä¸ªåŒºå—çš„div éƒ½è¦æœ‰è‡ªå·Þqš„idåQŒæœ¾lä¸åŒåŠŸèƒ½çš„åŒºå—用åŒä¸€ä¸ªid/class</p>
<p>äºŒã€æ¯ä¸ªç¨å¤§çš„区å—div åŽé¢éƒ½è·Ÿä¸€ä¸?lt;!â€?/id â€?gt;æ ‡è®°å¼€å§‹ã€ç»“æ?/p>
<p>三ã€éšè—æ–‡å—çš„åˆä¸€¿Uæ–¹æ³?TEXT-INDENT: -9999px; LINE-HEIGHT: 0</p>
<p>å››ã€åéy妙地处ç†òq¶åˆ—的两åˆ?<br />1)<br />å›_ˆ—为P, width=44.5%, float=left<br />左列为P.first, border-right: #a7a7a7 1px solid, width=45%<br />2)<br />å›_ˆ—#right, margin-left:50%<br />左列#left, float=left,width=50% border-right:#a7a7a7 1px solid</p>
<p>ä»¥ä¸Šä¸¤ç§æ–ÒŽ³•关键点在于选择其ä¸ä¸€ä¸ªäØ“float=left</p>
<p>五ã€éšæœºçš„åˆ‡æ¢å›„¡‰‡åQ?br />#random {<br />BACKGROUND: url(/rotate.php);<br />}<br />˜q™ä¸ªæ–ÒŽ³•很åéy妙ã€?/p>
<p>4ã€å…³äºŽdiv的高度自适应<br /> 
 今天ž®å°¿è®©æˆ‘帮他的页å解决一个问题,ž®±æ˜¯div的高度自适应åQŒä¹Ÿž®±æ˜¯åœ¨ä¸€ä¸ªçˆ¶¾U§divä¸åµŒå¥—一左一å³ä¸¤ä¸ªådivåQŒå³è¾¹çš„ådiv内容坿— 陿‰©å±•,è€?
å¯ä»¥ä½¿å¾—父çñ”divçš„é«˜åº¦èƒ½è¢«æ— é™æ‹‰é•¿ï¼Œç”¨ä¸€èˆ¬çš„布局æ–ÒŽ³•åQŒåœ¨IEä¸å¯ä»¥æ£¼‹®æµè§ˆï¼Œåœ¨Mozillaä¸çˆ¶¾U§div的高度就固定åœ?0pxå·¦å³åQŒæ— 法自适应
高度åQŒheight:auto也ä¸è¡Œï¼Œæ€Žä¹ˆåŠžå‘¢ã€‚ç½‘ä¸Šå‚考到一½‹‡èµ„料,è¦å®žçŽ°è‡ªé€‚åº”é«˜åº¦åQŒdiv层必™åÕd…·æœ‰float属性,于是我开始动手试验,
float:leftçš„è¯åQŒdivž®Þp·‘åˆ°é¡µé¢æœ€å·¦è¾¹åŽÖMº†åQŒè¿™å¥½åŠžåQŒæˆ‘在它的外é¢å†å¥—一层divåQŒæŠŠä½ç½®å®šå¥½åQŒé‚£ä¹ˆé‡Œé¢çš„ž®Þq®—float:left也ä¸ä¼šè¢«
¿UÕdЍä½ç½®äº†ã€?/p>
<p>xhtml:<br />===============</p>
<p><div id="container_father"><br /> <div id="container"><br />  <div id="panel"> test<br /><br />  test<br /><br />  test<br /><br />   <!â€?id="panel" â€?gt;<br />  </div><br />  <div id="sidebar"><br />  <ul><br />   <li class="current">预安装检æŸ?lt;/li><br />   <li>阅读 PFC 授æƒåè®®</li><br />   <li>åˆå§‹åŒ–æ•°æ®åº“</li><br />   <li>完æˆå®‰è£…</li><br />   </ul><br />   <!â€?id="sidebar" â€?gt;<br />  </div><br />  <!â€?id="container" â€?gt;<br /> </div><br /></div></p>
<p>CSS<br />=================<br />#container_father {<br />margin-left: auto;<br />margin-right: auto;<br />padding: 0px;<br />width: 750px;<br />}</p>
<p>#container {<br />Â width: 750px;<br />Â border: 1px solid #cccccc;<br />Â padding: 8px;<br />Â margin: 0px;<br />Â background-color: #F1F3F5;<br />Â float: left;<br />}</p>
<p>FRom: http://ulean.zg163.net/</p>
<p>
<strong>5ã€?Â æ·±å…¥æ ‡å‡†  ~  The IE Doubled Float-Margin Bug(IEåŒå€æÕQ动边界Bug)</strong>
<br />什么å‘生故障?</p>
<p>一
ŒD‰|— é”™çš„ä»£ç æŠŠä¸€ä¸ªå±…å·¦æÕQåŠ?float:left)çš„å…ƒç´ æ”¾¾|®è¿›ä¸€ä¸ªå®¹å™¨ç›’(box)åQŒåƈ在æÕQåŠ¨å…ƒç´ ä¸Šä½¿ç”¨äº†å·¦è¾¹ç•Œ(margin-left)æ¥ä×o它和
容器的左边äñ”生一ŒDµè·¼›…R€‚看èµäh¥ç›¸å½“的简å•,对å—åQŸä½†ç›´è‡³å®ƒè¢«åœ¨IE/Win䏿µè§ˆäØ“æ¢ï¼Œåœ¨æµè§ˆå™¨ä¸å±…å·¦æÕQåŠ¨å…ƒç´ çš„è¾¹ç•Œé•¿åº¦è¢«ç¥ž¿U˜åœ°¾˜ÖMº†ä¸€å€ï¼</p>
<p>情况应该如何åQ?/p>
<p>下é¢çš„图释展½CÞZº†ä¸€ä¸ªç®€å•çš„div(茶色的盒å?包å«ç€ä¸€ä¸ªå±…å·¦æÕQ动的div(¾l¿è‰²çš„ç›’å?。æÕQåŠ¨å…ƒç´ æœ‰ä¸€ä¸?00px的左边界åQŒä‹É容器盒与它的左边¾~˜ä¹‹é—´äñ”生了一ä¸?00px的间隙。到现在为æ¢åQŒä¸€ç›´éƒ½˜q˜ä¸é”™ã€?/p>
<p>.floatbox {<br />float: left;<br />width: 150px;<br />height: 150px;<br />margin: 5px 0 5px 100px;<br />/*This last value applies the 100px left margin */<br />}</p>
<p>陈旧的IE“åŒå€å æ®â€?/p>
<p>åŽŸæ ·çš„ç›¸åŒä»£ç 被在IE/Win䏿µè§ˆæ—¶ä»¥äº›å¾®ä¸åŒçš„æ–¹å¼æ˜„¡¤ºåQŒä¸‹é¢çš„å›ùN‡Šå±•示了IE/Win在布局上所åšçš„ã€?/p>
<p>˜q™äؓ什么会å‘生åQŸåˆ«é—®è¿™¿U傻问题åQè¿™ž®±æ˜¯IEåQŒè®°å¾—å—åQŸç¬¦åˆæ ‡å‡†åªæ˜¯ç†æƒ³çš„状况åQŒä¸æŒ‡æœ›å®žçްåQŒè¿™ä¸ªç®€å•的事实æ£éªŒè¯äº†ã€?/p>
<p>é‡ç‚¹</p>
<p>˜q™ä¸ªBug仅当‹¹®åŠ¨è¾¹ç•Œå’ŒæÕQåŠ¨å…ƒç´ çš„æ–¹å‘ç›¸åŒæ—¶å‡ºçŽ°åœ¨‹¹®åŠ¨å…ƒç´ å’Œå®¹å™¨ç›’çš„å†…è¾¹ç¼˜ä¹‹é—´åQŒåœ¨˜q™ä¹‹åŽçš„ä»ÀL„有ç€ç›æ€¼¼è¾¹ç•Œçš„æÕQåŠ¨å…ƒç´ ä¸ä¼šå‘ˆçްåŒå€è¾¹ç•Œã€‚åªæœ‰ç‰¹å®šçš„‹¹®åŠ¨è¡Œçš„½W¬ä¸€ä¸ªæÕQåŠ¨å…ƒç´ ä¼šé釘q™ä¸ªBug。åƒå±…å·¦çš„æƒ…å†µä¸€æ øP¼ŒåŒå€è¾¹ç•ŒåŒæ ïL¥ž¿U˜åœ°æ˜„¡¤ºåœ¨å±…å³çš„ç›¸åŒæ–¹å¼ã€?/p>
<p>最åŽï¼Œä¿®å¤åŠžæ³•åQ?/p>
<p>ç›?
到现åœ?04òq?æœ?˜q™ä¸ªBugä¸€ç›´è¢«è®¤äØ“æ˜¯æ— æ³•ä¿®å¤çš„åQŒé€šå¸¸ç”¨æ¥æ›¿ä»£é”™è¯¯çš„边界的控制æ–ÒŽ³•如:一个ä¸å¯è§†‹¹®åŠ¨å…ƒç´ çš„å·¦è¾¹è·åQŒè¿žåŒä¸€ä¸ªå†…嵌的盒åä¸€èµøP¼Œå?
视的盒å装在ä¸å¯è§†æÕQåŠ¨å…ƒç´ é‡ŒåQ›æˆ–者ä‹É用技巧仅对IE/Win讑֮šè¾¹ç•Œçš?/2倹{€‚è¿™åŠžæ³•ç”Ÿæ•ˆäº†ï¼Œä½†æ˜¯æ˜¯æØœä¹Þqš„而且æžç³Ÿäº†å¹²å‡€çš„æºä»£ç 。丘q‡çŽ°åœ¨å…¨éƒ¨ç»“æ?
了�/p>
<p>Steve Clasonå‘现了一个修å¤åŠžæ³•ï¼Œæè¿°åœ¨ä»–çš„Guest Demo里,修å¤äº†åŒå€è¾¹ç•Œå’Œå›´ç»•文嗾~©è¿›Bug。这是一个ç»å…¸çš„IEçš„Bugä¿®å¤åŠžæ³•åQŒä‹É用一个属性æ¥ä¿®å¤å½±å“ä¸ç›¸å…›_±žæ€§çš„Bugã€?/p>
<p>现在如何æ¥åšåQ?/p>
<p>ç ”ç©¶å®ƒï¼Œ½Ž€å•地ž®†{display: inline;}讄¡½®¾l™æÕQåŠ¨å…ƒç´ å°±æ˜¯å…¨éƒ¨æ‰€éœ€åšçš„åQ是的,å¬è“væ¥å¤ª½Ž€å•了åQŒä¸æ˜¯å—åQŸä¸˜q‡è¿™æ˜¯çœŸçš„,仅仅一个displayçš?inline"声明已ç»èƒ½å¤Ÿèƒœä“Q了ã€?/p>
<p>熟悉规则的äh知铋¹®åŠ¨å…ƒç´ è‡ªåŠ¨è®„¡½®ä¸?block"å…ƒç´ åQŒè€Œä¸½Ž¡ä»–们之剿˜¯ä»€ä¹ˆã€‚就如Steve从W3C里指出:</p>
<p>9.5.1 Positioning the float: the ‘float�property</p>
<p>"This property specifies whether a box should float to the left,
right, or not at all. It may be set for elements that generate boxes
that are not absolutely positioned. The values of this property have
the following meanings:</p>
<p>left<br />The element generates a block box that is floated to the
left. Content flows on the right side of the box, starting at the top
(subject to the ‘clear�property). The ‘display�is ignored, unless it
has the value ‘none�</p>
<p>right<br />Same as ‘left� but content flows on the left side of the box, starting at the top.</p>
<p>none<br />The box is not floated. "</p>
<p>˜q?说明‹¹®åŠ¨å…ƒç´ ä¸Šçš„{display:
inline;}会被忽略åQŒäº‹å®žä¸Šæ‰€æœ‰çš„‹¹è§ˆå™¨æ²¡æœ‰å‘ˆçŽîC“Q何改å˜ï¼ŒåŒ…括IE。但是,它ä¸çŸ¥ä½•故让IEåœæ¢ž®†æÕQåŠ¨å…ƒç´ çš„è¾¹ç•Œ¾˜Õd€ã€‚å› è€Œï¼Œ˜q™ä¸ªä¿®å¤åŠžæ³•å¯ä»¥è¢?
直接应用åQŒè€Œæ²¡æœ‰ä“Q何ç¹ççš„éšè—æ–ÒŽ³•。如果将æ¥çš„一‹Æ¾æµè§ˆå™¨å†›_®šå¯¹è¿™ä¸ªä¿®å¤åŠžæ³•æŠ±æ™ï¼Œåªè¦æŠŠè¿™ä¸ªä¿®å¤è£…å…¥IE独用的Tan Hack里,¾l†èЂ如åŒIE
Three Pixel Text-Jog Demo�/p>
<p>䏋颿˜¯ä¸¤ä¸ªä‹É用了å‰é¢ç›¸åŒä»£ç 的生动演½Cºï¼Œ½W¬ä¸€ä¸ªç…§å¸¸æ˜¾½CÞZº†IEçš„BugåQŒä¸‹ä¸€ä¸ªå¯¹‹¹®åŠ¨å…ƒç´ ä½¿ç”¨äº?inline"ä¿®å¤ã€?br />.floatbox {<br />float: left;<br />width: 150px;<br />height: 150px;<br />margin: 5px 0 5px 100px;<br />display: inline;<br />}</p>
<p>
<font color="#ff0000">Update (20060828)åQ?br /></font>
<strong>6ã€ç©º<li></li>è§£æžé—®é¢˜</strong>ã€?/p>
<p>在FF下空<li></li>是ä¸è¢«è§£æžçš„åQŒä¹Ÿž®±æ˜¯è¯ß_¼Œ<li>æ ‡ç¾æ‰€å¸¦çš„cssæ ·å¼æ˜¯ä¸è¢«è§£é‡Šçš„。但是在IE下空<li></li>æ˜¯ä¸€æ ·ä¼šè¢«è§£æžçš„ã€?br />例如我定义如下Css:<br />#sidebar ul li {<br />  list-style-type: none;<br />  list-style-image: none;<br />  margin-bottom: 15px;<br />}</p>
<p>而我的sidebar使用了一个空çš?<li></li> 。那么在FF下ä¸è¢«è§£æžï¼Œè€Œåœ¨IE下会出现15px的空白ã€?/p>
<img src ="http://www.aygfsteel.com/esprit/aggbug/71099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/esprit/" target="_blank">esprit</a> 2006-09-21 14:49 <a href="http://www.aygfsteel.com/esprit/archive/2006/09/21/71099.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>æ”¶è—å¸?常用的一些javascriptž®æŠ€å·?/title><link>http://www.aygfsteel.com/esprit/archive/2006/07/08/57300.html</link><dc:creator>esprit</dc:creator><author>esprit</author><pubDate>Sat, 08 Jul 2006 15:53:00 GMT</pubDate><guid>http://www.aygfsteel.com/esprit/archive/2006/07/08/57300.html</guid><wfw:comment>http://www.aygfsteel.com/esprit/comments/57300.html</wfw:comment><comments>http://www.aygfsteel.com/esprit/archive/2006/07/08/57300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/esprit/comments/commentRss/57300.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/esprit/services/trackbacks/57300.html</trackback:ping><description><![CDATA[事äšgæºå¯¹è±¡Â?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />event.srcElement.tagName <br />event.srcElement.type <br /><br /></td></tr></tbody></table><br />æ•获释放 <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />event.srcElement.setCapture();  <br />event.srcElement.releaseCapture();<br /><br /></td></tr></tbody></table><br />事äšg按键<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />event.keyCode <br />event.shiftKey <br />event.altKey <br />event.ctrlKey <br /><br /></td></tr></tbody></table><br />事äšg˜q”回å€?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />event.returnValue <br /><br /></td></tr></tbody></table><br />é¼ æ ‡ä½ç½®Â <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />event.x <br />event.y <br /><br /></td></tr></tbody></table><br />½H—体‹zÕdŠ¨å…ƒç´ <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />document.activeElement <br /><br /></td></tr></tbody></table><br />¾l‘定事äšg<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />document.captureEvents(Event.KEYDOWN); <br /><br /></td></tr></tbody></table><br />讉K—®½H—ä½“å…ƒç´ Â <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />document.all("txt").focus(); <br />document.all("txt").select(); <br /><br /></td></tr></tbody></table><br />½H—体命ä×o <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />document.execCommand <br /><br /></td></tr></tbody></table><br />½H—体COOKIE <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />document.cookie <br /><br /></td></tr></tbody></table><br />èœå•事äšg <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />document.oncontextmenu<br /><br /></td></tr></tbody></table> <br />创å¾å…ƒç´ <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />document.createElement("SPAN"); <br /><br /></td></tr></tbody></table><br />æ ÒŽ®é¼ æ ‡èŽ·å¾—å…ƒç´ åQ?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />document.elementFromPoint(event.x,event.y).tagName=="TD <br />document.elementFromPoint(event.x,event.y).appendChild(ms)<br /><br /></td></tr></tbody></table><br />½H—体囄¡‰‡<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />document.images[索引] <br /><br /></td></tr></tbody></table><br />½H—体事äšg¾l‘定 <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />document.onmousedown=scrollwindow; <br /><br /></td></tr></tbody></table><br />å…ƒç´ Â <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />document.½H—体.elements[索引]<br /><br /></td></tr></tbody></table> <br /><br />对象¾l‘定事äšg <br /><br /><br />æ’äšgæ•°ç›®<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />navigator.plugins <br /><br /></td></tr></tbody></table><br />å–å˜é‡ç±»åž?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />typeof($js_libpath) == "undefined" <br /><br /></td></tr></tbody></table><br />下拉æ¡?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />下拉æ¡?options[索引] <br />下拉æ¡?options.length <br /><br /></td></tr></tbody></table><br />查找对象 <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />document.getElementsByName("r1"); <br />document.getElementById(id); <br /><br /></td></tr></tbody></table><br /><br />定时 <br /><br /><br />UNCODE¾~–ç  <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />escape() ,unescape <br /><br /></td></tr></tbody></table><br />父对象Â?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />obj.parentElement(dhtml) <br />obj.parentNode(dom)<br /><br /></td></tr></tbody></table><br />交æ¢è¡¨çš„è¡?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />TableID.moveRow(2,1) <br /><br /></td></tr></tbody></table><br />替æ¢CSS <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />document.all.csss.href = "a.css"; <br /><br /></td></tr></tbody></table><br />òq¶æŽ’昄¡¤ºÂ <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />display:inline<br /><br /></td></tr></tbody></table> <br />éšè—焦点 <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />hidefocus=true <br /><br /></td></tr></tbody></table><br />æ ÒŽ®å®½åº¦æ¢è¡Œ<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />style="word-break:break-all"<br /><br /></td></tr></tbody></table> <br />自动åˆäh–°Â <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br /><meta HTTP-EQUIV="refresh" CONTENT="8;URL=http://c98.yeah.net"><br /><br /></td></tr></tbody></table> <br />½Ž€å•é‚®ä»?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br /><a href="mailto:aaa@bbb.com?subject=ccc&body=xxxyyy"> <br /><br /></td></tr></tbody></table><br />快速è{åˆîC½¾|®Â?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />obj.scrollIntoView(true)<br /><br /></td></tr></tbody></table> <br />é”?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br /><a name="first"> <br /><a href="#first">anchors</a> <br /><br /></td></tr></tbody></table><br />¾|‘é¡µä¼ é€’å‚æ•?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />location.search();<br /><br /></td></tr></tbody></table><br />å¯ç¼–è¾?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />obj.contenteditable=true <br /><br /></td></tr></tbody></table><br />执行èœå•命ä×o<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />obj.execCommand <br /><br /></td></tr></tbody></table><br />åŒå—节嗽W¦Â?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />/[^\x00-\xff]/ <br /><br /></td></tr></tbody></table><br />汉å— <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />/[\u4e00-\u9fa5]/ <br /><br /></td></tr></tbody></table><br />让英文嗽W¦ä¸²‘…å‡ºè¡¨æ ¼å®½åº¦è‡ªåŠ¨æ¢è¡Œ<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />word-wrap: break-word; word-break: break-all; <br /><br /></td></tr></tbody></table><br />逿˜ŽèƒŒæ™¯<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br /><IFRAME src="1.htm" width=300 height=180 allowtransparency></iframe> <br /><br /></td></tr></tbody></table><br />获得style内容<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />obj.style.cssText <br /><br /></td></tr></tbody></table><br />HTMLæ ‡ç¾<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />document.documentElement.innerHTML <br /><br /></td></tr></tbody></table><br />½W¬ä¸€ä¸ªstyleæ ‡ç¾<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />document.styleSheets[0] <br /><br /></td></tr></tbody></table><br />styleæ ‡ç¾é‡Œçš„½W¬ä¸€ä¸ªæ ·å¼?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />document.styleSheets[0].rules[0] <br /><br /></td></tr></tbody></table><br />防æ¢ç‚¹å‡»½Iºé“¾æŽ¥æ—¶åQŒé¡µé¢å¾€å¾€é‡ç½®åˆ°é¡µé¦–端ã€?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br /><a href="javascript:function()">word</a> <br /><br /></td></tr></tbody></table><br />上一¾|‘页æº?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />asp: <br />request.servervariables("HTTP_REFERER") <br />javascript: <br />document.referrer <br /><br /></td></tr></tbody></table><br />释放内å˜<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />CollectGarbage();<br /><br /></td></tr></tbody></table><br />¼›æ¢å³é”®Â <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />document.oncontextmenu = function() { return false;} <br /><br /></td></tr></tbody></table><br />¼›æ¢ä¿å˜Â <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br /><noscript><iframe src="*.htm"></iframe></noscript><br /><br /></td></tr></tbody></table><br />¼›æ¢é€‰å–<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br /><body oncontextmenu="return false" ondragstart="return false" onselectstart ="return false" onselect="document.selection.empty()" oncopy="document.selection.empty()" onbeforecopy="return false"onmouseup="document.selection.empty()> <br /><br /></td></tr></tbody></table><br />¼›æ¢¾_˜è„“<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br /><input type=text onpaste="return false"> <br /><br /></td></tr></tbody></table><br />åœ°å€æ å›¾æ ‡Â?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br /><link rel="Shortcut Icon" href="favicon.ico"><br /><br />favicon.ico åå—æœ€å¥½ä¸å?6*16çš?6è‰?æ”¾è™šæ‹Ÿç›®å½•æ ¹ç›®å½•ä¸‹Â?br />æ”¶è—æ å›¾æ ‡Â?br /><br /><link rel="Bookmark" href="favicon.ico"> <br /><br /></td></tr></tbody></table><br /><br />查看æºç <br /><br /><br />å…³é—输入æ³?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br /><input style="ime-mode:disabled"> <br /><br /></td></tr></tbody></table><br />自动全é€?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br /><input type=text name=text1 value="123" onfocus="this.select()"> <br /><br /></td></tr></tbody></table><br />ENTERé”®å¯ä»¥è®©å…‰æ ‡¿UÕdˆ°ä¸‹ä¸€ä¸ªè¾“入框<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br /><input onkeydown="if(event.keyCode==13)event.keyCode=9"><br /><br /></td></tr></tbody></table><br />文本框的默认å€?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br /><input type=text value="123" onfocus="alert(this.defaultValue)"> <br /><br /></td></tr></tbody></table><br />titleæ¢è¡Œ<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />obj.title = "123
sdfs " <br /><br /></td></tr></tbody></table><br />获得旉™—´æ‰€ä»£è¡¨çš„å¾®¿U’Â?br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />var n1 = new Date("2004-10-10".replace(/-/g, "\/")).getTime() <br /><br /></td></tr></tbody></table><br />½H—壿˜¯å¦å…³é— <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />win.closed <br /><br /></td></tr></tbody></table><br />checkboxæ‰åã^<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br /><input type=checkbox style="position: absolute; clip:rect(5px 15px 15px 5px)"> <br /><br /></td></tr></tbody></table><br />获å–选ä¸å†…容 <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />document.selection.createRange().duplicate().text<br /><br /></td></tr></tbody></table><br />自动完æˆåŠŸèƒ½<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br /><input  type=text  autocomplete=on>打开该功èƒãq Â?br /><input  type=text  autocomplete=off>å…³é—该功èƒãq?br /><br /></td></tr></tbody></table><br />½H—壿œ€å¤§åŒ– <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br /><body onload="window.resizeTo(window.screen.width - 4,window.screen.height-50);window.moveTo(-4,-4)"> <br /><br /></td></tr></tbody></table><br />æ— å…³é—æŒ‰é’®IE<br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />window.open("aa.htm", "meizz", "fullscreen=7"); <br /><br /></td></tr></tbody></table><br />¾lŸä¸€¾~–ç /è§£ç <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"> <br />alert(decodeURIComponent(encodeURIComponent("http://ä½ å¥½.com?as= hehe"))) <br />encodeURIComponentå¯?:"ã€?/"ã€?;" 和Â??"也编ç Â?br /><br /></td></tr></tbody></table><br /><br />è¡¨æ ¼è¡ŒæŒ‡½C?br /><br /><br />//å„ç§ž®ºå¯¸Â <br /><br /><table cellspacing="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td bgcolor="#efefef"><br />s  +=  "\r\n¾|‘页å¯è§åŒºåŸŸå®½ï¼š"+  document.body.clientWidth;   <br />s  +=  "\r\n¾|‘页å¯è§åŒºåŸŸé«˜ï¼š"+  document.body.clientHeight;   <br />s  +=  "\r\n¾|‘页å¯è§åŒºåŸŸé«˜ï¼š"+  document.body.offsetWeight  +"  (包括边线的宽)";   <br />s  +=  "\r\n¾|‘页å¯è§åŒºåŸŸé«˜ï¼š"+  document.body.offsetHeight  +"  (包括边线的宽)";   <br />s  +=  "\r\n¾|‘é¡µæ£æ–‡å…¨æ–‡å®½ï¼š"+  document.body.scrollWidth;   <br />s  +=  "\r\n¾|‘é¡µæ£æ–‡å…¨æ–‡é«˜ï¼š"+  document.body.scrollHeight;   <br />s  +=  "\r\n¾|‘页被å·åŽÈš„高:"+  document.body.scrollTop;   <br />s  +=  "\r\n¾|‘页被å·åŽÈš„左:"+  document.body.scrollLeft;   <br />s  +=  "\r\n¾|‘é¡µæ£æ–‡éƒ¨åˆ†ä¸Šï¼š"+  window.screenTop;   <br />s  +=  "\r\n¾|‘é¡µæ£æ–‡éƒ¨åˆ†å·¦ï¼š"+  window.screenLeft;   <br />s  +=  "\r\nå±å¹•分èöL率的高:"+  window.screen.height;   <br />s  +=  "\r\nå±å¹•分èöL率的宽:"+  window.screen.width;   <br />s  +=  "\r\nå±å¹•å¯ç”¨å·¥ä½œåŒºé«˜åº¦ï¼š"+  window.screen.availHeight;   <br />s  +=  "\r\nå±å¹•å¯ç”¨å·¥ä½œåŒºå®½åº¦ï¼š"+  window.screen.availWidth; <br /><br /></td></tr></tbody></table><br /><img src ="http://www.aygfsteel.com/esprit/aggbug/57300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/esprit/" target="_blank">esprit</a> 2006-07-08 23:53 <a href="http://www.aygfsteel.com/esprit/archive/2006/07/08/57300.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>[转]Javascriptçš„IEå’ŒFirefox兼容性汇¾~?/title><link>http://www.aygfsteel.com/esprit/archive/2006/07/08/57298.html</link><dc:creator>esprit</dc:creator><author>esprit</author><pubDate>Sat, 08 Jul 2006 15:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/esprit/archive/2006/07/08/57298.html</guid><wfw:comment>http://www.aygfsteel.com/esprit/comments/57298.html</wfw:comment><comments>http://www.aygfsteel.com/esprit/archive/2006/07/08/57298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/esprit/comments/commentRss/57298.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/esprit/services/trackbacks/57298.html</trackback:ping><description><![CDATA[以下以 IE 代替 Internet ExploreråQŒä»¥Â MF 代替 Mozzila Firefox<br /><br /><b>1. document.form.item 问题</b><br />(1)现有问题åQ?br />现有代ç ä¸å˜åœ¨è®¸å¤šÂ document.formName.item("itemName") ˜q™æ ·çš„è¯å¥ï¼Œä¸èƒ½åœ¨Â MF 下è¿è¡?br />(2)解决æ–ÒŽ³•åQ?br />改用 document.formName.elements["elementName"]<br />(3)其它<br />å‚è§Â 2<br /><br /><b>2. 集刾cÕd¯¹è±¡é—®é¢?/b><br />(1)现有问题åQ?br />现有代ç ä¸è®¸å¤šé›†åˆç±»å¯¹è±¡å–用时ä‹É用Â?)åQŒIE 能接å—,MF ä¸èƒ½ã€?br />(2)解决æ–ÒŽ³•åQ?br />改用 []Â ä½œäØ“ä¸‹æ ‡˜q算。如åQšdocument.forms("formName")Â æ”¹äØ“Â document.forms["formName"]ã€?br />åˆå¦‚åQšdocument.getElementsByName("inputName")(1)Â æ”¹äØ“Â document.getElementsByName("inputName")[1]<br /><br /><b>3. window.event</b><br />(1)现有问题åQ?br />使用 window.eventÂ æ— æ³•åœ¨Â MF 上è¿è¡?br />(2)解决æ–ÒŽ³•åQ?br />MF 的 event åªèƒ½åœ¨äº‹ä»¶å‘生的现场使用åQŒæ¤é—®é¢˜æš‚æ— æ³•è§£å†Ÿë€‚å¯ä»¥è¿™æ ·å˜é€šï¼š<br />原代ç ?å¯åœ¨IEä¸è¿è¡?åQ?br /><input type="button" name="someButton" value="æäº¤" onclick="javascript:gotoSubmit()"/><br />...<br /><script language="javascript"><br />function gotoSubmit() {<br />...<br />alert(window.event); // use window.event<br />...<br />}<br /></script><br /><br />æ–îC»£ç ?å¯åœ¨IEå’ŒMFä¸è¿è¡?åQ?br /><input type="button" name="someButton" value="æäº¤" onclick="javascript:gotoSubmit(event)"/><br />...<br /><script language="javascript"><br />function gotoSubmit(evt) {<br />evt = evt ? evt : (window.event ? window.event : null);<br />...<br />alert(evt); // use evt<br />...<br />}<br /></script><br />æ¤å¤–åQŒå¦‚果新代ç ä¸ç¬¬ä¸€è¡Œä¸æ”¹ï¼Œä¸Žè€ä»£ç 一æ ïLš„è¯?åê gotoSubmit 调用没有¾l™å‚æ•?åQŒåˆ™ä»ç„¶åªèƒ½åœ¨IEä¸è¿è¡Œï¼Œä½†ä¸ä¼šå‡ºé”™ã€‚所以,˜q™ç§æ–ÒŽ¡ˆÂ tpl 部分ä»ä¸Žè€ä»£ç å…¼å®V€?br /><br /><b>4. HTML 对象的 idÂ ä½œäØ“å¯¹è±¡å的问题</b><br />(1)现有问题<br />在 IE ä¸ï¼ŒHTML 对象的 ID å¯ä»¥ä½œäؓ document 的下属对象å˜é‡å直接使用。在 MF ä¸ä¸èƒ½ã€?br />(2)解决æ–ÒŽ³•<br />用 getElementById("idName") 代替 idNameÂ ä½œäØ“å¯¹è±¡å˜é‡ä½¿ç”¨ã€?br /><br /><b>5. 用idNameå—符串å–得对象的问题</b><br />(1)现有问题<br />在IEä¸ï¼Œåˆ©ç”¨Â eval(idName) å¯ä»¥å–å¾—Â id 为 idName 的 HTML 对象åQŒåœ¨MF ä¸ä¸èƒ½ã€?br />(2)解决æ–ÒŽ³•<br />用 getElementById(idName) 代替 eval(idName)ã€?br /><br /><b>6. å˜é‡å与æŸÂ HTML 对象 id 相åŒçš„é—®é¢?/b><br />(1)现有问题<br />在 MF ä¸ï¼Œå› äØ“å¯¹è±¡Â id ä¸ä½œä¸ºÂ HTML 对象的å¿UŽÍ¼Œæ‰€ä»¥å¯ä»¥ä‹É用与 HTML 对象 id 相åŒçš„å˜é‡ååQŒIE ä¸ä¸èƒ½ã€?br />(2)解决æ–ÒŽ³•<br />在声明å˜é‡æ—¶åQŒä¸€å¾‹åŠ ä¸ŠÂ var åQŒä»¥é¿å…æ§ä¹‰åQŒè¿™æ ·åœ¨Â IE ä¸äº¦å¯æ£å¸¸è¿è¡Œã€?br />æ¤å¤–åQŒæœ€å¥½ä¸è¦å–与 HTML 对象 id 相åŒçš„å˜é‡ååQŒä»¥å‡å°‘错误ã€?br />(3)其它<br />å‚è§Â 问题4<br /><br /><b>7. event.x 与 event.y 问题</b><br />(1)现有问题<br />在IE ä¸ï¼Œevent 对象有 x, y 属性,MF䏿²¡æœ‰ã€?br />(2)解决æ–ÒŽ³•<br />在MFä¸ï¼Œä¸Ževent.x ½{‰æ•ˆçš„æ˜¯Â event.pageX。但event.pageX IE䏿²¡æœ‰ã€?br />故采用 event.clientX 代替 event.x。在IE ä¸ä¹Ÿæœ‰è¿™ä¸ªå˜é‡ã€?br />event.clientX 与 event.pageX 有微妙的差别åQˆå½“整个™åµé¢æœ‰æ»šåЍæ¡çš„æ—¶å€™ï¼‰åQŒä¸˜q‡å¤§å¤šæ•°æ—¶å€™æ˜¯½{‰æ•ˆçš„ã€?br /><br />如果è¦å®Œå…¨ä¸€æ øP¼Œå¯ä»¥½E麻烦些åQ?br />mX = event.x ? event.x : event.pageX;<br />ç„¶åŽç”¨Â mX 代替 event.x<br />(3)其它<br />event.layerX 在 IE 与 MF ä¸éƒ½æœ‰ï¼Œå…·ä½“æ„ä¹‰æœ‰æ— å·®åˆ«ž®šæœªè¯•验ã€?br /><br /><b>8. 关于frame</b><br />(1)现有问题<br />在 IEä¸Â å¯ä»¥ç”¨window.testFrameå–得该frameåQŒmfä¸ä¸è¡?br />(2)解决æ–ÒŽ³•<br />在frameçš„ä‹É用方é¢mfå’Œie的最主è¦çš„区别是åQ?br />如果在frameæ ‡ç¾ä¸ä¹¦å†™äº†ä»¥ä¸‹å±žæ€§ï¼š<br /><frame src="xx.htm" id="frameId" name="frameName" /><br />那么ieå¯ä»¥é€šè¿‡id或者name讉K—®˜q™ä¸ªframe对应的window对象<br />而mfåªå¯ä»¥é€šè¿‡nameæ¥è®¿é—®è¿™ä¸ªframe对应的window对象<br />例如如果上述frameæ ‡ç¾å†™åœ¨æœ€ä¸Šå±‚çš„window里é¢çš„htm里é¢åQŒé‚£ä¹ˆå¯ä»¥è¿™æ ¯‚®¿é—?br />ieåQšÂ window.top.frameId或者window.top.frameNameæ¥è®¿é—®è¿™ä¸ªwindow对象<br />mfåQšÂ åªèƒ½è¿™æ ·window.top.frameNameæ¥è®¿é—®è¿™ä¸ªwindow对象<br /><br />å¦å¤–åQŒåœ¨mfå’Œieä¸éƒ½å¯ä»¥ä½¿ç”¨window.top.document.getElementById("frameId")æ¥è®¿é—®frameæ ‡ç¾<br />òq¶ä¸”å¯ä»¥é€šè¿‡window.top.document.getElementById("testFrame").src = ‘xx.htm’æ¥åˆ‡æ¢frame的内å®?br />也都å¯ä»¥é€šè¿‡window.top.frameName.location = ‘xx.htm’æ¥åˆ‡æ¢frame的内å®?br />关于frameå’Œwindowçš„æ˜q°å¯ä»¥å‚è§bbs的‘window与frame’文ç«?br />以åŠ/test/js/test_frame/目录下é¢çš„æµ‹è¯?br />----adun 2004.12.09修改<br /><br /><b>9. 在mfä¸ï¼Œè‡ªå·±å®šä¹‰çš„属性必™å»getAttribute()å–å¾—</b><br /><br /><b>10.在mf䏿²¡æœ‰Â parentElement parement.children 而用parentNode parentNode.childNodes</b><br />childNodesçš„ä¸‹æ ‡çš„å«ä¹‰åœ¨IEå’ŒMFä¸ä¸åŒï¼ŒMF使用DOM规范åQŒchildNodesä¸ä¼šæ’å…¥½Iºç™½æ–‡æœ¬èŠ‚ç‚¹ã€?br />一般å¯ä»¥é€šè¿‡node.getElementsByTagName()æ¥å›žé¿è¿™ä¸ªé—®é¢˜ã€?br />当htmlä¸èŠ‚ç‚¹ç¼ºå¤±æ—¶åQŒIEå’ŒMF对parentNode的解释ä¸åŒï¼Œä¾‹å¦‚<br /><form><br /><table><br /><input/><br /></table><br /></form><br />MFä¸input.parentNodeçš„å€égØ“form, 而IEä¸input.parentNodeçš„å€égØ“½Iø™Š‚ç‚?br /><br />MFä¸èŠ‚ç‚ÒŽ²¡æœ‰removeNodeæ–ÒŽ³•åQŒå¿…™åÖM‹É用如下方法 node.parentNode.removeChild(node)<br /><br /><b>11.const 问题</b><br />(1)现有问题:<br />在 IE ä¸ä¸èƒ½ä‹É用 const 关键å—。如 const constVar = 32; 在IEä¸è¿™æ˜¯è¯æ³•错误ã€?br />(2)解决æ–ÒŽ³•:<br />ä¸ä‹É用 const åQŒä»¥Â var 代替ã€?br /><br /><b>12. body 对象</b><br />MFçš„body在bodyæ ‡ç¾æ²¡æœ‰è¢«æµè§ˆå™¨å®Œå…¨è¯Õd…¥ä¹‹å‰ž®±å˜åœ¨ï¼Œè€ŒIE则必™åÕdœ¨bodyå®Œå…¨è¢«è¯»å…¥ä¹‹åŽæ‰å˜åœ¨<br /><br /><b>13. url encoding</b><br />在jsä¸å¦‚果书写urlž®Þq›´æŽ¥å†™&ä¸è¦å†?amp;amp;例如var url = ‘xx.jsp?objectName=xx&objectEvent=xxxâ€?<br />frm.action = url那么很有å¯èƒ½urlä¸ä¼šè¢«æ£å¸¸æ˜¾½CÞZ»¥è‡³äºŽå‚数没有æ£ç¡®çš„ä¼ åˆ°æœåС噍<br />一般会æœåŠ¡å™¨æŠ¥é”™å‚æ•°æ²¡æœ‰æ‰¾åˆ?br />当然如果是在tplä¸ä¾‹å¤–ï¼Œå› äØ“tplä¸ç¬¦åˆxml规范åQŒè¦æ±?amp;书写ä¸?amp;amp;<br />一般MFæ— æ³•è¯†åˆ«jsä¸çš„&<br /><br /><b>14. nodeName 和 tagName 问题</b><br />(1)现有问题åQ?br />在MFä¸ï¼Œæ‰€æœ‰èŠ‚ç‚¹å‡æœ‰Â nodeName å€û|¼Œä½†Â textNode 没有 tagName 倹{€‚在 IE ä¸ï¼ŒnodeName 的ä‹É用好è±?br />有问题(具体情况没有‹¹‹è¯•åQŒä½†æˆ‘çš„IEå·²ç»æÖMº†å¥½å‡ ‹Æ¡ï¼‰ã€?br />(2)解决æ–ÒŽ³•åQ?br />使用 tagNameåQŒä½†åº”检‹¹‹å…¶æ˜¯å¦ä¸ºç©ºã€?br /><br /><b>15.Â å…ƒç´ å±žæ€?/b><br />IE下 input.typeå±žæ€§äØ“åªè¯»åQŒä½†æ˜¯MF下å¯ä»¥ä¿®æ”?br /><img src ="http://www.aygfsteel.com/esprit/aggbug/57298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/esprit/" target="_blank">esprit</a> 2006-07-08 23:50 <a href="http://www.aygfsteel.com/esprit/archive/2006/07/08/57298.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>Session详解ã€è{è½½ã€?/title><link>http://www.aygfsteel.com/esprit/archive/2006/03/17/35817.html</link><dc:creator>esprit</dc:creator><author>esprit</author><pubDate>Fri, 17 Mar 2006 05:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/esprit/archive/2006/03/17/35817.html</guid><wfw:comment>http://www.aygfsteel.com/esprit/comments/35817.html</wfw:comment><comments>http://www.aygfsteel.com/esprit/archive/2006/03/17/35817.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/esprit/comments/commentRss/35817.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/esprit/services/trackbacks/35817.html</trackback:ping><description><![CDATA[作者:郎云é¹ï¼ˆdev2dev ID: hippiewolfåQ?br /><br />摘è¦åQšè™½ç„¶session机制在web应用½E‹åºä¸è¢«é‡‡ç”¨å·²ç»å¾ˆé•¿æ—‰™—´äº†ï¼Œä½†æ˜¯ä»ç„¶æœ‰å¾ˆå¤šäh䏿¸…楚session机制的本质,以至ä¸èƒ½æ£ç¡®çš„应用这一技术。本文将详细讨论sessionçš„å·¥ä½œæœºåˆ¶åÆˆä¸”å¯¹åœ¨Java web applicationä¸åº”用session机制时常è§çš„问题作出解ç”ã€?br /><br />目录åQ?br />ä¸€ã€æœ¯è¯session<br />二ã€HTTPå议与状æ€ä¿æŒ?br />三ã€ç†è§£cookie机制<br />å››ã€ç†è§£session机制<br />五ã€ç†è§£javax.servlet.http.HttpSession<br />å…ã€HttpSession常è§é—®é¢˜<br />七ã€è·¨åº”用½E‹åºçš„sessionå…׃ín<br />å…«ã€æ€È»“<br />å‚考文æ¡?br /><br />ä¸€ã€æœ¯è¯session<br />在我的ç»éªŒé‡ŒåQŒsession˜q™ä¸ªè¯è¢«æ»¥ç”¨çš„程度大概仅‹Æ¡äºŽtransactionåQŒæ›´åŠ æœ‰‘£çš„æ˜¯transaction与session在æŸäº›è¯å¢ƒä¸‹çš„å«ä¹‰æ˜¯ç›¸åŒçš„ã€?br /><br />sessionåQŒä¸æ–‡ç»å¸¸ç¿»è¯‘äØ“ä¼šè¯åQŒå…¶æœ¬æ¥çš„å«ä¹‰æ˜¯æŒ‡æœ‰å§‹æœ‰¾lˆçš„一¾pÕdˆ—动作/消æ¯åQŒæ¯”å¦‚æ‰“ç”µè¯æ—¶ä»Žæ‹¿è“vç”µè¯æ‹¨å·åˆ°æŒ‚æ–电è¯è¿™ä¸é—´çš„一¾pÕdˆ—˜q‡ç¨‹å¯ä»¥¿UîC¹‹ä¸ÞZ¸€ä¸?session。有时候我们å¯ä»¥çœ‹åˆ°è¿™æ ïLš„è¯â€œåœ¨ä¸€ä¸ªæµè§ˆå™¨ä¼šè¯æœŸé—´åQ?..â€ï¼Œ˜q™é‡Œçš„会è¯ä¸€è¯ç”¨çš„就是其本义åQŒæ˜¯æŒ‡ä»Žä¸€ä¸ªæµè§ˆå™¨½H—壿‰“开到关é—这个期é—?â‘ ã€‚æœ€æ··äØ•çš„æ˜¯â€œç”¨æˆøP¼ˆå®¢æˆ·ç«¯ï¼‰åœ¨ä¸€‹Æ¡ä¼šè¯æœŸé—´â€è¿™æ ·ä¸€å¥è¯åQŒå®ƒå¯èƒ½æŒ‡ç”¨æˆïLš„一¾pÕdˆ—动作åQˆä¸€èˆ¬æƒ…å†µä¸‹æ˜¯åŒæŸä¸ªå…·ä½“目的相关的一¾pÕdˆ—动作åQŒæ¯”如从ç™Õd½•到选è´å•†å“åˆ°ç»“è´¦ç™»å‡ø™¿™æ ·ä¸€ä¸ªç½‘上è´ç‰©çš„˜q‡ç¨‹åQŒæœ‰æ—¶å€™ä¹Ÿè¢«ç§°ä¸ÞZ¸€ä¸ªtransactionåQ‰ï¼Œç„¶è€Œæœ‰æ—¶å€™ä¹Ÿå¯èƒ½ä»…仅是指一‹Æ¡è¿žæŽ¥ï¼Œä¹Ÿæœ‰å¯èƒ½æ˜¯æŒ‡å«ä¹‰â‘ ,其ä¸çš„差别åªèƒ½é ä¸Šä¸‹æ–‡æ¥æŽ¨æ–â‘¡ã€?br /><br />然而当session一è¯ä¸Ž¾|‘络åè®®ç›¸å…³è”æ—¶åQŒå®ƒåˆå¾€å¾€éšå«äº†â€œé¢å‘连接â€å’Œ/æˆ–â€œä¿æŒçжæ€â€è¿™æ ·ä¸¤ä¸ªå«ä¹‰ï¼Œ “é¢å‘è¿žæŽ¥â€æŒ‡çš„æ˜¯åœ¨é€šä¿¡åŒæ–¹åœ¨é€šä¿¡ä¹‹å‰è¦å…ˆå»ºç«‹ä¸€ä¸ªé€šä¿¡çš„æ¸ é“,比如打电è¯ï¼Œç›´åˆ°å¯ÒŽ–¹æŽ¥äº†ç”µè¯é€šä¿¡æ‰èƒ½å¼€å§‹ï¼Œä¸Žæ¤ç›¸å¯¹çš„æ˜¯å†™ä¿¡åQŒåœ¨ä½ 把信å‘å‡ºåŽ»çš„æ—¶å€™ä½ òq¶ä¸èƒ½ç¡®è®¤å¯¹æ–¹çš„åœ°å€æ˜¯å¦æ£ç¡®åQŒé€šä¿¡æ¸ é“ä¸ä¸€å®šèƒ½å»ºç«‹åQŒä½†å¯¹å‘ä¿¡ähæ¥è¯´åQŒé€šä¿¡å·²ç»å¼€å§‹äº†ã€‚â€œä¿æŒçжæ€â€åˆ™æ˜¯æŒ‡é€šä¿¡çš„一方能够把一¾pÕdˆ—的消æ¯å…³è”è“væ¥ï¼Œä½¿å¾—消æ¯ä¹‹é—´å¯ä»¥äº’相ä¾èµ–åQŒæ¯”如一个æœåŠ¡å‘˜èƒ½å¤Ÿè®¤å‡ºå†æ¬¡å…‰äÍçš„è€é¡¾å®¢åƈ且记得上‹Æ¡è¿™ä¸ªé¡¾å®¢è¿˜‹Æ 店里一å—钱。这一¾cÈš„ä¾‹åæœ‰â€œä¸€ä¸ªTCP sessionâ€æˆ–è€?“一个POP3 sessionâ€â‘¢ã€?br /><br />而到了webæœåŠ¡å™¨è“¬å‹ƒå‘展的时代åQŒsession在webå¼€å‘è¯å¢ƒä¸‹çš„è¯ä¹‰åˆæœ‰äº†æ–°çš„æ‰©å±•åQŒå®ƒçš„å«ä¹‰æ˜¯æŒ‡ä¸€¾cÈ”¨æ¥åœ¨å®¢æˆ·ç«¯ä¸ŽæœåŠ¡å™¨ä¹‹é—´ä¿æŒçжæ€çš„解决æ–ÒŽ¡ˆâ‘£ã€‚有时候sessionä¹Ÿç”¨æ¥æŒ‡˜q™ç§è§£å†³æ–ÒŽ¡ˆçš„å˜å‚¨ç»“构,如“把xxxä¿å˜åœ¨session 里â€â‘¤ã€‚由于儿U用于webå¼€å‘çš„è¯è¨€åœ¨ä¸€å®šç¨‹åº¦ä¸Šéƒ½æä¾›äº†å¯¹è¿™¿Uè§£å†Ïx–¹æ¡ˆçš„æ”¯æŒåQŒæ‰€ä»¥åœ¨æŸç§ç‰¹å®šè¯è¨€çš„è¯å¢ƒä¸‹åQŒsessionä¹Ÿè¢«ç”¨æ¥æŒ‡ä»£è¯¥è¯a€çš„è§£å†Ïx–¹æ¡ˆï¼Œæ¯”如¾l常把Java里æä¾›çš„javax.servlet.http.HttpSession½Ž€¿UîCØ“sessionâ‘¥ã€?br /><br />鉴于˜q™ç§æ··äؕ已ä¸å¯æ”¹å˜ï¼Œæœ¬æ–‡ä¸session一è¯çš„˜q用也会æ ÒŽ®ä¸Šä¸‹æ–‡æœ‰ä¸åŒçš„å«ä¹‰ï¼Œè¯·å¤§å®¶æ³¨æ„分辨ã€?br />在本文ä¸åQŒä‹Éç”¨ä¸æ–‡â€œæµè§ˆå™¨ä¼šè¯æœŸé—´â€æ¥è¡¨è¾¾å«ä¹‰â‘ ,使用“sessionæœºåˆ¶â€æ¥è¡¨è¾¾å«ä¹‰â‘£ï¼Œä½¿ç”¨â€œsessionâ€è¡¨è¾‘֫义⑤åQŒä‹É用具体的“HttpSessionâ€æ¥è¡¨è¾¾å«ä¹‰â‘?br /><br />二ã€HTTPå议与状æ€ä¿æŒ?br />HTTP å议本èínæ˜¯æ— çŠ¶æ€çš„åQŒè¿™ä¸ŽHTTPå议本æ¥çš„目的是相符的,客户端åªéœ€è¦ç®€å•çš„å‘æœåС噍è¯äh±‚ä¸‹è²æŸäº›æ–‡äšgåQŒæ— 论是客户端还是æœåŠ¡å™¨éƒ½æ²¡æœ‰å¿…è¦çºªå½•å½¼æ¤è¿‡åŽÈš„è¡ŒäØ“åQŒæ¯ä¸€‹Æ¡è¯·æ±‚之间都是独立的åQŒå¥½æ¯”一个顾客和一个自动售货机或者一个普通的åQˆéžä¼šå‘˜åˆÓž¼‰å¤§å–åœÞZ¹‹é—´çš„å…³ç³»ä¸€æ —÷€?br /><br />ç„¶è€Œèªæ˜Žï¼ˆæˆ–者贪心?åQ‰çš„äºÞZ»¬å¾ˆå¿«å‘现如果能够æä¾›ä¸€äº›æŒ‰éœ€ç”Ÿæˆçš„动æ€ä¿¡æ¯ä¼šä½¿webå˜å¾—æ›´åŠ æœ‰ç”¨åQŒå°±åƒç»™æœ‰çº¿ç”µè§†åŠ ä¸Šç‚ÒŽ’åŠŸèƒ½ä¸€æ —÷€‚è¿™¿U需求一斚w¢˜q«ä‹ÉHTML逿¥æ·ÕdŠ äº†è¡¨å•ã€è„šæœ¬ã€DOM½{‰å®¢æˆïL«¯è¡ŒäØ“åQŒå¦ä¸€æ–šw¢åœ¨æœåŠ¡å™¨ç«¯åˆ™å‡ºçŽ°äº†CGI规范以å“应客æˆïL«¯çš„动æ€è¯·æ±‚ï¼Œä½œäØ“ä¼ è¾“è½½ä½“çš„HTTPåè®®ä¹Ÿæ·»åŠ äº†æ–‡äšg上è²ã€?cookie˜q™äº›ç‰ÒŽ€§ã€‚å…¶ä¸cookieçš„ä½œç”¨å°±æ˜¯äØ“äº†è§£å†³HTTPåè®®æ— çŠ¶æ€çš„¾~ºé™·æ‰€ä½œå‡ºçš„åŠªåŠ›ã€‚è‡³äºŽåŽæ¥å‡ºçŽ°çš„session机制则是åˆä¸€¿U在客户端与æœåŠ¡å™¨ä¹‹é—´ä¿æŒçжæ€çš„解决æ–ÒŽ¡ˆã€?br /><br />è®©æˆ‘ä»¬ç”¨å‡ ä¸ªä¾‹åæ¥æ˜qîC¸€ä¸‹cookieå’Œsession机制之间的区别与è”系。笔者曾¾l常åŽÈš„一家咖啡店有å–5æ¯å’–å•¡å…è´¹èµ ä¸€æ¯å’–å•¡çš„ä¼˜æƒ åQŒç„¶è€Œä¸€‹Æ¡æ€§æ¶ˆè´?æ¯å’–å•¡çš„æœÞZ¼šå¾®ä¹Žå…¶å¾®åQŒè¿™æ—¶å°±éœ€è¦æŸ¿Uæ–¹å¼æ¥¾Uªå½•æŸä½™å‘Ö®¢çš„æ¶ˆè´ÒŽ•°é‡ã€‚æƒ³è±¡ä¸€ä¸‹å…¶å®žä¹Ÿæ— å¤–ä¹Žä¸‹é¢çš„å‡ ç§æ–ÒŽ¡ˆåQ?br />1ã€è¯¥åº—的店员很厉宻I¼Œèƒ½è®°ä½æ¯ä½é¡¾å®¢çš„æ¶ˆè´¹æ•°é‡åQŒåªè¦é¡¾å®¢ä¸€èµ°è¿›å’–啡店,店员ž®ÞqŸ¥é“该怎么对待了。这¿Uåšæ³•就是å议本íw«æ”¯æŒçжæ€ã€?br />2ã€å‘¾l™é¡¾å®¢ä¸€å¼ å¡ç‰‡ï¼Œä¸Šé¢è®°å½•ç€æ¶ˆè´¹çš„æ•°é‡ï¼Œä¸€èˆ¬è¿˜æœ‰ä¸ªæœ‰æ•ˆæœŸé™ã€‚毋ơ消è´ÒŽ—¶åQŒå¦‚果顾客出½Cø™¿™å¼ å¡ç‰‡ï¼Œåˆ™æ¤‹Æ¡æ¶ˆè´¹å°±ä¼šä¸Žä»¥å‰æˆ–以åŽçš„æ¶ˆè´¹ç›¸è”¾p»è“væ¥ã€‚è¿™¿Uåšæ³•å°±æ˜¯åœ¨å®¢æˆ·ç«¯ä¿æŒçжæ€ã€?br />3ã€å‘¾l™é¡¾å®¢ä¸€å¼ 会员å¡åQŒé™¤äº†å¡å·ä¹‹å¤–什么信æ¯ä¹Ÿä¸çºªå½•ï¼Œæ¯æ¬¡æ¶ˆè´¹æ—Óž¼Œå¦‚æžœ™å‘Ö®¢å‡ºç¤ºè¯¥å¡ç‰‡ï¼Œåˆ™åº—员在店里的纪录本上找到这个å¡å·å¯¹åº”çš„¾Uªå½•æ·ÕdŠ ä¸€äº›æ¶ˆè´¹ä¿¡æ¯ã€‚è¿™¿Uåšæ³•就是在æœåŠ¡å™¨ç«¯ä¿æŒçжæ€ã€?br /><br />ç”׃ºŽHTTPåè®®æ˜¯æ— çŠ¶æ€çš„åQŒè€Œå‡ºäºŽç§¿U考虑也ä¸å¸Œæœ›ä½¿ä¹‹æˆäؓ有状æ€çš„åQŒå› æ¤ï¼ŒåŽé¢ä¸¤ç§æ–ÒŽ¡ˆž®±æˆä¸ºçŽ°å®žçš„é€‰æ‹©ã€‚å…·ä½“æ¥è¯´cookie机制采用的是在客æˆïL«¯ä¿æŒçжæ€çš„æ–ÒŽ¡ˆåQŒè€Œsession机制采用的是在æœåŠ¡å™¨ç«¯ä¿æŒçжæ€çš„æ–ÒŽ¡ˆã€‚åŒæ—¶æˆ‘们也看到åQŒç”±äºŽé‡‡ç”¨æœåŠ¡å™¨ç«¯ä¿æŒçжæ€çš„æ–ÒŽ¡ˆåœ¨å®¢æˆïL«¯ä¹Ÿéœ€è¦ä¿å˜ä¸€ä¸ªæ ‡è¯†ï¼Œæ‰€ä»¥session机制å¯èƒ½éœ€è¦å€ŸåŠ©äºŽcookie机制æ¥è¾¾åˆîC¿å˜æ ‡è¯†çš„目的åQŒä½†å®žé™…上它˜q˜æœ‰å…¶ä»–选择ã€?br /><br />三ã€ç†è§£cookie机制 <br />cookie机制的基本原ç†å°±å¦‚上é¢çš„例å一æ ïL®€å•,但是˜q˜æœ‰å‡ 个问题需è¦è§£å†»I¼šâ€œä¼šå‘˜å¡â€å¦‚何分å‘;“会员å¡â€çš„内容åQ›ä»¥åŠå®¢æˆ·å¦‚何ä‹É用“会员å¡â€ã€?br /><br />æ£ç»Ÿçš„cookieåˆ†å‘æ˜¯é€šè¿‡æ‰©å±•HTTPåè®®æ¥å®žçŽ°çš„åQŒæœåŠ¡å™¨é€šè¿‡åœ¨HTTPçš„å“应头ä¸åŠ ä¸Šä¸€è¡Œç‰¹ŒDŠçš„æŒ‡ç¤ºä»¥æ½Cºæµè§ˆå™¨æŒ‰ç…§æŒ‡ç¤ºç”Ÿæˆç›¸åº”çš„cookie。然而纯¾_¹çš„客户端脚本如JavaScript或者VBScript也å¯ä»¥ç”Ÿæˆcookieã€?br /><br />而cookie çš„ä‹É用是由æµè§ˆå™¨æŒ‰ç…§ä¸€å®šçš„原则在åŽå°è‡ªåЍå‘é€ç»™æœåŠ¡å™¨çš„ã€‚æµè§ˆå™¨‹‚€æŸ¥æ‰€æœ‰å˜å‚¨çš„cookieåQŒå¦‚æžœæŸä¸ªcookie所声明的作用范围大于ç‰äºŽå°†è¦è¯·æ±‚çš„èµ„æºæ‰€åœ¨çš„ä½ç½®åQŒåˆ™æŠŠè¯¥cookie附在è¯äh±‚资æºçš„HTTPè¯äh±‚头上å‘é€ç»™æœåŠ¡å™¨ã€‚æ„æ€æ˜¯éº¦å½“劳的会员å¡åªèƒ½åœ¨éº¦å½“劳的店里出示åQŒå¦‚æžœæŸå®¶åˆ†åº—还å‘行了自å·Þqš„会员å¡ï¼Œé‚£ä¹ˆ˜q›è¿™å®¶åº—的时候除了è¦å‡ºç¤ºéº¦å½“劳的会员å¡ï¼Œ˜q˜è¦å‡ºç¤º˜q™å®¶åº—的会员å¡ã€?br /><br />cookie的内容主è¦åŒ…括:åå—åQŒå€û|¼Œ˜q‡æœŸæ—‰™—´åQŒèµ\径和域ã€?br />å…¶ä¸åŸŸå¯ä»¥æŒ‡å®šæŸä¸€ä¸ªåŸŸæ¯”如.google.comåQŒç›¸å½“于æ€Õdº—招牌åQŒæ¯”如宋zå…¬å¸ï¼Œä¹Ÿå¯ä»¥æŒ‡å®šä¸€ä¸ªåŸŸä¸‹çš„具体æŸå°æœºå™¨æ¯”如www.google.com或者froogle.google.comåQŒå¯ä»¥ç”¨é£˜æŸ”æ¥å𿝔ã€?br />路径ž®±æ˜¯è·Ÿåœ¨åŸŸååŽé¢çš„URL路径åQŒæ¯”å¦?或è€?foo½{‰ç‰åQŒå¯ä»¥ç”¨æŸé£˜æŸ”ä¸“æŸœåšæ¯”ã€?br />路径与域åˆåœ¨ä¸€èµ·å°±æž„æˆäº†cookie的作用范围ã€?br />如果ä¸è®¾¾|®è¿‡æœŸæ—¶é—ß_¼Œåˆ™è¡¨½Cø™¿™ä¸ªcookie的生命期为æµè§ˆå™¨ä¼šè¯æœŸé—´åQŒåªè¦å…³é—æµè§ˆå™¨½H—å£åQŒcookiež®±æ¶ˆå¤×ƒº†ã€‚è¿™¿U生命期为æµè§ˆå™¨ä¼šè¯æœŸçš„ cookie被称ä¸ÞZ¼šè¯cookie。会è¯cookie一般ä¸å˜å‚¨åœ¨ç¡¬ç›˜ä¸Šè€Œæ˜¯ä¿å˜åœ¨å†…å˜é‡ŒåQŒå½“ç„¶è¿™¿Uè¡Œä¸ºåÆˆä¸æ˜¯è§„范规定的。如果设¾|®äº†˜q‡æœŸæ—‰™—´åQŒæµè§ˆå™¨ž®×ƒ¼šæŠŠcookieä¿å˜åˆ°ç¡¬ç›˜ä¸ŠåQŒå…³é—åŽå†æ¬¡æ‰“å¼€‹¹è§ˆå™¨ï¼Œ˜q™äº›cookieä»ç„¶æœ‰æ•ˆç›´åˆ°‘…过讑֮šçš„过期时间ã€?br /><br />å˜å‚¨åœ¨ç¡¬ç›˜ä¸Šçš„cookie å¯ä»¥åœ¨ä¸åŒçš„‹¹è§ˆå™¨è¿›½E‹é—´å…׃ínåQŒæ¯”如两个IE½H—å£ã€‚而对于ä¿å˜åœ¨å†…å˜é‡Œçš„cookieåQŒä¸åŒçš„‹¹è§ˆå™¨æœ‰ä¸åŒçš„å¤„ç†æ–¹å¼ã€‚对于IEåQŒåœ¨ä¸€ä¸ªæ‰“开的窗å£ä¸ŠæŒ?Ctrl-NåQˆæˆ–者从文äšgèœå•åQ‰æ‰“开的窗å£å¯ä»¥ä¸ŽåŽŸçª—å£å…±äº«ï¼Œè€Œä‹Éç”¨å…¶ä»–æ–¹å¼æ–°å¼€çš„IE˜q›ç¨‹åˆ™ä¸èƒ½å…±äº«å·²¾l打开的窗å£çš„内å˜cookieåQ›å¯¹äº?Mozilla Firefox0.8åQŒæ‰€æœ‰çš„˜q›ç¨‹å’Œæ ‡½{ùN¡µéƒ½å¯ä»¥å…±äº«åŒæ ïLš„cookie。一般æ¥è¯´æ˜¯ç”¨javascriptçš„window.open打开的窗å£ä¼šä¸ŽåŽŸ½H—å£å…׃ín内å˜cookie。æµè§ˆå™¨å¯¹äºŽä¼šè¯cookie的这¿Uåªè®¤cookieä¸è®¤äººçš„å¤„ç†æ–¹å¼¾l常¾l™é‡‡ç”¨session机制的web应用½E‹åºå¼€å‘è€…é€ æˆå¾ˆå¤§çš„困扰ã€?br /><br />下颞®±æ˜¯ä¸€ä¸ªgoolge讄¡½®cookieçš„å“应头的例å?br />HTTP/1.1 302 Found<br />Location: http://www.google.com/intl/zh-CN/<br />Set-Cookie: PREF=ID=0565f77e132de138:NW=1:TM=1098082649:LM=1098082649:S=KaeaCFPo49RiA_d8; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com<br />Content-Type: text/html<br /><img height="293" alt="image002.jpg" src="http://www.aygfsteel.com/images/blogjava_net/esprit/image002.jpg" width="408" border="0" /><br />˜q™æ˜¯ä½¿ç”¨HTTPLook˜q™ä¸ªHTTP Sniffer软äšgæ¥ä¿˜èŽïLš„HTTP通讯¾Uªå½•的一部分<br /><img height="344" alt="image004.jpg" src="http://www.aygfsteel.com/images/blogjava_net/esprit/image004.jpg" width="432" border="0" /><br />‹¹è§ˆå™¨åœ¨å†æ¬¡è®‰K—®goolgeçš„èµ„æºæ—¶è‡ªåЍå‘外å‘é€cookie<br /><img height="305" alt="image006.jpg" src="http://www.aygfsteel.com/images/blogjava_net/esprit/image006.jpg" width="421" border="0" /><br />使用Firefoxå¯ä»¥å¾ˆå®¹æ˜“的观察现有的cookieçš„å€?br />使用HTTPLooké…åˆFirefoxå¯ä»¥å¾ˆå®¹æ˜“çš„ç†è§£cookie的工作原ç†ã€?br /><img height="248" alt="image008.jpg" src="http://www.aygfsteel.com/images/blogjava_net/esprit/image008.jpg" width="324" border="0" /><br />IE也å¯ä»¥è®¾¾|®åœ¨æŽ¥å—cookieå‰è¯¢é—?br /><img height="249" alt="image010.jpg" src="http://www.aygfsteel.com/images/blogjava_net/esprit/image010.jpg" width="239" border="0" /><br />˜q™æ˜¯ä¸€ä¸ªè¯¢é—®æŽ¥å—cookieçš„å¯¹è¯æ¡†ã€?br />å››ã€ç†è§£session机制<br />session机制是一¿UæœåŠ¡å™¨ç«¯çš„æœºåˆ¶åQŒæœåŠ¡å™¨ä½¿ç”¨ä¸€¿Uç±»ä¼égºŽæ•£åˆ—表的¾l“æž„åQˆä¹Ÿå¯èƒ½ž®±æ˜¯ä½¿ç”¨æ•£åˆ—表)æ¥ä¿å˜ä¿¡æ¯ã€?br /><br />当程åºéœ€è¦äØ“æŸä¸ªå®¢æˆ·ç«¯çš„è¯äh±‚创å¾ä¸€ä¸ªsession的时候,æœåŠ¡å™¨é¦–å…ˆæ£€æŸ¥è¿™ä¸ªå®¢æˆïL«¯çš„请求里是å¦å·²åŒ…å«äº†ä¸€ä¸ªsessionæ ‡è¯†Â - ¿UîCØ“ session idåQŒå¦‚果已包å«ä¸€ä¸ªsession id则说明以å‰å·²¾l䨓æ¤å®¢æˆïL«¯åˆ›å¾˜q‡sessionåQŒæœåС噍ž®±æŒ‰ç…§session id把这ä¸?session‹‚€ç´¢å‡ºæ¥ä‹É用(如果‹‚€ç´¢ä¸åˆŽÍ¼Œå¯èƒ½ä¼šæ–°å»ÞZ¸€ä¸ªï¼‰åQŒå¦‚果客æˆïL«¯è¯äh±‚ä¸åŒ…å«session idåQŒåˆ™ä¸ºæ¤å®¢æˆ·ç«¯åˆ›å»ÞZ¸€ä¸ªsessionòq¶ä¸”生æˆä¸€ä¸ªä¸Žæ¤session相关è”çš„session idåQŒsession id的值应该是一个既ä¸ä¼šé‡å¤åQŒåˆä¸å®¹æ˜“被扑ֈ°è§„å¾‹ä»¥ä»¿é€ çš„å—符ä¸ÔŒ¼Œ˜q™ä¸ª session idž®†è¢«åœ¨æœ¬‹Æ¡å“应丘q”回¾l™å®¢æˆïL«¯ä¿å˜ã€?br /><br />ä¿å˜˜q™ä¸ªsession id的方å¼å¯ä»¥é‡‡ç”¨cookieåQŒè¿™æ ·åœ¨äº¤äº’˜q‡ç¨‹ä¸æµè§ˆå™¨å¯ä»¥è‡ªåŠ¨çš„æŒ‰ç…§è§„åˆ™æŠŠ˜q™ä¸ªæ ‡è¯†å‘挥¾l™æœåŠ¡å™¨ã€‚ä¸€èˆ¬è¿™ä¸ªcookieçš„åå—都是类ä¼égºŽSEEESIONIDåQŒè€Œã€‚比如weblogic对于web应用½E‹åºç”Ÿæˆçš„cookieåQŒJSESSIONID= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764åQŒå®ƒçš„åå—å°±æ˜?JSESSIONIDã€?br /><br />ç”׃ºŽcookieå¯ä»¥è¢«äh为的¼›æ¢åQŒå¿…™åÀLœ‰å…¶ä»–机制以便在cookieè¢«ç¦æ¢æ—¶ä»ç„¶èƒ½å¤ŸæŠŠsession idä¼ é€’å›žæœåŠ¡å™¨ã€‚ç»å¸¸è¢«ä½¿ç”¨çš„一¿U技术å«åšURLé‡å†™åQŒå°±æ˜¯æŠŠsession idç›´æŽ¥é™„åŠ åœ¨URL路径的åŽé¢ï¼Œé™„åŠ æ–¹å¼ä¹Ÿæœ‰ä¸¤ç§åQŒä¸€¿Uæ˜¯ä½œäØ“URLè·¯å¾„çš„é™„åŠ ä¿¡æ¯ï¼Œè¡¨çް形å¼ä¸ºhttp://...../xxx;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764<br />å¦ä¸€¿Uæ˜¯ä½œäØ“æŸ¥è¯¢å—ç¬¦ä¸²é™„åŠ åœ¨URLåŽé¢åQŒè¡¨çްåÅžå¼äØ“http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764<br />˜q™ä¸¤¿Uæ–¹å¼å¯¹äºŽç”¨æˆäh¥è¯´æ˜¯æ²¡æœ‰åŒºåˆ«çš„ï¼Œåªæ˜¯æœåŠ¡å™¨åœ¨è§£æžçš„æ—¶å€™å¤„ç†çš„æ–¹å¼ä¸åŒåQŒé‡‡ç”¨ç¬¬ä¸€¿Uæ–¹å¼ä¹Ÿæœ‰åˆ©äºŽæŠŠsession id的信æ¯å’Œæ£å¸¸½E‹åºå‚数区分开æ¥ã€?br />ä¸ÞZº†åœ¨æ•´ä¸ªäº¤äº’过½E‹ä¸å§‹ç»ˆä¿æŒçжæ€ï¼Œž®±å¿…™åÕdœ¨æ¯ä¸ªå®¢æˆ·ç«¯å¯èƒ½è¯·æ±‚的路径åŽé¢éƒ½åŒ…å«è¿™ä¸ªsession idã€?br /><br />å¦ä¸€¿U技术å«åšè¡¨å•éšè—å—ŒDüc€‚就是æœåŠ¡å™¨ä¼šè‡ªåŠ¨ä¿®æ”¹è¡¨å•,æ·ÕdŠ ä¸€ä¸ªéšè—å—ŒDµï¼Œä»¥ä¾¿åœ¨è¡¨å•æäº¤æ—¶èƒ½å¤ŸæŠŠsession idä¼ é€’å›žæœåŠ¡å™¨ã€‚æ¯”å¦‚ä¸‹é¢çš„表å•<br /><form name="testform" action="/xxx"><br /><input type="text"><br /></form><br />åœ¨è¢«ä¼ é€’ç»™å®¢æˆ·ç«¯ä¹‹å‰å°†è¢«æ”¹å†™æˆ<br /><form name="testform" action="/xxx"><br /><input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"><br /><input type="text"><br /></form><br />˜q™ç§æŠ€æœ¯çŽ°åœ¨å·²è¾ƒå°‘åº”ç”¨åQŒç¬”者接触过的很å¤è€çš„iPlanet6(SunONE应用æœåŠ¡å™¨çš„å‰èín)ž®×ƒ‹É用了˜q™ç§æŠ€æœ¯ã€?br />实际上这¿U技术å¯ä»¥ç®€å•的用对action应用URLé‡å†™æ¥ä»£æ›Ñ€?br /><br />在谈论session机制的时候,常常å¬åˆ°˜q™æ ·ä¸€¿U误解“åªè¦å…³é—æµè§ˆå™¨åQŒsessionž®±æ¶ˆå¤×ƒº†â€ã€‚其实å¯ä»¥æƒ³è±¡ä¸€ä¸‹ä¼šå‘˜å¡çš„例å,除鞙å‘Ö®¢ä¸ÕdŠ¨å¯¹åº—å®¶æå‡ºé”€å¡ï¼Œå¦åˆ™åº—å®¶¾l对ä¸ä¼šè½ÀL˜“åˆ é™¤™å‘Ö®¢çš„资料。对sessionæ¥è¯´ä¹Ÿæ˜¯ä¸€æ ïLš„åQŒé™¤éžç¨‹åºé€šçŸ¥æœåŠ¡å™¨åˆ é™¤ä¸€ä¸ªsessionåQŒå¦åˆ™æœåŠ¡å™¨ä¼šä¸€ç›´ä¿ç•™ï¼Œ½E‹åºä¸€èˆ¬éƒ½æ˜¯åœ¨ç”¨æˆ·åšlog off的时候å‘ä¸ªæŒ‡ä»¤åŽ»åˆ é™¤session。然而æµè§ˆå™¨ä»Žæ¥ä¸ä¼šä¸ÕdŠ¨åœ¨å…³é—之å‰é€šçŸ¥æœåŠ¡å™¨å®ƒž®†è¦å…³é—åQŒå› æ¤æœåС噍æ ÒŽœ¬ä¸ä¼šæœ‰æœºä¼šçŸ¥é“æµè§ˆå™¨å·²ç»å…³é—åQŒä¹‹æ‰€ä»¥ä¼šæœ‰è¿™¿U错觉,是大部分session机制都ä‹É用会è¯cookieæ¥ä¿å˜session idåQŒè€Œå…³é—æµè§ˆå™¨åŽè¿™ä¸?session idž®±æ¶ˆå¤×ƒº†åQŒå†‹Æ¡è¿žæŽ¥æœåŠ¡å™¨æ—¶ä¹Ÿž®±æ— 法找到原æ¥çš„session。如果æœåŠ¡å™¨è®„¡½®çš„cookie被ä¿å˜åˆ°¼‹¬ç›˜ä¸Šï¼Œæˆ–者ä‹É用柿U手ŒD‰|”¹å†™æµè§ˆå™¨å‘出的HTTPè¯äh±‚å¤ß_¼ŒæŠŠåŽŸæ¥çš„session idå‘é€ç»™æœåŠ¡å™¨ï¼Œåˆ™å†‹Æ¡æ‰“å¼€‹¹è§ˆå™¨ä»ç„¶èƒ½å¤Ÿæ‰¾åˆ°åŽŸæ¥çš„sessionã€?br /><br />æ°æ°æ˜¯ç”±äºŽå…³é—æµè§ˆå™¨ä¸ä¼šå¯ÆD‡´sessionè¢«åˆ é™¤ï¼Œ˜q«ä‹ÉæœåС噍䨓seesion讄¡½®äº†ä¸€ä¸ªå¤±æ•ˆæ—¶é—ß_¼Œå½“è·¼›Õd®¢æˆïL«¯ä¸Šä¸€‹Æ¡ä‹É用session的时间超˜q‡è¿™ä¸ªå¤±æ•ˆæ—¶é—´æ—¶åQŒæœåС噍ž®±å¯ä»¥è®¤ä¸ºå®¢æˆïL«¯å·²ç»åœæ¢äº†æ´»åŠ¨ï¼Œæ‰ä¼šæŠŠsessionåˆ é™¤ä»¥èŠ‚çœå˜å‚¨ç©ºé—´ã€?br /><br />五ã€ç†è§£javax.servlet.http.HttpSession<br />HttpSession是Javaòq›_°å¯¹sessionæœºåˆ¶çš„å®žçŽ°è§„èŒƒï¼Œå› äØ“å®ƒä»…ä»…æ˜¯ä¸ªæŽ¥å£ï¼Œå…·ä½“到æ¯ä¸ªweb应用æœåŠ¡å™¨çš„æä¾›å•†ï¼Œé™¤äº†å¯¹è§„范支æŒä¹‹å¤–,ä»ç„¶ä¼šæœ‰ä¸€äº›è§„范里没有规定的细微差异。这里我们以BEAçš„Weblogic Server8.1ä½œäØ“ä¾‹åæ¥æ¼”½Cºã€?br /><br />首先åQŒWeblogic Serveræä¾›äº†ä¸€¾pÕdˆ—çš„å‚æ•°æ¥æŽ§åˆ¶å®ƒçš„HttpSession的实玎ͼŒåŒ…括使用cookie的开关选项åQŒä‹É用URLé‡å†™çš„开关选项åQŒsessionæŒä¹…化的讄¡½®åQŒsession失效旉™—´çš„设¾|®ï¼Œä»¥åŠé’ˆå¯¹cookie的儿U设¾|®ï¼Œæ¯”如讄¡½®cookieçš„åå—ã€èµ\径ã€åŸŸåQ?cookieçš„ç”Ÿå˜æ—¶é—´ç‰ã€?br /><br />一般情况下åQŒsession都是å˜å‚¨åœ¨å†…å˜é‡ŒåQŒå½“æœåŠ¡å™¨è¿›½E‹è¢«åœæ¢æˆ–者é‡å¯çš„æ—¶å€™ï¼Œå†…å˜é‡Œçš„session也会被清½Iºï¼Œå¦‚果讄¡½®äº†sessionçš„æŒä¹…化ç‰ÒŽ€§ï¼ŒæœåŠ¡å™¨å°±ä¼šæŠŠsessionä¿å˜åˆ°ç¡¬ç›˜ä¸ŠåQŒå½“æœåŠ¡å™¨è¿›½E‹é‡æ–°å¯åŠ¨æˆ–˜q™äº›ä¿¡æ¯ž®†èƒ½å¤Ÿè¢«å†æ¬¡ä½¿ç”¨åQ?Weblogic Server支æŒçš„æŒä¹…æ€§æ–¹å¼åŒ…æ‹¬æ–‡ä»¶ã€æ•°æ®åº“ã€å®¢æˆïL«¯cookieä¿å˜å’Œå¤åˆ¶ã€?br /><br />å¤åˆ¶ä¸¥æ ¼è¯´æ¥ä¸ç®—æŒä¹…化ä¿å˜ï¼Œå› 䨓session实际上还是ä¿å˜åœ¨å†…å˜é‡Œï¼Œä¸è¿‡åŒæ ·çš„ä¿¡æ¯è¢«å¤åˆ¶åˆ°å„个cluster内的æœåŠ¡å™¨è¿›½E‹ä¸åQŒè¿™æ ·å³ä½¿æŸä¸ªæœåС噍˜q›ç¨‹åœæ¢å·¥ä½œä¹Ÿä»ç„¶å¯ä»¥ä»Žå…¶ä»–˜q›ç¨‹ä¸å–å¾—sessionã€?br /><br />cookieç”Ÿå˜æ—‰™—´çš„设¾|®åˆ™ä¼šåª„哿µè§ˆå™¨ç”Ÿæˆçš„cookieæ˜¯å¦æ˜¯ä¸€ä¸ªä¼šè¯cookie。默认是使用会è¯cookie。有兴趣的å¯ä»¥ç”¨å®ƒæ¥è¯•验我们在第四节里æåˆ°çš„那个误解ã€?br /><br />cookieçš„èµ\径对于web应用½E‹åºæ¥è¯´æ˜¯ä¸€ä¸ªéžå¸”R‡è¦çš„选项åQŒWeblogic Serverå¯¹è¿™ä¸ªé€‰é¡¹çš„é»˜è®¤å¤„ç†æ–¹å¼ä‹É得它与其他æœåŠ¡å™¨æœ‰æ˜Žæ˜„¡š„区别。åŽé¢æˆ‘们会专题讨论ã€?br /><br />关于session的设¾|®å‚考[5] http://e-docs.bea.com/wls/docs70/webapp/weblogic_xml.html#1036869<br /><br />å…ã€HttpSession常è§é—®é¢˜<br />åQˆåœ¨æœ¬å°èŠ‚ä¸sessionçš„å«ä¹‰äؓ⑤和⑥的混åˆåQ?br /><br /><br />1ã€session在何时被创å¾<br />一个常è§çš„误解是以为session在有客户端访问时ž®Þp¢«åˆ›å¾åQŒç„¶è€Œäº‹å®žæ˜¯ç›´åˆ°æŸserver端程åºè°ƒç”?HttpServletRequest.getSession(true)˜q™æ ·çš„è¯å¥æ—¶æ‰è¢«åˆ›å¾åQŒæ³¨æ„如果JSP没有昄¡¤ºçš„ä‹É用Â?lt;% @page session="false"%> 关é—sessionåQŒåˆ™JSPæ–‡äšg在编译æˆServletæ—¶å°†ä¼šè‡ªåŠ¨åŠ ä¸Šè¿™æ ·ä¸€æ¡è¯å?HttpSession session = HttpServletRequest.getSession(true);˜q™ä¹Ÿæ˜¯JSPä¸éšå«çš„ session对象的æ¥åކã€?br /><br />ç”׃ºŽsession会消耗内å˜èµ„æºï¼Œå› æ¤åQŒå¦‚æžœä¸æ‰“算使用sessionåQŒåº”该在所有的JSPä¸å…³é—它ã€?br /><br />2ã€sessionä½•æ—¶è¢«åˆ é™?br />¾l¼åˆå‰é¢çš„讨论,sessionåœ¨ä¸‹åˆ—æƒ…å†µä¸‹è¢«åˆ é™¤a.½E‹åºè°ƒç”¨HttpSession.invalidate();或b.è·ç¦»ä¸Šä¸€‹Æ¡æ”¶åˆ°å®¢æˆïL«¯å‘é€çš„session idæ—‰™—´é—´éš”‘…è¿‡äº†session的超时设¾|?或c.æœåŠ¡å™¨è¿›½E‹è¢«åœæ¢åQˆéžæŒä¹…sessionåQ?br /><br />3ã€å¦‚何åšåˆ°åœ¨‹¹è§ˆå™¨å…³é—æ—¶åˆ é™¤session<br />ä¸¥æ ¼çš„è®²åQŒåšä¸åˆ°˜q™ä¸€ç‚V€‚å¯ä»¥åšä¸€ç‚¹åŠªåŠ›çš„åŠžæ³•æ˜¯åœ¨æ‰€æœ‰çš„å®¢æˆ·ç«¯é¡µé¢é‡Œä½¿ç”¨javascript代ç window.oncoloseæ¥ç›‘视æµè§ˆå™¨çš„å…³é—动作,然åŽå‘æœåС噍å‘é€ä¸€ä¸ªè¯·æ±‚æ¥åˆ 除session。但是对于æµè§ˆå™¨å´©æºƒæˆ–è€…å¼ºè¡Œæ€æ»è¿›½E‹è¿™äº›éžå¸¸è§„手段ä»ç„¶æ— 能为力ã€?br /><br />4ã€æœ‰ä¸ªHttpSessionListener是怎么回事<br />ä½ å¯ä»¥åˆ›å»ø™¿™æ ïLš„listeneråŽÈ›‘控session的创建和销æ¯äº‹ä»Óž¼Œä½¿å¾—在å‘生这æ ïLš„事äšgæ—¶ä½ å¯ä»¥åšä¸€äº›ç›¸åº”çš„å·¥ä½œã€‚æ³¨æ„æ˜¯session的创建和销æ¯åŠ¨ä½œè§¦å‘listeneråQŒè€Œä¸æ˜¯ç›¸å。类似的与HttpSession有关的listener˜q˜æœ‰ HttpSessionBindingListeneråQŒHttpSessionActivationListenerå’?HttpSessionAttributeListenerã€?br /><br />5ã€å˜æ”‘Öœ¨sessionä¸çš„对象必须是å¯åºåˆ—化的å?br />䏿˜¯å¿…éœ€çš„ã€‚è¦æ±‚对象å¯åºåˆ—åŒ–åªæ˜¯äؓ了session能够在集¾Ÿ¤ä¸è¢«å¤åˆ¶æˆ–者能够æŒä¹…ä¿å˜æˆ–è€…åœ¨å¿…è¦æ—¶server能够暂时把session交æ¢å‡ºå†…å˜ã€‚在 Weblogic Serverçš„session䏿”¾¾|®ä¸€ä¸ªä¸å¯åºåˆ—化的对象在控制åîC¸Šä¼šæ”¶åˆîC¸€ä¸ªè¦å‘Šã€‚我所用过的æŸä¸ªiPlanet版本如果 session䏿œ‰ä¸å¯åºåˆ—化的对象åQŒåœ¨sessioné”€æ¯æ—¶ä¼šæœ‰ä¸€ä¸ªExceptionåQŒå¾ˆå¥‡æ€ªã€?br /><br />6ã€å¦‚何æ‰èƒ½æ£¼‹®çš„åº”ä»˜å®¢æˆ·ç«¯ç¦æ¢cookieçš„å¯èƒ½æ€?br />å¯Òމ€æœ‰çš„URL使用URLé‡å†™åQŒåŒ…括超链接åQŒformçš„actionåQŒå’Œé‡å®šå‘çš„URLåQŒå…·ä½“åšæ³•å‚è§[6]<br />http://e-docs.bea.com/wls/docs70/webapp/sessions.html#100770<br /><br />7ã€å¼€ä¸¤ä¸ª‹¹è§ˆå™¨çª—å£è®¿é—®åº”用程åºä¼šä½¿ç”¨åŒä¸€ä¸ªsession˜q˜æ˜¯ä¸åŒçš„session<br />å‚è§½W¬ä¸‰ž®èЂ坹cookie的讨论,对sessionæ¥è¯´æ˜¯åªè®¤idä¸è®¤äººï¼Œå› æ¤ä¸åŒçš„æµè§ˆå™¨åQŒä¸åŒçš„½H—壿‰“开方å¼ä»¥åŠä¸åŒçš„cookieå˜å‚¨æ–¹å¼éƒ½ä¼šå¯¹è¿™ä¸ªé—®é¢˜çš„½{”案有媄å“ã€?br /><br />8ã€å¦‚何防æ¢ç”¨æˆäh‰“开两个‹¹è§ˆå™¨çª—壿“作导致的sessionæ··äØ•<br />˜q™ä¸ªé—®é¢˜ä¸Žé˜²æ¢è¡¨å•多‹Æ¡æäº¤æ˜¯¾cÖM¼¼çš„,å¯ä»¥é€šè¿‡è®„¡½®å®¢æˆ·ç«¯çš„令牌æ¥è§£å†Ÿë€‚就是在æœåŠ¡å™¨æ¯‹Æ¡ç”Ÿæˆä¸€ä¸ªä¸åŒçš„id˜q”回¾l™å®¢æˆïL«¯åQŒåŒæ—¶ä¿å˜åœ¨session里,客户端æäº¤è¡¨å•时必须把这个id也返回æœåС噍åQŒç¨‹åºé¦–先比较返回的id与ä¿å˜åœ¨session里的值是å¦ä¸€è‡ß_¼Œå¦‚æžœä¸ä¸€è‡´åˆ™è¯´æ˜Žæœ¬æ¬¡æ“作已ç»è¢«æäº¤è¿‡äº†ã€‚å¯ä»¥å‚看《J2EEæ ¸å¿ƒæ¨¡å¼ã€‹å…³äºŽè¡¨½Cºå±‚模å¼çš„éƒ¨åˆ†ã€‚éœ€è¦æ³¨æ„的是对于ä‹É用javascript window.open打开的窗å£ï¼Œä¸€èˆ¬ä¸è®„¡½®˜q™ä¸ªidåQŒæˆ–者ä‹É用å•独的idåQŒä»¥é˜²ä¸»½H—壿— 法æ“作åQŒå¾è®®ä¸è¦å†window.open打开的窗å£é‡Œåšä¿®æ”ÒŽ“作,˜q™æ ·ž®±å¯ä»¥ä¸ç”¨è®¾¾|®ã€?br /><br />9ã€äؓ什么在Weblogic Server䏿”¹å˜session的值åŽè¦é‡æ–°è°ƒç”¨ä¸€‹Æ¡session.setValue<br />åšè¿™ä¸ªåŠ¨ä½œä¸»è¦æ˜¯ä¸ÞZº†åœ¨é›†¾Ÿ¤çŽ¯å¢ƒä¸æç¤ºWeblogic Server sessionä¸çš„值å‘生了改å˜åQŒéœ€è¦å‘å…¶ä»–æœåŠ¡å™¨è¿›½E‹å¤åˆ¶æ–°çš„session倹{€?br /><br />10ã€äؓ什么sessionä¸è§äº?br />排除sessionæ£å¸¸å¤±æ•ˆçš„å› ç´ ä¹‹å¤–ï¼ŒæœåŠ¡å™¨æœ¬íw«çš„å¯èƒ½æ€§åº”该是微乎其微的,虽然½W”者在iPlanet6SP1åŠ è‹¥òq²è¡¥ä¸çš„Solaris版本上倒也é‡åˆ°˜q‡ï¼›‹¹è§ˆå™¨æ’ä»¶çš„å¯èƒ½æ€§æ¬¡ä¹‹ï¼Œ½W”者也é‡åˆ°˜q?721æ’äšgé€ æˆçš„问题;ç†è®ºä¸Šé˜²ç«å¢™æˆ–è€…ä»£ç†æœåŠ¡å™¨åœ¨cookie处ç†ä¸Šä¹Ÿæœ‰å¯èƒ½ä¼šå‡ºçŽ°é—®é¢˜ã€?br />出现˜q™ä¸€é—®é¢˜çš„å¤§éƒ¨åˆ†åŽŸå› éƒ½æ˜¯½E‹åºçš„错误,最常è§çš„就是在一个应用程åºä¸åŽ»è®¿é—®å¦å¤–一个应用程åºã€‚æˆ‘ä»¬åœ¨ä¸‹ä¸€èŠ‚è®¨è®ø™¿™ä¸ªé—®é¢˜ã€?br /><br />七ã€è·¨åº”用½E‹åºçš„sessionå…׃ín<br /><br />常常有这æ ïLš„æƒ…况åQŒä¸€ä¸ªå¤§™å¹ç›®è¢«åˆ†å‰²æˆè‹¥å¹²ž®é¡¹ç›®å¼€å‘,ä¸ÞZº†èƒ½å¤Ÿäº’ä¸òq²æ‰°åQŒè¦æ±‚æ¯ä¸ªå°™å¹ç›®ä½œäؓ一个å•独的web应用½E‹åºå¼€å‘ï¼Œå¯æ˜¯åˆîCº†æœ€åŽçªç„¶å‘现æŸå‡ 个ž®é¡¹ç›®ä¹‹é—´éœ€è¦å…±äº«ä¸€äº›ä¿¡æ¯ï¼Œæˆ–者想使用sessionæ¥å®žçްSSO(single sign on)åQŒåœ¨sessionä¸ä¿å˜login的用户信æ¯ï¼Œæœ€è‡ªç„¶çš„è¦æ±‚是应用½E‹åºé—´èƒ½å¤Ÿè®¿é—®å½¼æ¤çš„sessionã€?br /><br />然而按照Servlet规范åQŒsession的作用范围应该仅仅é™äºŽå½“å‰åº”用程åºä¸‹åQŒä¸åŒçš„应用½E‹åºä¹‹é—´æ˜¯ä¸èƒ½å¤Ÿäº’相讉K—®å¯ÒŽ–¹çš„session的。å„个应用æœåŠ¡å™¨ä»Žå®žé™…æ•ˆæžœä¸Šéƒ½éµå®ˆäº†˜q™ä¸€è§„范åQŒä½†æ˜¯å®žçŽ°çš„¾l†èŠ‚å´å¯èƒ½å„有ä¸åŒï¼Œå› æ¤è§£å†³è·¨åº”用程åºsessionå…׃ín的方法也å„ä¸ç›¸åŒã€?br /><br />首先æ¥çœ‹ä¸€ä¸‹Tomcat是如何实现web应用½E‹åºä¹‹é—´session的隔¼›Èš„åQŒä»Ž Tomcat讄¡½®çš„cookie路径æ¥çœ‹åQŒå®ƒå¯¹ä¸åŒçš„应用½E‹åºè®„¡½®çš„cookie路径是ä¸åŒçš„åQŒè¿™æ ·ä¸åŒçš„应用½E‹åºæ‰€ç”¨çš„session id是ä¸åŒçš„åQŒå› æ¤å³ä½¿åœ¨åŒä¸€ä¸ªæµè§ˆå™¨½H—å£é‡Œè®¿é—®ä¸åŒçš„应用½E‹åºåQŒå‘é€ç»™æœåŠ¡å™¨çš„session id也å¯ä»¥æ˜¯ä¸åŒçš„ã€?br /><br /><img height="219" alt="image012.jpg" src="http://www.aygfsteel.com/images/blogjava_net/esprit/image012.jpg" width="288" border="0" /><img height="215" alt="image014.jpg" src="http://www.aygfsteel.com/images/blogjava_net/esprit/image014.jpg" width="257" border="0" /><br />  <br /><br />æ ÒŽ®˜q™ä¸ªç‰ÒŽ€§ï¼Œæˆ‘们å¯ä»¥æŽ¨æµ‹Tomcatä¸session的内å˜ç»“构大致如下ã€?br /><br /><img height="278" alt="image016.jpg" src="http://www.aygfsteel.com/images/blogjava_net/esprit/image016.jpg" width="444" border="0" /><br /> <br /><br />½W”者以å‰ç”¨˜q‡çš„iPlanetä¹Ÿé‡‡ç”¨çš„æ˜¯åŒæ ïLš„æ–¹å¼åQŒä¼°è®¡SunONE与iPlanet之间ä¸ä¼šæœ‰å¤ªå¤§çš„差别。对于这¿Uæ–¹å¼çš„æœåŠ¡å™¨ï¼Œè§£å†³çš„æ€èµ\很简å•,实际实行èµäh¥ä¹Ÿä¸éš¾ã€‚è¦ä¹ˆè®©æ‰€æœ‰çš„应用½E‹åºå…׃ín一个session idåQŒè¦ä¹ˆè®©åº”用½E‹åºèƒ½å¤ŸèŽ·å¾—å…¶ä»–åº”ç”¨½E‹åºçš„session idã€?br /><br />iPlanet䏿œ‰ä¸€¿U很½Ž€å•çš„æ–ÒŽ³•æ¥å®žçŽ°å…±äº«ä¸€ä¸ªsession idåQŒé‚£ž®±æ˜¯æŠŠå„个应用程åºçš„cookie路径都设ä¸?åQˆå®žé™…上应该æ˜?NASAppåQŒå¯¹äºŽåº”ç”¨ç¨‹åºæ¥è®²å®ƒçš„ä½œç”¨ç›¸å½“äºŽæ ¹ï¼‰ã€?br /><session-info><br /><path>/NASApp</path><br /></session-info><br /><br />éœ€è¦æ³¨æ„的是,æ“作å…׃ínçš„session应该éµåó@一些编½E‹çº¦å®šï¼Œæ¯”如在session attributeåå—çš„å‰é¢åŠ ä¸Šåº”ç”¨ç¨‹åºçš„å‰ç¼€åQŒä‹Éå¾?setAttribute("name", "neo")å˜æˆsetAttribute("app1.name", "neo")åQŒä»¥é˜²æ¢å‘½å½Iºé—´å†²çªåQŒå¯¼è‡´äº’相覆盖ã€?br /><br /><br />在Tomcatä¸åˆ™æ²¡æœ‰˜q™ä¹ˆæ–¹ä¾¿çš„选择。在Tomcat版本3上,我们˜q˜å¯ä»¥æœ‰ä¸€äº›æ‰‹ŒD‰|¥å…׃ínsession。对于版æœ?以上的TomcatåQŒç›®å‰ç¬”者尚未å‘现简å•的办法。åªèƒ½å€ŸåŠ©äºŽç¬¬ä¸‰æ–¹çš„åŠ›é‡ï¼Œæ¯”如使用文äšgã€æ•°æ®åº“ã€JMS或者客æˆïL«¯cookieåQŒURL傿•°æˆ–者éšè—å—ŒD늉手段ã€?br /><br />我们å†çœ‹ä¸€ä¸‹Weblogic Server是如何处ç†sessionçš„ã€?br /><br /><br />  <img height="208" alt="image018.jpg" src="http://www.aygfsteel.com/images/blogjava_net/esprit/image018.jpg" width="288" border="0" /><img height="207" alt="image020.jpg" src="http://www.aygfsteel.com/images/blogjava_net/esprit/image020.jpg" width="269" border="0" /><br /><br />从截å±ç”»é¢ä¸Šå¯ä»¥çœ‹åˆ°Weblogic Serverå¯Òމ€æœ‰çš„应用½E‹åºè®„¡½®çš„cookieçš„èµ\径都æ˜?åQŒè¿™æ˜¯ä¸æ˜¯æ„味ç€åœ¨Weblogic Serverä¸é»˜è®¤çš„ž®±å¯ä»¥å…±äº«session了呢åQŸç„¶è€Œä¸€ä¸ªå°å®žéªŒå›_¯è¯æ˜Žå³ä‹Éä¸åŒçš„应用程åºä‹É用的是åŒä¸€ä¸ªsessionåQŒå„个应用程åºä»ç„¶åªèƒ½è®¿é—®è‡ªå·±æ‰€è®„¡½®çš„那些属性。这说明Weblogic Serverä¸çš„session的内å˜ç»“æž„å¯èƒ½å¦‚ä¸?br /><br /><img height="290" alt="image022.jpg" src="http://www.aygfsteel.com/images/blogjava_net/esprit/image022.jpg" width="420" border="0" /><br /> <br /><br />对于˜q™æ ·ä¸€¿U结构,åœ?session机制本èín上æ¥è§£å†³sessionå…׃ín的问题应该是ä¸å¯èƒ½çš„了。除了借助于第三方的力é‡ï¼Œæ¯”如使用文äšgã€æ•°æ®åº“ã€JMS或者客æˆïL«¯ cookieåQŒURL傿•°æˆ–者éšè—å—ŒD늉手段åQŒè¿˜æœ‰ä¸€¿Uè¾ƒä¸ºæ–¹ä¾¿çš„åšæ³•åQŒå°±æ˜¯æŠŠä¸€ä¸ªåº”用程åºçš„session攑ֈ°ServletContextä¸ï¼Œ˜q™æ ·å¦å¤–一个应用程åºå°±å¯ä»¥ä»ŽServletContextä¸å–å¾—å‰ä¸€ä¸ªåº”用程åºçš„引用。示例代ç 如下,<br /><br />应用½E‹åºA<br />context.setAttribute("appA", session); <br /><br />应用½E‹åºB<br />contextA = context.getContext("/appA");<br />HttpSession sessionA = (HttpSession)contextA.getAttribute("appA"); <br /><br />值得注æ„的是˜q™ç§ç”¨æ³•ä¸å¯¿UÀL¤åQŒå› ä¸ºæ ¹æ®ServletContextçš„JavaDocåQŒåº”用æœåС噍å¯ä»¥å¤„äºŽå®‰å…¨çš„åŽŸå› å¯¹äºŽcontext.getContext("/appA");˜q”回½Iºå€û|¼Œä»¥ä¸Šåšæ³•åœ¨Weblogic Server 8.1ä¸é€šè¿‡ã€?br /><br />那么Weblogic Serverä¸ÞZ»€ä¹ˆè¦æŠŠæ‰€æœ‰çš„应用½E‹åºçš„cookie路径都设ä¸?å‘¢ï¼ŸåŽŸæ¥æ˜¯äؓ了SSOåQŒå‡¡æ˜¯å…±äº«è¿™ä¸ªsession的应用程åºéƒ½å¯ä»¥å…׃ín认è¯çš„ä¿¡æ¯ã€‚一个简å•的实验ž®±å¯ä»¥è¯æ˜Žè¿™ä¸€ç‚¹ï¼Œä¿®æ”¹é¦–å…ˆç™Õd½•的那个应用程åºçš„æè¿°½W¦weblogic.xmlåQŒæŠŠcookie路径修改ä¸?appA 讉K—®å¦å¤–一个应用程åºä¼šé‡æ–°è¦æ±‚ç™Õd½•åQŒå³ä½¿æ˜¯å过æ¥ï¼Œå…ˆè®¿é—®cookie路径ä¸?的应用程åºï¼Œå†è®¿é—®ä¿®æ”¹è¿‡è·¯å¾„的这个,虽然ä¸å†æç¤ºç™Õd½•åQŒä½†æ˜¯ç™»å½•的用户信æ¯ä¹Ÿä¼šä¸¢å¤±ã€‚注æ„嚘q™ä¸ªå®žéªŒæ—¶è®¤è¯æ–¹å¼åº”该ä‹É用FORMåQŒå› 为æµè§ˆå™¨å’ŒwebæœåС噍坹basicè®¤è¯æ–¹å¼æœ‰å…¶ä»–çš„å¤„ç†æ–¹å¼åQŒç¬¬äºŒæ¬¡è¯äh±‚的认è¯ä¸æ˜¯é€šè¿‡ sessionæ¥å®žçŽ°çš„ã€‚å…·ä½“è¯·å‚看[7] secion 14.8 AuthorizationåQŒä½ å¯ä»¥ä¿®æ”¹æ‰€é™„çš„½CÞZ¾‹½E‹åºæ¥åš˜q™äº›è¯•验ã€?br /><br />å…«ã€æ€È»“<br />session机制本èínòq¶ä¸å¤æ‚åQŒç„¶è€Œå…¶å®žçŽ°å’Œé…¾|®ä¸Šçš„絋zÀL€§å´ä½¿å¾—å…·ä½“æƒ…å†µå¤æ‚多å˜ã€‚è¿™ä¹Ÿè¦æ±‚我们ä¸èƒ½æŠŠä»…ä»…æŸä¸€‹Æ¡çš„¾l验或者æŸä¸€ä¸ªæµè§ˆå™¨åQŒæœåŠ¡å™¨çš„ç»éªŒå½“作普é适用的ç»éªŒï¼Œè€Œæ˜¯å§‹ç»ˆéœ€è¦å…·ä½“情况具体分æžã€?br /><br />关于作者:<br />郎云é¹ï¼ˆdev2dev ID: hippiewolfåQ‰ï¼Œè½¯äšg工程师,从事J2EEå¼€å?br />电åé‚®äšgåQšlangyunpeng@yahoo.com.cn<br />地å€åQšå¤§˜qžèÊYä»¶å›è·?1åïL§‘技大厦A座大˜qžåšæ¶µå’¨è¯¢æœåŠ¡æœ‰é™å…¬å?br /><br />å‚考文档:<br />[1] Preliminary Specification http://wp.netscape.com/newsref/std/cookie_spec.html<br />[2] RFC2109 http://www.rfc-editor.org/rfc/rfc2109.txt<br />[3] RFC2965 http://www.rfc-editor.org/rfc/rfc2965.txt<br />[4] The Unofficial Cookie FAQ http://www.cookiecentral.com/faq/<br />[5] http://e-docs.bea.com/wls/docs70/webapp/weblogic_xml.html#1036869<br />[6] http://e-docs.bea.com/wls/docs70/webapp/sessions.html#100770<br />[7] RFC2616 <a >http://www.rfc-editor.org/rfc/rfc2616.txt</a><br /><img src ="http://www.aygfsteel.com/esprit/aggbug/35817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/esprit/" target="_blank">esprit</a> 2006-03-17 13:43 <a href="http://www.aygfsteel.com/esprit/archive/2006/03/17/35817.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>Linux下EclipseåQŒMyeclipse安装http://www.aygfsteel.com/esprit/archive/2006/01/19/28628.htmlespritespritThu, 19 Jan 2006 03:03:00 GMThttp://www.aygfsteel.com/esprit/archive/2006/01/19/28628.htmlhttp://www.aygfsteel.com/esprit/comments/28628.htmlhttp://www.aygfsteel.com/esprit/archive/2006/01/19/28628.html#Feedback2http://www.aygfsteel.com/esprit/comments/commentRss/28628.htmlhttp://www.aygfsteel.com/esprit/services/trackbacks/28628.html我这è¾ÒŽ˜¯ç”¨çš„æ˜¯eclipse3.1 + Myeclipse4.0ã€?BR>
下è²å¿…è¦çš„èÊYä»Óž¼š
eclipse-SDK-3.1-linux-gtk.tar.gzåQ?A >http://download.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/index.php
EnterpriseWorkbenchInstaller_4.0GA_E3.1.binåQ?A >http://downloads.myeclipseide.com/downloads/products/eworkbench/4.0GA/EnterpriseWorkbenchInstaller_4.0GA_E3.1.bin
myeclipse_4_0_keygen.exeåQ?A >http://www.matrix.org.cn/resource/upload/content/2005_09_02_094042_poSETmYBSq.rar
安装EclipseåQ?BR>
其实安装Eclipse˜q˜æ˜¯è›®ç®€å•çš„åQŒæˆ‘˜q™è¾¹ž®†å…¶è§£åŽ‹åˆ?usr/java目录ä¸?BR> [root@esprit java]tar -zxvf /PATH/eclipse-SDK-3.1-linux-gtk.tar.gz
˜q™é‡ŒPATHæ˜¯ä½ å˜æ”¾eclipse-SDK-3.1-linux-gtk.tar.gz的目录,解压åŽï¼Œåœ?usr/java目录下就有了eclipse˜q™ä¸ªç›®å½•
接下æ¥ï¼Œæˆ‘æ¥ä¸ºeclipse创å¾ä¸€ä¸ªå›¾å½¢ç•Œé¢å¿«é€Ÿå¯åЍ项åQˆç±»ä¼égºŽwindows下的桌é¢å¿«æ·æ–¹å¼åQ‰ï¼Œå›_‡»å›‘ÖŞ界é¢â€”—〉选择"æ–°å¾å¯åЍå™?New Launcher)"——〉å¿UŽÍ¼ˆNameåQ‰è¾“å…¥Eclipse——〉命令(CommandåQ‰é€‰æ‹©Eclipse解压目录/usr/java/eclipseâ€”â€”ã€‰å›¾æ ‡ï¼ˆIconåQ‰å¯ä»¥é€‰æ‹©Eclipseçš„å›¾æ ‡â€”â€”ã€‰ç‚¹å‡È¡®å®šå®Œæˆï¼Œç„¶åŽä½ å°±å¯ä»¥åŒå‡»å›‘ÖŞ界é¢ä¸çš„快速å¯åЍæ¥å¯åŠ¨ä½ çš„eclipse了,当然也å¯ä»¥åœ¨shell下执行eclipseæ ¹ç›®å½•ä¸‹çš„æ‰§è¡Œæ–‡ä»¶æ¥å¯åЍeclipseåQ?BR> eclipseå¯åЍåŽè¿˜éœ€è¦ä¸€äº›å¿…è¦çš„é…ç½®åQŒè¿™é‡Œå°±ä¸è®²äº?
安装MyeclipseåQ?BR>
䏋颿¥å®‰è£…MyeclipseåQŒMyeclipse的安装跟windows下的安装òq¶æ— 多大区别
shell下执è¡?SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: SimSun; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">EnterpriseWorkbenchInstaller_4.0GA_E3.1.binæ–‡äšgåQ?BR> [root@esprit java]# ./PATH/EnterpriseWorkbenchInstaller_4.0GA_E3.1.bin
按回车åŽå®ƒä¼šå…ˆæ£€‹¹‹ä½ ¾pÈ»Ÿä¸çš„环境åQŒå¾…‹‚€‹¹‹å®Œæ¯•,æ£å¸¸çš„è¯ä¼šå‡ºçްMyeclipse安装画é¢åQŒè¿™ä¸‹æ¥çš„æ“ä½œè·Ÿwindows下的æ“作是一æ ïLš„åQŒè¿™é‡Œé¢ä¼šå…ˆè®©ä½ 选择eclipse的安装目录,我这里就æ˜?usr/java/eclipseåQŒç„¶åŽå†é€‰æ‹©å®‰è£…目录åQŒè¾“å…?usr/java/myeclipseåQŒç„¶åŽä¸€è·¯nextž®Þp¡Œäº?^_^
安装完æˆåŽï¼Œå¯åЍeclipseåQŒç‚¹å‡»èœå•项Help——〉Software Updates——〉Manager Configuration
在打开的窗å£ä¸å¯ä»¥çœ‹åˆ°å·²ç»æœ‰myeclipse在那里了
æŽ¥ç€æˆ‘们æ¥è¿è¡Œmyeclipse_4_0_keygen.exeåQŒè¿™ä¸ªæˆ‘是在windows下执行的åQŒå¾—到注册ç åŽï¼Œeclipseä¸é€‰æ‹©Myeclipse——〉Update SubscriptionåQŒå¼¹å‡ºçš„½H—å£ä¸è¾“入刚æ‰å¾—到的注册ç ç¡®å®šï¼Œå®Œæˆæ³¨å†ŒåQ?BR>
é…ç½®TomcatåQ?BR>
eclipseä¸é€‰æ‹©window——〉preferencesåQŒåœ¨å¼¹å‡ºçš„窗å£é€‰æ‹©Myeclipse——〉Application Servers——〉Tomcat5
接ç€åœ¨Tomcat server˜q™é‡Œé€‰æ‹©"Enable",下é¢Tomcat Home Directoryé€‰æ‹©ä½ tomcat安装的目录,然åŽå³ä¸‹è§’çš„Apply应用åQŒç¡®å®šé€€å‡ºï¼åQˆlinux˜q˜ä¸å¤ªç†ŸåQŒå°±ä¸æˆªå›¾äº†
åQ?BR>
到这里,Java å¼€å‘的环境½Ž—是æå¾å®Œäº†åQŒå¯ä»¥åšä½ 想åšäº†åQ?IMG height=19 src="http://www.aygfsteel.com/Emoticons/teeth_smile.gif" width=19 border=0>

]]> - Linux下TomcatåQŒMysql安装http://www.aygfsteel.com/esprit/archive/2006/01/18/28536.htmlespritespritWed, 18 Jan 2006 09:35:00 GMThttp://www.aygfsteel.com/esprit/archive/2006/01/18/28536.htmlhttp://www.aygfsteel.com/esprit/comments/28536.htmlhttp://www.aygfsteel.com/esprit/archive/2006/01/18/28536.html#Feedback1http://www.aygfsteel.com/esprit/comments/commentRss/28536.htmlhttp://www.aygfsteel.com/esprit/services/trackbacks/28536.html
1.下è²ç›¸å…³è½¯äšgåQ?BR> jakarta-tomcat-5.0.28.tar.gz:http://mirror.vmmatrix.net/apache/tomcat/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28.tar.gz
mysql-standard-5.0.18-linux-i686-glibc23.tar.gz:http://dev.mysql.com/downloads/mysql/5.0.html
我下载的都是æºç 包,所以解压到指定目录å›_¯
2.å…ˆæ¥å®‰è£…mysqlåQ?BR> [root@esprit local]# groupadd mysql #æ·ÕdŠ ä¸€ä¸ªç”¨æˆïL»„mysql
[root@esprit local]# useradd -g mysql mysql #æ·ÕdŠ ä¸€ä¸ªç”¨æˆ·mysql到组mysql
[root@esprit local]# tar -zxvf /PATH/mysql-standard-5.0.18-linux-i686-glibc23.tar.gz #˜q™é‡Œçš„PATHæ˜¯ä½ çš„mysql包放¾|®çš„目录åQŒæˆ‘˜q™é‡Œè§£åŽ‹åˆ?usr/local目录ä¸?BR> [root@esprit local]# ln -s mysql-standard-5.0.18-linux-i686-glibc23 mysql #创å¾ä¸€ä¸ªæ–‡ä»‰™“¾æŽ?BR> [root@esprit local]# cd mysql
[root@esprit mysql]# scripts/mysql_install_db --user=mysql #åˆå§‹åŒ–æ•°æ®åº“åQˆåˆ›å»ºæ•°æ®åº“和表åQ?BR> 修改文äšg的所有者:
[root@esprit mysql]# chown -R root .
[root@esprit mysql]# chown -R mysql data
[root@esprit mysql]# chgrp -R mysql .
æŽ¥ä¸‹æ¥æˆ‘们å¯ä»¥å¯åЍmysql了:
[root@esprit mysql]# bin/mysqld_safe --user=mysql &
å¯åŠ¨åŽæˆ‘们å¯ä»¥ä‹É用mysql -u root -p ç™Õd…¥åQŒé»˜è®¤å¯†ç 䨓½I?BR> å¯ä»¥é€šè¿‡mysqladmin -u root -p password æ–°å¯†ç æ¥ä¿®æ”¹å¯†ç
好了åQŒmysql的安装就到这里ï¼
3.安装TomcatåQ?BR> [root@esprit java]# tar -zxvf /PATH/jakarta-tomcat-5.0.28.tar.gz #åŒæ ·˜q™é‡Œçš„PATHæ˜¯ä½ tomcat包放¾|®çš„目录åQŒæˆ‘˜q™é‡Œè§£åŽ‹åˆ?usr/java目录ä¸?BR> [root@esprit java]# ln -s jakarta-tomcat-5.0.28 tomcat #åŒæ ·åˆ›å¾ä¸€ä¸ªæ–‡ä»‰™“¾æŽ?BR> 接下æ¥é…¾|®CATALINA_HOME:
[root@esprit java]# vi /etc/profile
在文件尾æ·ÕdŠ
CATALINA_HOME=/usr/java/tomcat
export CATALINA_HOME
:wq ä¿å˜é€€å‡?BR> 釿–°å¯åЍ¾pÈ»Ÿä½‰K…¾|®ç”Ÿæ•?BR> 接瀞®±å¯ä»¥å¯åЍtomcatäº?nbsp;
[root@esprit tomcat]# bin/startup.sh
æ£å¸¸çš„è¯ä¼šçœ‹åˆ°shell下输出:
Using CATALINA_BASE: /usr/java/tomcat
Using CATALINA_HOME: /usr/java/tomcat
Using CATALINA_TMPDIR: /usr/java/tomcat/temp
Using JAVA_HOME: /usr/java/jdk1.5.0_06
ç„¶åŽåœ¨æµè§ˆå™¨ä¸è¾“入:http://localhost:8080 ž®×ƒ¼šå‡ºçްtomcat‹Æ¢è¿Ž™åµé¢ ^_^
å‡å¦‚å‘ç”Ÿäº†é”™è¯¯ä½ å¯ä»¥å¯Ÿçœ‹/logs/catalina.out˜q™ä¸ªæ–‡äšgåQ?BR>4.½Ž¡ç†tomcat
[root@esprit tomcat]# vi conf/tomcat-users.xml
åœ?lt;tomcat-users>å’?lt;/tomcat-users>ä¹‹é—´åŠ å…¥åQ?BR> <user username="admin" password="admin" roles="admin,manager"/>
˜q™æ ·‹¹è§ˆå™¨ä¸è¾“å…¥:http://localhost:8080/admin ç™Õd…¥åŽå°±å¯ä»¥æ¥ç®¡ç†äº†
输入http://localhost:8080/manager/html æ¥ç®¡ç†ä½ 的工½E‹é¡¹ç›®äº†
好了åQŒå…ˆè¯´è¿™ä¹ˆå¤šäº†ï¼å˜¿å˜¿â€”â€?BR> 
]]> - Linux下jdk的安�/title><link>http://www.aygfsteel.com/esprit/archive/2006/01/18/28489.html</link><dc:creator>esprit</dc:creator><author>esprit</author><pubDate>Wed, 18 Jan 2006 07:05:00 GMT</pubDate><guid>http://www.aygfsteel.com/esprit/archive/2006/01/18/28489.html</guid><wfw:comment>http://www.aygfsteel.com/esprit/comments/28489.html</wfw:comment><comments>http://www.aygfsteel.com/esprit/archive/2006/01/18/28489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/esprit/comments/commentRss/28489.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/esprit/services/trackbacks/28489.html</trackback:ping><description><![CDATA[
<p>˜q™ä¸¤å¤©é—²ç€æ²¡äº‹åQŒå°±ç”¨VMware装了个LinuxåQˆRedHat9.0åQ‰çŽ©çŽ©ï¼ŒçŽ°è®°å½•linux下java环境的酾|?br /><br />1.下è²åQ?font face="Simsun"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: SimSun; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">jdk-1_5_0_06-linux-i586-rpm.bin<br />   地å€åQ?a >http://java.sun.com/j2se/1.5.0/download.jsp</a><br /></span></font><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: SimSun; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">2.¾l™æ–‡ä»¶åŠ ä¸Šå¯æ‰§è¡Œæƒé™<br />   [root@esprit java]# chmod +x <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: SimSun; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">jdk-1_5_0_06-linux-i586-rpm.bin<br />3.执行<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: SimSun; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">jdk-1_5_0_06-linux-i586-rpm.bin<br /></span></span>   [root@esprit java]# ./<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: SimSun; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">jdk-1_5_0_06-linux-i586-rpm.bin<br />   执行åŽç”Ÿæˆ?span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: SimSun; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">jdk-1_5_0_06-linux-i586-rpm<br />4.安装<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: SimSun; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">jdk-1_5_0_06-linux-i586-rpm<br /></span></span></span>   [root@esprit java]# rpm -ivh <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: SimSun; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">jdk-1_5_0_06-linux-i586-rpm</span><br style="mso-special-character: line-break" />   ˜q™é‡Œæˆ‘jdk安装åœ?usr/java目录ä¸?br />5.é…置环境å˜é‡<br />   环境å˜é‡é…置有三¿U方法(分别是:修改/etc/profileæ–‡äšgåQŒä¿®æ”¹ç”¨æˆïL›®å½•下çš?bashrcæ–‡äšgåQŒç›´æŽ¥åœ¨shell下修改)<br />˜q™é‡Œæˆ‘åªè®²æˆ‘用到的修æ”?etc/profileæ–‡äšg<br />   [root@esprit java]# vi /etc/profile<br />   打开文äšgåŽï¼ŒæŒ?I é”®ï¼Œåœ¨æ–‡ä»¶åŽæ·ÕdŠ åQ?br /></span></p>
<p>
</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
<img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />
<span style="COLOR: #000000">JAVA_HOME</span>
<span style="COLOR: #000000">=/</span>
<span style="COLOR: #000000">usr</span>
<span style="COLOR: #000000">/</span>
<span style="COLOR: #000000">java</span>
<span style="COLOR: #000000">/</span>
<span style="COLOR: #000000">jdk1.</span>
<span style="COLOR: #000000">5</span>
<span style="COLOR: #000000">.0_06<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />PATH</span>
<span style="COLOR: #000000">=</span>
<span style="COLOR: #000000">$JAVA_HOME</span>
<span style="COLOR: #000000">/</span>
<span style="COLOR: #000000">bin:$PATH<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />CLASSPATH</span>
<span style="COLOR: #000000">=</span>
<span style="COLOR: #000000">.:$JAVA_HOME</span>
<span style="COLOR: #000000">/</span>
<span style="COLOR: #000000">lib</span>
<span style="COLOR: #000000">/</span>
<span style="COLOR: #000000">tools.jar:$JAVA_HOME</span>
<span style="COLOR: #000000">/</span>
<span style="COLOR: #000000">lib</span>
<span style="COLOR: #000000">/</span>
<span style="COLOR: #000000">dt.jar<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />export JAVA_HOME PATH CLASSPATH<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span>
</div>
<p>   按esc é”?br />   输入:wq ä¿å˜é€€å‡ºã€?br />Â Â Â é‡æ–°ç™Õd…¥<br />6.‹¹‹è¯•é…置环境<br />   写个½Ž€å•çš„HelloWorldæ¥æµ‹è¯•一ä¸?br />   [root@esprit java]# vi HelloWorld.java<br />   文äšgä¸è¾“入:   </p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
<img id="Codehighlighter1_23_125_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_125_Open_Text.style.display='none'; Codehighlighter1_23_125_Closed_Image.style.display='inline'; Codehighlighter1_23_125_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
<img id="Codehighlighter1_23_125_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_23_125_Closed_Text.style.display='none'; Codehighlighter1_23_125_Open_Image.style.display='inline'; Codehighlighter1_23_125_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />
<span style="COLOR: #0000ff">public</span>
<span style="COLOR: #000000">Â </span>
<span style="COLOR: #0000ff">class</span>
<span style="COLOR: #000000">Â HelloWorld</span>
<span id="Codehighlighter1_23_125_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
<img src="http://www.aygfsteel.com/images/dot.gif" />
</span>
<span id="Codehighlighter1_23_125_Open_Text">
<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_66_123_Open_Image" onclick="this.style.display='none'; Codehighlighter1_66_123_Open_Text.style.display='none'; Codehighlighter1_66_123_Closed_Image.style.display='inline'; Codehighlighter1_66_123_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_66_123_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_66_123_Closed_Text.style.display='none'; Codehighlighter1_66_123_Open_Image.style.display='inline'; Codehighlighter1_66_123_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />Â Â Â </span>
<span style="COLOR: #0000ff">public</span>
<span style="COLOR: #000000">Â </span>
<span style="COLOR: #0000ff">static</span>
<span style="COLOR: #000000">Â </span>
<span style="COLOR: #0000ff">void</span>
<span style="COLOR: #000000"> main(String args[])</span>
<span id="Codehighlighter1_66_123_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
<img src="http://www.aygfsteel.com/images/dot.gif" />
</span>
<span id="Codehighlighter1_66_123_Open_Text">
<span style="COLOR: #000000">{<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />Â Â Â Â Â Â System.out.println(</span>
<span style="COLOR: #000000">"</span>
<span style="COLOR: #000000">Hello World in Linux!!</span>
<span style="COLOR: #000000">"</span>
<span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />Â Â Â }</span>
</span>
<span style="COLOR: #000000">
<br />
<img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
</span>
<span style="COLOR: #000000">
<br />
<img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />
</span>
</div>
<p>   :wq ä¿å˜é€€å‡?br />   [root@esprit java]# javac HelloWorld.java<br />   没有错误åQŒæŽ¥ç€<br />   [root@esprit java]# java HelloWorld<br />   shell下输å‡?<font size="2">Hello World in Linux!!<br /></font>   æˆåŠŸäº†ï¼^_^<br />   </p>
<img src ="http://www.aygfsteel.com/esprit/aggbug/28489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/esprit/" target="_blank">esprit</a> 2006-01-18 15:05 <a href="http://www.aygfsteel.com/esprit/archive/2006/01/18/28489.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item></channel></rss> <footer>
<div class="friendship-link">
<a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a>
</div>
</footer>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º
<a href="http://" target="_blank">ÍÁÄ¬ÌØ×óÆì</a>|
<a href="http://" target="_blank">µÂ°²ÏØ</a>|
<a href="http://" target="_blank">½ºÄÏÊÐ</a>|
<a href="http://" target="_blank">ïö¹éÏØ</a>|
<a href="http://" target="_blank">¶«·½ÊÐ</a>|
<a href="http://" target="_blank">Íû¶¼ÏØ</a>|
<a href="http://" target="_blank">ÂåÔúÏØ</a>|
<a href="http://" target="_blank">ºÓÎ÷Çø</a>|
<a href="http://" target="_blank">Îä¹¦ÏØ</a>|
<a href="http://" target="_blank">ÒÀÀ¼ÏØ</a>|
<a href="http://" target="_blank">ÃáÄþÏØ</a>|
<a href="http://" target="_blank">·îÏÍÇø</a>|
<a href="http://" target="_blank">С½ðÏØ</a>|
<a href="http://" target="_blank">»Æ´óÏÉÇø</a>|
<a href="http://" target="_blank">°¢À¶ûÊÐ</a>|
<a href="http://" target="_blank">ÍÁÄ¬ÌØ×óÆì</a>|
<a href="http://" target="_blank">´óÆÒÏØ</a>|
<a href="http://" target="_blank">ºáÉ½ÏØ</a>|
<a href="http://" target="_blank">¸ÊËàÊ¡</a>|
<a href="http://" target="_blank">ãò¶¨ÏØ</a>|
<a href="http://" target="_blank">¼ÎÓø¹ØÊÐ</a>|
<a href="http://" target="_blank">ÆÕÀ¼µêÊÐ</a>|
<a href="http://" target="_blank">ÏæÌ¶ÊÐ</a>|
<a href="http://" target="_blank">áéÖÝÊÐ</a>|
<a href="http://" target="_blank">¹ãÎ÷</a>|
<a href="http://" target="_blank">ÀëµºÇø</a>|
<a href="http://" target="_blank">ÒËÁ¼ÏØ</a>|
<a href="http://" target="_blank">Ñ®ÒØÏØ</a>|
<a href="http://" target="_blank">°²ÑôÏØ</a>|
<a href="http://" target="_blank">¶¨Ô¶ÏØ</a>|
<a href="http://" target="_blank">ÐÐÌÆÏØ</a>|
<a href="http://" target="_blank">ÁÙÔóÏØ</a>|
<a href="http://" target="_blank">±õÖÝÊÐ</a>|
<a href="http://" target="_blank">µ÷±øÉ½ÊÐ</a>|
<a href="http://" target="_blank">¿Æ¼¼</a>|
<a href="http://" target="_blank">ʲÚúÊÐ</a>|
<a href="http://" target="_blank">ÎåºÓÏØ</a>|
<a href="http://" target="_blank">ÔæÑôÊÐ</a>|
<a href="http://" target="_blank">ÉÌÄÏÏØ</a>|
<a href="http://" target="_blank">¸ßÐÛÏØ</a>|
<a href="http://" target="_blank">À½²×</a>|
<script>
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
</body>