ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美vide,97精品国产97久久久久久久久久久久,日本综合精品一区http://www.aygfsteel.com/stevenjohn/category/51969.htmlé‚£äº›é’æ˜¥çš„岿œ?/description>zh-cnThu, 14 Jun 2012 01:16:25 GMTThu, 14 Jun 2012 01:16:25 GMT60- æ·±å…¥ç ”ç©¶Servlet¾U¿ç¨‹å®‰å…¨æ€§é—®é¢?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/06/14/380730.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Thu, 14 Jun 2012 01:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/06/14/380730.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/380730.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/06/14/380730.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/380730.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/380730.html</trackback:ping><description><![CDATA[<strong>æ‘?è¦ï¼šä»‹ç»äº†Servlet多线½E‹æœºåˆÓž¼Œé€šè¿‡ä¸€ä¸ªå®žä¾‹åƈ¾l“åˆJava çš„å†…å˜æ¨¡åž‹è¯´æ˜Žå¼•èµ·Servlet¾U¿ç¨‹ä¸å®‰å…¨çš„åŽŸå› åQŒç»™å‡ÞZº†ä¿è¯Servlet¾U¿ç¨‹å®‰å…¨çš„三¿Uè§£å†Ïx–¹æ¡ˆï¼Œòq¶è¯´æ˜Žä¸‰¿U方案在实际开å‘ä¸çš„å–èˆã€?br /><br />  关键å—:Servlet ¾U¿ç¨‹å®‰å…¨ åŒæ¥ Javaå†…å˜æ¨¡åž‹ 实例å˜é‡<span> </span><br /><br />  Servlet/JSP技术和ASPã€PHP½{‰ç›¸æ¯”,ç”׃ºŽå…¶å¤š¾U¿ç¨‹˜q行而具有很高的执行效率。由于Servlet/JSP默认是以多线½E‹æ¨¡å¼æ‰§è¡Œçš„åQŒæ‰€ä»¥ï¼Œåœ¨ç¼–å†™ä»£ç æ—¶éœ€è¦éžå¸¸ç»†è‡´åœ°è€ƒè™‘多线½E‹çš„安全性问题。然而,很多人编写Servlet/JSP½E‹åºæ—¶åƈ没有注æ„到多¾U¿ç¨‹å®‰å…¨æ€§çš„问题åQŒè¿™å¾€å¾€é€ 戾~–写的程åºåœ¨ž®‘é‡ç”¨æˆ·è®‰K—®æ—¶æ²¡æœ‰ä“Q何问题,而在òq¶å‘用户上å‡åˆîC¸€å®šå€¼æ—¶åQŒå°±ä¼šç»å¸¸å‡ºçŽîC¸€äº›èŽ«æ˜Žå…¶å¦™çš„é—®é¢˜ã€?br /><br />  Servlet的多¾U¿ç¨‹æœºåˆ¶</strong><br /><strong> <span> </span><br />  Servlet体系¾l“构是å¾ç«‹åœ¨Java多线½E‹æœºåˆ¶ä¹‹ä¸Šçš„åQŒå®ƒçš„生命周期是由Web容器负责的。当客户端第一‹Æ¡è¯·æ±‚æŸä¸ªServletæ—Óž¼ŒServlet容器ž®†ä¼šæ ÒŽ®web.xmlé…置文äšg实例化这个Servlet¾c…R€‚当有新的客æˆïL«¯è¯äh±‚该Servletæ—Óž¼Œä¸€èˆ¬ä¸ä¼šå†å®žä¾‹åŒ–该Servlet¾c»ï¼Œä¹Ÿå°±æ˜¯æœ‰å¤šä¸ª¾U¿ç¨‹åœ¨ä‹É用这个实例。Servlet容器会自动ä‹É用线½E‹æ± ½{‰æŠ€æœ¯æ¥æ”¯æŒ¾pÈ»Ÿçš„è¿è¡Œï¼Œå¦‚图1所½Cºã€?br /><br /></strong>
<table border="0" width="90%">
<tbody>
<tr>
<td><strong><img src="http://hiphotos.baidu.com/stevenjohn/pic/item/05b7b99c033b5bb5b839395436d3d539b700bc3c.jpg" alt="" /><br /></strong>å›? Servlet¾U¿ç¨‹æ±?/td></tr></tbody></table><br />  ˜q™æ ·åQŒå½“两个或多个线½E‹åŒæ—¶è®¿é—®åŒä¸€ä¸ªServletæ—Óž¼Œå¯èƒ½ä¼šå‘生多个线½E‹åŒæ—¶è®¿é—®åŒä¸€èµ„æºçš„æƒ…况,数æ®å¯èƒ½ä¼šå˜å¾—ä¸ä¸€è‡´ã€‚所以在用Servletæž„å¾çš„Webåº”ç”¨æ—¶å¦‚æžœä¸æ³¨æ„¾U¿ç¨‹å®‰å…¨çš„问题,会ä‹É所写的Servlet½E‹åºæœ‰éš¾ä»¥å‘现的错误ã€?br /><br />  <strong>Servlet的线½E‹å®‰å…¨é—®é¢?br /></strong><br />  Servlet的线½E‹å®‰å…¨é—®é¢˜ä¸»è¦æ˜¯ç”׃ºŽå®žä¾‹å˜é‡ä½¿ç”¨ä¸å½“而引èµïLš„åQŒè¿™é‡Œä»¥ä¸€ä¸ªçŽ°å®žçš„ä¾‹åæ¥è¯´æ˜Žã€?br /><br />
<table border="1" width="90%">
<tbody>
<tr>
<td>Import javax.servlet. *;<span> </span><br />Import javax.servlet.http. *;<span> </span><br />Import java.io. *;<span> </span><br />Public class Concurrent Test extends HttpServlet {PrintWriter output;<span> </span><br />Public void service (HttpServletRequest request,<br />HttpServletResponse response) throws ServletException, IOException {String username;<br />Response.setContentType ("text/html; charset=gb2312");<br />Username = request.getParameter ("username");<span> </span><br />Output = response.getWriter ();<span> </span><br />Try {Thread. sleep (5000); //ä¸ÞZº†½H出òq¶å‘问题åQŒåœ¨˜q™è®¾¾|®ä¸€ä¸ªåšgæ—?br />} Catch (Interrupted Exception e){}<br />output.println("用户å?"+Username+"<BR>");<span> </span><br />}<br />}</td></tr></tbody></table><br />  该Servletä¸å®šä¹‰äº†ä¸€ä¸ªå®žä¾‹å˜é‡outputåQŒåœ¨serviceæ–ÒŽ³•ž®†å…¶èµ‹å€égؓ用户的输出。当一个用戯‚®¿é—®è¯¥Servletæ—Óž¼Œ½E‹åºä¼šæ£å¸¸çš„˜q行åQŒä½†å½“å¤šä¸ªç”¨æˆ·åÆˆå‘访问时åQŒå°±å¯èƒ½ä¼šå‡ºçŽ°å…¶å®ƒç”¨æˆïLš„ä¿¡æ¯æ˜„¡¤ºåœ¨å¦å¤–一些用æˆïLš„‹¹è§ˆå™¨ä¸Šçš„é—®é¢˜ã€‚è¿™æ˜¯ä¸€ä¸ªä¸¥é‡çš„é—®é¢˜ã€‚äØ“äº†çªå‡ºåƈå‘问题,便于‹¹‹è¯•ã€è§‚察,我们在回昄¡”¨æˆ·ä¿¡æ¯æ—¶æ‰§è¡Œäº†ä¸€ä¸ªåšgæ—¶çš„æ“作。å‡è®‘Ö·²åœ¨web.xmlé…置文äšg䏿³¨å†Œäº†è¯¥ServletåQŒçŽ°æœ‰ä¸¤ä¸ªç”¨æˆ·aå’ŒbåŒæ—¶è®‰K—®è¯¥ServletåQˆå¯ä»¥å¯åŠ¨ä¸¤ä¸ªIE‹¹è§ˆå™¨ï¼Œæˆ–è€…åœ¨ä¸¤å°æœºå™¨ä¸ŠåŒæ—¶è®¿é—®ï¼‰,å›_Œæ—¶åœ¨‹¹è§ˆå™¨ä¸è¾“å…¥åQ?br /><br />  aåQ?http://localhost: 8080/servlet/ConcurrentTest? Username=a<br /><br />  båQ?http://localhost: 8080/servlet/ConcurrentTest? Username=b<br /><br />  如果用户b比用户a回èžRçš„æ—¶é—´ç¨æ…¢ä¸€ç‚¹ï¼Œž®†å¾—到如å›?所½Cºçš„输出åQ?br /><br />
<table border="0" width="90%">
<tbody>
<tr>
<td><img src="http://hiphotos.baidu.com/stevenjohn/pic/item/a790ee2062d0f703d97f8c7608fa513d2497c5d1.jpg" alt="" /><br />å›? a用户和b用户的æµè§ˆå™¨è¾“出</td></tr></tbody></table><br />  从图2ä¸å¯ä»¥çœ‹åˆŽÍ¼ŒWebæœåС噍å¯åŠ¨äº†ä¸¤ä¸ª¾U¿ç¨‹åˆ†åˆ«å¤„ç†æ¥è‡ªç”¨æˆ·a和用户b的请求,但是在用户açš„æµè§ˆå™¨ä¸Šå´å¾—到一个空白的å±å¹•åQŒç”¨æˆ·açš„ä¿¡æ¯æ˜¾½Cºåœ¨ç”¨æˆ·bçš„æµè§ˆå™¨ä¸Šã€‚该Servletå˜åœ¨¾U¿ç¨‹ä¸å®‰å…¨é—®é¢˜ã€‚䏋颿ˆ‘们就从分æžè¯¥å®žä¾‹çš„å†…å˜æ¨¡åž‹å…¥æ‰?观察ä¸åŒæ—¶åˆ»å®žä¾‹å˜é‡output的值æ¥åˆ†æžä½¿è¯¥Servlet¾U¿ç¨‹ä¸å®‰å…¨çš„åŽŸå› ã€?br /><br />  Javaçš„å†…å˜æ¨¡åž‹JMMåQˆJava Memory ModelåQ‰JMMä¸»è¦æ˜¯äؓ了规定了¾U¿ç¨‹å’Œå†…å˜ä¹‹é—´çš„一些关¾p…R€‚æ ¹æ®JMM的设计,¾pÈ»Ÿå˜åœ¨ä¸€ä¸ªä¸»å†…å˜(Main Memory)åQŒJava䏿‰€æœ‰å®žä¾‹å˜é‡éƒ½å‚¨å˜åœ¨ä¸»å˜ä¸åQŒå¯¹äºŽæ‰€æœ‰çº¿½E‹éƒ½æ˜¯å…±äº«çš„ã€‚æ¯æ¡çº¿½E‹éƒ½æœ‰è‡ªå·Þqš„工作内å˜(Working Memory)åQŒå·¥ä½œå†…å˜ç”±¾~“å˜å’Œå †æ ˆä¸¤éƒ¨åˆ†¾l„æˆåQŒç¼“å˜ä¸ä¿å˜çš„æ˜¯ä¸Õd˜ä¸å˜é‡çš„æ‹¯‚´åQŒç¼“å˜å¯èƒ½åÆˆä¸æ€Õd’Œä¸Õd˜åŒæ¥åQŒä¹Ÿž®±æ˜¯¾~“å˜ä¸å˜é‡çš„修改å¯èƒ½æ²¡æœ‰ç«‹åˆ»å†™åˆ°ä¸Õd˜ä¸ï¼›å †æ ˆä¸ä¿å˜çš„æ˜¯çº¿½E‹çš„局部å˜é‡ï¼Œ¾U¿ç¨‹ä¹‹é—´æ— æ³•ç›æ€º’直接讉K—®å †æ ˆä¸çš„å˜é‡ã€‚æ ¹æ®JMMåQŒæˆ‘们å¯ä»¥å°†è®ºæ–‡ä¸æ‰€è®¨è®ºçš„Servletå®žä¾‹çš„å†…å˜æ¨¡åž‹æŠ½è±¡äØ“å›?所½Cºçš„æ¨¡åž‹ã€?br /><br />
<table border="0" width="90%">
<tbody>
<tr>
<td><img src="http://hiphotos.baidu.com/stevenjohn/pic/item/4ea4efd7f703918fe91c2460513d26975beec4d1.jpg" alt="" /><br />å›? Servlet实例的JMM模型</td></tr></tbody></table><br />ã€€ã€€ä¸‹é¢æ ÒŽ®å›?所½Cºçš„å†…å˜æ¨¡åž‹åQŒæ¥åˆ†æžå½“用户aå’Œb的线½E‹ï¼ˆ½Ž€¿UîCØ“a¾U¿ç¨‹ã€b¾U¿ç¨‹åQ‰åÆˆå‘æ‰§è¡Œæ—¶åQŒServletå®žä¾‹ä¸æ‰€æ¶‰åŠå˜é‡çš„å˜åŒ–情况劾U¿ç¨‹çš„æ‰§è¡Œæƒ…况,如图4所½Cºã€?br /><br />
<table border="1" cellspacing="0" cellpadding="2" width="85%">
<tbody>
<tr>
<td>调度时刻</td>
<td>a¾U¿ç¨‹</td>
<td>b¾U¿ç¨‹</td></tr>
<tr>
<td>T1</td>
<td>讉K—®Servlet™åµé¢</td>
<td> </td></tr>
<tr>
<td>T2</td>
<td> </td>
<td>讉K—®Servlet™åµé¢</td></tr>
<tr>
<td>T3</td>
<td>output=a的输出username=aä¼‘çœ 5000毫秒åQŒè®©å‡ºCPU</td>
<td> </td></tr>
<tr>
<td>T4</td>
<td> </td>
<td>output=b的输出(写回ä¸Õd˜åQ‰username=bä¼‘çœ 5000毫秒åQŒè®©å‡ºCPU</td></tr>
<tr>
<td>T5</td>
<td>在用户bçš„æµè§ˆå™¨ä¸Šè¾“出a¾U¿ç¨‹çš„usernameçš„å€?a¾U¿ç¨‹¾lˆæ¢ã€?/td>
<td> </td></tr>
<tr>
<td>T6</td>
<td> </td>
<td>在用户bçš„æµè§ˆå™¨ä¸Šè¾“出b¾U¿ç¨‹çš„usernameçš„å€?b¾U¿ç¨‹¾lˆæ¢ã€?/td></tr></tbody></table>                  å›? Servlet实例的线½E‹è°ƒåº¦æƒ…å†?br /><br />  从图4ä¸å¯ä»¥æ¸…楚的看到åQŒç”±äºŽb¾U¿ç¨‹å¯¹å®žä¾‹å˜é‡output的修改覆盖了a¾U¿ç¨‹å¯¹å®žä¾‹å˜é‡output的修改,从而导致了用户açš„ä¿¡æ¯æ˜¾½Cºåœ¨äº†ç”¨æˆ·bçš„æµè§ˆå™¨ä¸Šã€‚如果在a¾U¿ç¨‹æ‰§è¡Œè¾“出è¯å¥æ—Óž¼Œb¾U¿ç¨‹å¯¹output的修改还没有åˆäh–°åˆîC¸»å˜ï¼Œé‚£ä¹ˆž®†ä¸ä¼šå‡ºçް图2所½Cºçš„输出¾l“æžœåQŒå› æ¤è¿™åªæ˜¯ä¸€¿Uå¶ç„¶çŽ°è±¡ï¼Œä½†è¿™æ›´å¢žåŠ äº†½E‹åºæ½œåœ¨çš„å±é™©æ€§ã€?span> </span>
<p><strong></strong> </p>
<p><strong></strong> </p>
<p><strong>设计¾U¿ç¨‹å®‰å…¨çš„Servlet</strong><br /><br />  通过上é¢çš„分æžï¼Œæˆ‘们知é“了实例å˜é‡ä¸æ£ç¡®çš„ä‹Éç”¨æ˜¯é€ æˆServlet¾U¿ç¨‹ä¸å®‰å…¨çš„主è¦åŽŸå› ã€‚ä¸‹é¢é’ˆå¯¹è¯¥é—®é¢˜¾l™å‡ºäº†ä¸‰¿Uè§£å†Ïx–¹æ¡ˆåƈå¯ÒŽ–¹æ¡ˆçš„选喾l™å‡ºäº†ä¸€äº›å‚è€ƒæ€§çš„å»ø™®®ã€?br /><br />  1ã€å®žçŽ?SingleThreadModel 接å£<br /><br />ã€€ã€€è¯¥æŽ¥å£æŒ‡å®šäº†¾pÈ»Ÿå¦‚何处ç†å¯¹åŒä¸€ä¸ªServlet的调用。如果一个Servletè¢«è¿™ä¸ªæŽ¥å£æŒ‡å®?那么在这个Servletä¸çš„serviceæ–ÒŽ³•ž®†ä¸ä¼šæœ‰ä¸¤ä¸ª¾U¿ç¨‹è¢«åŒæ—¶æ‰§è¡Œï¼Œå½“然也就ä¸å˜åœ¨çº¿½E‹å®‰å…¨çš„问题。这¿U方法åªè¦å°†å‰é¢çš„Concurrent Test¾cÈš„¾cÕd¤´å®šä¹‰æ›´æ”¹ä¸ºï¼š<br /><br /></p>
<p>
<table border="1" width="90%">
<tbody>
<tr>
<td>Public class Concurrent Test extends HttpServlet implements SingleThreadModel {<br />…………<br />}</td></tr></tbody></table></p>
<p><br />  2ã€åŒæ¥å¯¹å…׃ínæ•°æ®çš„æ“ä½?br /><br />  使用synchronized 关键å—能ä¿è¯ä¸€‹Æ¡åªæœ‰ä¸€ä¸ªçº¿½E‹å¯ä»¥è®¿é—®è¢«ä¿æŠ¤çš„区ŒDµï¼Œåœ¨æœ¬è®ºæ–‡ä¸çš„Servletå¯ä»¥é€šè¿‡åŒæ¥å—æ“作æ¥ä¿è¯¾U¿ç¨‹çš„å®‰å…¨ã€‚åŒæ¥åŽçš„代ç 如下:<span> </span><br /><br /></p>
<p>
<table border="1" width="90%">
<tbody>
<tr>
<td>…………<br />Public class Concurrent Test extends HttpServlet { …………<br />Username = request.getParameter ("username");<span> </span><br />Synchronized (this){<br />Output = response.getWriter ();<span> </span><br />Try {<br />Thread. Sleep (5000);<br />} Catch (Interrupted Exception e){}<br />output.println("用户å?"+Username+"<BR>");<span> </span><br />}<span> </span><br />}<br />}</td></tr></tbody></table></p>
<p><br />  3ã€é¿å…ä‹É用实例å˜é‡?br /><br />  本实例ä¸çš„线½E‹å®‰å…¨é—®é¢˜æ˜¯ç”±å®žä¾‹å˜é‡é€ æˆçš„,åªè¦åœ¨Servlet里é¢çš„ä“Q何方法里é¢éƒ½ä¸ä‹É用实例å˜é‡ï¼Œé‚£ä¹ˆè¯¥Servletž®±æ˜¯¾U¿ç¨‹å®‰å…¨çš„ã€?br /><br />  修æ£ä¸Šé¢çš„Servlet代ç åQŒå°†å®žä¾‹å˜é‡æ”¹äؓ局部å˜é‡å®žçŽ°åŒæ ïLš„功能åQŒä»£ç 如下:<br /><br /></p>
<p>
<table border="1" width="90%">
<tbody>
<tr>
<td>……<span> </span><br />Public class Concurrent Test extends HttpServlet {public void service (HttpServletRequest request, HttpServletResponse<span> </span><br />Response) throws ServletException, IOException {<br />Print Writer output;<span> </span><br />String username;<br />Response.setContentType ("text/html; charset=gb2312");<br />……<span> </span><br />}<span> </span><br />}</td></tr></tbody></table></p>
<p><br />  对上é¢çš„ä¸‰ç§æ–ÒŽ³•˜q›è¡Œ‹¹‹è¯•åQŒå¯ä»¥è¡¨æ˜Žç”¨å®ƒä»¬éƒ½èƒ½è®¾è®¡å‡ºçº¿½E‹å®‰å…¨çš„Servlet½E‹åºã€‚但是,如果一个Servlet实现了SingleThreadModel接å£åQŒServlet引擎ž®†äØ“æ¯ä¸ªæ–°çš„è¯äh±‚创å¾ä¸€ä¸ªå•独的Servlet实例åQŒè¿™ž®†å¼•起大é‡çš„¾pÈ»Ÿå¼€é”€ã€‚SingleThreadModel在Servlet2.4ä¸å·²ä¸å†æå€¡ä‹Éç”¨ï¼›åŒæ ·å¦‚果在程åºä¸ä½¿ç”¨åŒæ¥æ¥ä¿æŠ¤è¦ä½¿ç”¨çš„共享的数æ®åQŒä¹Ÿä¼šä‹É¾pÈ»Ÿçš„æ€§èƒ½å¤§å¤§ä¸‹é™ã€‚è¿™æ˜¯å› ä¸ø™¢«åŒæ¥çš„代ç å—在åŒä¸€æ—¶åˆ»åªèƒ½æœ‰ä¸€ä¸ªçº¿½E‹æ‰§è¡Œå®ƒåQŒä‹Éå¾—å…¶åŒæ—¶å¤„ç†å®¢æˆ·è¯äh±‚çš„åžåé‡é™ä½ŽåQŒè€Œä¸”很多客户处于é˜Õd¡žçжæ€ã€‚å¦å¤–䨓ä¿è¯ä¸Õd˜å†…容和线½E‹çš„工作内å˜ä¸çš„æ•°æ®çš„一致性,è¦é¢‘¾J地åˆäh–°¾~“å˜,˜q™ä¹Ÿä¼šå¤§å¤§åœ°å½±å“¾pÈ»Ÿçš„æ€§èƒ½ã€‚所以在实际的开å‘ä¸ä¹Ÿåº”é¿å…或最ž®åŒ– Servlet ä¸çš„åŒæ¥ä»£ç åQ›åœ¨Serletä¸é¿å…ä‹É用实例å˜é‡æ˜¯ä¿è¯Servlet¾U¿ç¨‹å®‰å…¨çš„æœ€ä½³é€‰æ‹©ã€‚从Java å†…å˜æ¨¡åž‹ä¹Ÿå¯ä»¥çŸ¥é“,æ–ÒŽ³•ä¸çš„临时å˜é‡æ˜¯åœ¨æ ˆä¸Šåˆ†é…½Iºé—´åQŒè€Œä¸”æ¯ä¸ª¾U¿ç¨‹éƒ½æœ‰è‡ªå·±¿Uæœ‰çš„æ ˆ½Iºé—´åQŒæ‰€ä»¥å®ƒä»¬ä¸ä¼šåª„å“线½E‹çš„安全ã€?br /><br />  <strong>ž®ç»“</strong><br /><br />  Servlet的线½E‹å®‰å…¨é—®é¢˜åªæœ‰åœ¨å¤§é‡çš„åÆˆå‘访问时æ‰ä¼šæ˜„¡Ž°å‡ºæ¥åQŒåƈ且很隑֑玎ͼŒå› æ¤åœ¨ç¼–写Servlet½E‹åºæ—¶è¦ç‰¹åˆ«æ³¨æ„。线½E‹å®‰å…¨é—®é¢˜ä¸»è¦æ˜¯ç”±å®žä¾‹å˜é‡é€ æˆçš?å› æ¤åœ¨Servletä¸åº”é¿å…使用实例å˜é‡ã€‚如果应用程åºè®¾è®¡æ— 法é¿å…ä‹É用实例å˜é‡ï¼Œé‚£ä¹ˆä½¿ç”¨åŒæ¥æ¥ä¿æŠ¤è¦ä½¿ç”¨çš„实例å˜é‡ï¼Œä½†äØ“ä¿è¯¾pÈ»Ÿçš„æœ€ä½Ïx€§èƒ½åQŒåº”è¯¥åŒæ¥å¯ç”¨æ€§æœ€ž®çš„代ç 路径ã€?/p>
<p> </p><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/380730.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-06-14 09:12 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/06/14/380730.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">ÎijÉÏØ</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>