ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>国产美女在线播放,欧美日韩国产不卡在线看,欧美日韩另类图片http://www.aygfsteel.com/atiger06/zh-cnWed, 18 Jun 2025 06:45:05 GMTWed, 18 Jun 2025 06:45:05 GMT60未楾|‘ç«™½{–划五大­‘‹åŠ¿http://www.aygfsteel.com/atiger06/archive/2007/07/26/132424.htmlleefooleefooThu, 26 Jul 2007 00:21:00 GMThttp://www.aygfsteel.com/atiger06/archive/2007/07/26/132424.htmlhttp://www.aygfsteel.com/atiger06/comments/132424.htmlhttp://www.aygfsteel.com/atiger06/archive/2007/07/26/132424.html#Feedback10http://www.aygfsteel.com/atiger06/comments/commentRss/132424.htmlhttp://www.aygfsteel.com/atiger06/services/trackbacks/132424.html  1åQŽå…·å¤‡å¸‚åœ?销售æ„è¯†ï¼Œä¸”æŽŒæ¡æ‰Žå®žæŠ€æœ¯çš„专业¾|‘ç«™½{–åˆ’äººæ‰æˆæŠ¢æ‰‹è´§
¾|‘站定ä½å†›_®šäº†ç½‘ç«™ç­–åˆ’æ€æƒ³çš„宽度和深度åQŒç½‘站客户决定了¾|‘ç«™½{–划æ€ç»´å½¢å¼åQŒç½‘站页é¢å’Œ½E‹åºçš„实现决定了优秀¾|‘ç«™½{–åˆ’æ€æƒ³çš„表现力åQŒç½‘站市åœ?销售冋Æ? 验课|‘ç«™½{–划水åã^çš„é«˜ä½Žï¼›å¦‚æžœéœ€è¦æ·±å…¥åƈ˜q用上å¥çš„æ€æƒ³åQŒå°±å¿…须具备市场ã€é”€å”®ã€å’Œæ‰Žå®žæŠ€æœ¯äºŽä¸€íw«ï¼Œ˜q™ç§å¤åˆæ€§ç½‘站策划ähæ‰åˆ™æ˜¯çŽ°ä»Šå¤§¾|‘ç«™å“牌竞争中ä¸å? 或缺的äh力资æºï¼Œéšç€å›½å®¶2001òq´å¼€è®„¡”µå­å•†åŠ¡ä¸“ä¸šï¼Œ˜q™ç§äººæ‰çœŸæ­£æˆç†Ÿ™å»è¦å†ç­‰5òq´ä»¥ä¸Šï¼›ä½†ç”±äºŽç½‘站越æ¥è¶Šå¤šï¼Œä¼˜ç§€çš„网站竞争越æ¥è¶Šéš¾ï¼Œ˜q™ç§äººæ‰åœ?òq? 内将从从事网站销售ã€å¸‚åœºã€æŠ€æœ¯è¿™ä¸‰æ–¹é¢çš„人æ‰ä¸­äñ”生,其中当剾|‘站竞争实力ä¸é«˜çš„æƒ…况下åQŒæŠ€æœ¯ähæ‰è{型是¾|‘ç«™½{–划是当å‰çްçŠÓž¼Œä¸è¿‡æœªæ¥ä»¥å¸‚åœ?销售䨓ä¸? çš„ähæ‰è{型,æ‰èƒ½çœŸæ­£æŽ¨åЍ¾|‘ç«™½{–划走å‘专业化ã€?br>  2åQŽäh机工½E‹å­¦æ€æƒ³ž®†å¤§è¡Œå…¶é?br>  人机工程学刿UîCh机工效学 (Ergonomics)åQŒæ˜¯ä¸€é—¨è®©æŠ€æœ¯äh性化的科学,一门关于技术和人的å调关系的科学。å³å¦‚何让技术的å‘展围绕人的需求æ¥å±•å¼€åQŒæŠŠäºÞZ½œä¸ÞZñ”å“和环境è®? 计的出å‘点,使其性能ã€è‰²å½©ç­‰æ›´å¥½åœ°é€‚应和满­‘³äh¾cÈš„生ç†å’Œå¿ƒç†çš„需è¦ï¼Œä»Žè€Œä‹ÉäºÞZ»¬åœ¨å·¥ä½œä¸­æ›´å®‰å…¨ã€ä¾¿æ·å’Œèˆ’适,工作效率更高。其研究æ–ÒŽ³•和评ä»äh‰‹ŒD‰|¶‰å? 心ç†å­¦ã€ç”Ÿç†å­¦ã€åŒ»å­¦ã€äh体测é‡å­¦ã€ç¾Žå­¦å’Œå·¥ç¨‹æŠ€æœ¯ç­‰å¤šä¸ªé¢†åŸŸã€?br>  人机工程学已渗é€è‡³æˆ‘们生活的æ¯ä¸€ä¸ªéƒ¨åˆ†ï¼Œä¾‹å¦‚åQšå–æ°´çš„æ¯å­åQŒæ´—å£çš„牙è†åQŒä‹É 用的电脑…½{‰å„æ–šw¢åQŒäh机工½E‹å­¦æ›´æ˜¯åˆ©äºŽäº§å“销售的优化剂,那么我们从专业网站策划看åQŒæ›´éœ€è¦äh机工½E‹å­¦å¸®åŠ©æˆ‘ä»¬ä½¿ç½‘ç«™åã^å°æ›´å®ÒŽ˜“推销¾l™ç›®æ ‡å®¢æˆ—÷€‚åœ¨æœªæ¥ äººæœºå·¥ç¨‹å­¦å°†ä½¿ç½‘ç«™åœ¨ä»¥ä¸‹æ–šw¢å¾—到质的æå‡åQ?br>人性化åQšé€šè¿‡å¼•导性文字语­a€ã€å›¾å½¢è¯­­a€ã€ä¸ªæ€§äº’动等方å¼åQŒä‹É¾|‘ç«™òq›_°æ›´åˆ©äºŽå®¢æˆähµè§ˆï¼Œä»¥å¸å¼•åÆˆç•™ä½å®¢æˆ·ã€?br>  方便性:¾|‘ç«™æ“作½Ž€ä¾Ñ€æ˜“用,内容分布åˆç†åQŒç¬¦åˆå®¢æˆïLš„è¡ŒäØ“ä¹ æƒ¯ã€?br>  逻辑性:整体¾|‘ç«™½{–划‹¹ç¨‹½W¦åˆå®¢æˆ·å¿ƒç†åQŒä¸”在充分分æžå®¢æˆ¯‚¡Œä¸šç‰¹å¾çš„基础上,建立¾|‘站内部功能之间的逻辑转æ¢åQŒè®©å®¢æˆ·äº«å—整个讉K—®˜q‡ç¨‹ã€?br>  ¿U‘学性:¾|‘ç«™æ ç›®½{–划ã€å®šä½å…·å¤‡ç§‘学性,其既充分代表了网站的æ„图åQŒåˆèƒ½å……分调动访客ç‘ô¾l­ç‚¹å‡»ï¼Œå¼•导客户购买产å“ã€?br>  控制性:¾|‘站在å¾ç«‹å®¢æˆ¯‚¡Œä¸ºæƒé™æŽ§åˆ¶æ–¹é¢ï¼Œå¿…é¡»½W¦åˆå…¬å¸ä¸šåŠ¡è§„åˆ™åQŒæ ¹æ®ä¸åŒçš„客户¾cÕdž‹äº§ç”Ÿä¸åŒçš„æƒé™ã€?br>  交互性:建立异步沟通系¾lŸï¼ˆå¸®åŠ©ä¸­å¿ƒã€ç•™­a€æÑ€æ“作指å?#8230;åQ‰æ–¹ä¾¿å®¢æˆ·ä¸Ž¾|‘ç«™ä¹‹é—´æ²Ÿé€šï¼›å»ºç«‹åŒæ­¥æ²Ÿé€šç³»¾lŸï¼ˆåÏx—¶èŠå¤©ã€ç”µè¯åé¦?#8230;åQ‰è¾¾åˆ°å³æ—¶åŒå‘沟通目标ã€?br>  界é¢å‹å¥½æ€§ï¼šå¿ƒç†å­¦è¡¨æ˜Žï¼Œé€‚åˆçš„界é¢å¯¹äºŽå®¢æˆïL‚¹å‡ÀL¬²æœ›çš„æå‡å’Œå°è±¡æŒ‡æ•°çš„æå‡æ•ˆæžœæ˜Žæ˜¾åQŒç½‘ç«™ç•Œé¢æ˜¯å®¢æˆ·ä¸Žç½‘站交‹¹çš„é‡è¦è½½ä½“åQŒåœ¨˜q™ç‚¹ä¸Šç½‘站策划师需è¦ä¸Ž¾|‘站设计师åä½œå®žçŽ°ã€‚ä½†æ€æƒ³æ–ÒŽ³•¼‹®ä¿ä»¥ä¸‹å†…容您åšåˆîCº†åQ?br>  aã€åŒæ ïLš„界é¢å¯¹è±¡æ˜¯å¦å…ähœ‰ä¸€è‡´æ€§ã€è¿ž¾l­æ€§çš„è¡ŒäØ“åQ?br>  bã€å„¿Uæ½CÞZ¿¡æ¯æ˜¯å¦ç®€å•ã€æ¸…晎ͼŸ
  cã€è‰²å½©æ˜¯å¦ç»Ÿä¸€ã€å调?是å¦é¿å…äº†åŒæ—¶ä‹É用太多的颜色åQ?br>  dã€æ–‡å­—内å®ÒŽ˜¯å¦ç®€‹zã€é‡ç‚¹çªå‡ºï¼Ÿå­—体ã€å­—å—÷€å­—型是å¦åˆé€‚?
  eã€ç•Œé¢å¯¹è±¡çš„动é™å¤„ç†æ˜¯å¦å¾—当åQ?br>  fã€å¸ƒå±€æ˜¯å¦åˆç†ã€ç®€‹zã€åè°ƒã€ç¾Žè§‚ï¼Œç”»é¢æ˜¯å¦å‡è¡¡½{‰ç­‰åQ?br>  3åQŽæ–‡åŒ–ç†å¿µå…¨é¢æ¸—é€ç½‘站策划实æˆ?br>  ¾|‘站竞争从技术竞争ã€åã^å°ç«žäº‰ï¼Œä»¥åŠçŽ°åœ¨çš„å¸‚åœºç«žäº‰ï¼Œ¾l过几年的å‘展,未楞®†ä¸Šå‡è‡³“文化竞争”的高度,例如åQšæ–°‹¹ªç½‘¾lœåª’体ã€ç½‘易虚拟社区ã€é˜¿é‡Œå•†äººæ–‡åŒ?#8230;..
  从历å²çš„角度æ¥çœ‹åQŒç»‹¹Žå¯ä»¥æŽ¨åŠ¨æ–‡åŒ–çš„å‘展åQŒæ–‡åŒ–å´èƒ½å¤Ÿå†›_®š¾læµŽã€æ”¿æ²Èš„走势åQ?br> 从网站ç»è¥çš„角度æ¥çœ‹åQŒå¥½çš„网站ç»è¥èƒ½å¤Ÿä¿ƒä½¿ç½‘ç«™çš„å®¢æˆ·ä¸æ–­çš„èšé›†ã€äº¤‹¹ï¼Œé€æ­¥å»ºç«‹ä»¥ç½‘站或¾|‘站行业或网站性质为核心的文化åQ›ä½†¾|‘站或网¾lœæ–‡åŒ–的建立å? 能够带动¾|‘站从é‡å˜è‡³è´¨å˜çš„è{æ¢ï¼Œòq¶ä¸”能够形戓马太效应”åQŒå¯¹¾|‘站资本˜q作ã€å¸‚åœø™¿ä½œã€æŠ€æœ¯è¿ä½œã€äh力资æºè¿ä½œç­‰¾l¼åˆæ–šw¢äº§ç”Ÿå‚¬åŒ–作用åQŒä‹É¾|‘ç«™¾lè¥çœŸæ­£ èµ°å‘æˆåŠŸã€?br>ã€€ã€€ä»ŽçŽ°æœ‰å·²å½¢æˆæ–‡åŒ–的网站案例æ¥çœ‹ï¼Œæ–°æµªå·²æˆä¸ÞZ¸­å›½ç”šè‡›_ŽäºÞZ¸–界最å…ähƒå¨æ€§è´¨çš„网¾lœåª’体,它åÅžæˆäº†ä¸Žç”µè§†åª’ä½“ã€æ‚å¿—åª’ä½“ã€æŠ¥åˆŠåª’ä½“ã€? òq¿æ’­åª’体òq¶åˆ—的第五大媒体åQŒå…¶æ–‡åŒ–力é‡å¯è§ä¸€æ–‘ï¼›ä»¥ç½‘æ˜“äØ“ä»£è¡¨çš„ç¤¾åŒÞZº¤‹¹åž‹¾|‘站更是如此åQŒç½‘¾lœæ¸¸æˆæ–‡åŒ–ã€ç½‘¾lœäº¤å‹æ–‡åŒ–更是深入äh心,òq¶å¯¹ä¸­å›½äº’蔾|‘æ™®åŠè¿› ½E‹äñ”生决定性的推动作用åQ›ä»¥é˜‰K‡Œã€å½“å½“ã€æ˜“­‘£ã€æ·˜å®äؓ代表的商人文化,对中国走å‘世界,世界了解中国åQŒå•†äºÞZ¸Š¾|‘åšç”Ÿæ„的普åŠçš„贡献有目å…Þq¹åQ›ä»¥å‰ç¨‹æ— å¿§ã€? CJOLã€å“åšã€ä¸­åŽè‹±æ‰äؓ代表的网上ähåŠ›èµ„æºæ–‡åŒ–更是加速了全国人力资æºé«˜æ•ˆäº’动ã€?br>  因此åQŒé«˜å±‚é¢çš„网站竞争是文化的竞争,而åÅžæˆæ–‡åŒ–网站å“牌,专业¾|‘ç«™½{–划必ä¸å¯ä»¥åQŒå¦‚何有效整åˆå…¬å¸èµ„æºã€å®¢æˆ¯‚µ„æºï¼Œè¡Œä¸šèµ„æºåQŒåÅžæˆæ–‡åŒ–,是网站策划ähå‘˜éœ€è¦æ€è€ƒã€å®žè·ëŠš„éš„¡‚¹ã€?br>  4åQŽç³»¾lŸç½‘站策划ç†è®ºåœ¨äº”年内äñ”ç”?br> ¾|‘ç«™½{–划是一门有­‘£çš„学问åQŒå®ƒæ¶‰åŠå¿ƒç†å­¦ã€ç¾Žå­¦ã€äh机工½E‹å­¦ã€å·¥½E‹æŠ€æœ¯ã€ç½‘¾lœçŸ¥è¯?#8230;…½{‰å¤š™å¹å­¦¿U‘ï¼Œåœ¨å›½å¤–ï¼Œå·²é€æ¸æœ‰è¿™æ–šw¢çš„专业ç†è®ºï¼›åœ¨å›½å†…则没有åQŒä½† éšç€ä¸­å›½é«˜è´¨é‡çš„¾|‘站竞争愈呋Ȁ烈,从而加剧了¾|‘ç«™½{–划的专业化˜q›ç¨‹åQŒåœ¨æœªæ¥5òq´å†…åQŒä¸“业网站策划的ç†è®ºä¹¦ç±ä¼šå‡ºçŽŽÍ¼Œä½†æˆ‘们更期待在具备丰富网站策划ç»éª? 的这¾Ÿ¤é˜Ÿä¼ï¼Œž®†è‡ªå·Þqš„实战¾l验æå‡è‡³ç†è®ºçŸ¥è¯†ï¼Œä½¿ç½‘站策划ç†è®ºæ›´è´´è¿‘市场åQŒæŽ¨åŠ¨ä¸­å›½ç½‘ç«™ç»è¥ä¸“业化ã€?br>  5åQŽç½‘站策划的专业化导致网站设计风格整åˆï¼š½Ž€¾U¦ä¸Žä¸ªæ€§æˆä¸ÀLµåQ?br> 在国内许多谈åŠç½‘站策划与¾|‘ç«™è®¾è®¡çš„åŒºåˆ«ï¼Œè®¸å¤šäºø™®²ä¸å‡ºåQŒä¸»è¦æ˜¯å› äؓ两者之间é‡å çš„区域很多åQŒç½‘站策划需è¦è€ƒè™‘åˆ°æ€æƒ³å¦‚何通过设计ã€ç¨‹åºåŽ»ä½“çŽ°åQŒç½‘站设 计需è¦åœ¨å……分ç†è§£¾|‘ç«™½{–划æ€èµ\的基¼‹€ä¹‹ä¸Šæ‰èƒ½ç‰|´»è®¾è®¡ã€‚éšç€¾|‘ç«™½{–划的专业化˜q›ç¨‹åŠ é€Ÿï¼Œž®†ä‹É整体¾|‘ç«™½{–划åQŒç½‘站设计,¾|‘站开å‘å˜å¾—夿‚,我们需è¦è€ƒè™‘到许 多技术以外的市场ã€å®¢æˆ·å› ç´ ï¼Œå› æ­¤åQŒæœªæ¥å¤§åž‹ç½‘站设计表现风格应该会有所整åˆåQŒåƈ走å‘åQšæžè‡³ç®€¾U¦ã€ä¸ªæ€§å­‘³ä¸¤ä¸ªæ–¹é¢ã€?br>  æžè‡³½Ž€¾U¦é£Žæ û|¼šæŒ‡ä»¥æœ€½Ž€¾U¦çš„æ–¹å¼åQŒåˆ†é…ã€è¡¨çް页é¢å†…容,以引导客æˆïL›´æŠëŠ›®æ ‡å†…容,é¿å…了因内容˜q‡å¤šè€Œäñ”生的焦点分散问题åQŒå®ƒå¯¹äºŽ¾|‘ç«™½{–划和设计内容的分布åˆç†æ€§è¦æ±‚éžå¸”R«˜åQŒåœ¨å›½å†…åšå¾—最好的当属阉K‡Œã€æ–°‹¹ªã€CJOLã€å“åšähæ‰ç½‘……ã€?br> 个性孑³é£Žæ û|¼šæŒ‡ä»¥å¤šæ ·åŒ–的表现方å¼åQŒè®¾è®¡ç½‘站。它主è¦é’ˆå¯¹ä¸€äº›ä»¥å¨×ƒ¹æ€§è´¨ä¸ÞZ¸»çš„大型网站或ä¼ä¸š¾|‘ç«™åQŒå®ƒå…·å¤‡é«˜å¼ºåº¦çš„眼çƒå¸å¼•力ã€ä¸°å¯Œçš„囄¡‰‡æˆ–文字表çŽ? å½¢å¼åQŒä‹É客户能够愉悦åœîCínå—ç½‘ç«™å†…å®¹åŠæœåŠ¡åQŒä»¥˜q™ç§é£Žæ ¼ä¸ÞZ»£è¡¨çš„大型¾|‘站暂时没有å‘现åQŒä½†ä¼ä¸š¾|‘站当属å¯å£å¯ä¹åQŒSONYå¨×ƒ¹ç«?#8230; 

转自åQšhttp://tb.blog.csdn.net/TrackBack.aspx?PostId=1683119

]]>
starting struts2 ¾˜»è¯‘ ½W?ç«?架构的目æ ?/title><link>http://www.aygfsteel.com/atiger06/archive/2007/07/25/132352.html</link><dc:creator>leefoo</dc:creator><author>leefoo</author><pubDate>Wed, 25 Jul 2007 09:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/atiger06/archive/2007/07/25/132352.html</guid><wfw:comment>http://www.aygfsteel.com/atiger06/comments/132352.html</wfw:comment><comments>http://www.aygfsteel.com/atiger06/archive/2007/07/25/132352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/atiger06/comments/commentRss/132352.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/atiger06/services/trackbacks/132352.html</trackback:ping><description><![CDATA[<p class="MsoNormal"><span style="font-family: 宋体;">对基于特定代ç çš„应用æ¥è¯´åQŒå…¶æž¶æž„目标很难¼‹®å®šä¸‹æ¥ã€‚在开始开å‘之å‰åˆ¶å®šæ–‡æ¡£åŒ–的目标,˜q™ç§æƒ…å†µåªæ˜¯½Iºæƒ³åQŒå› ä¸ÞZ¸€æ—¦å¼€å§‹å¼€å‘,代ç é€šå¸¸ž®×ƒ¼šæœä¸€ä¸ªä¸Žæž¶æž„目标ä¸åŒçš„æ–¹å‘剘q›ï¼Œ˜q™æ ·å®žé™…上最åŽçš„åº”ç”¨ç‰¹å¾æ˜¯åŸºäºŽä»£ç è€Œä¸æ˜¯æž¶æž„。这¿Uæƒ…å†µå¾ˆéš‘Ö‘çŽ°åÆˆä¸”æ˜¯å¼€å‘过½E‹ä¸­é€æ­¥å½¢æˆçš„äñ”ç‰©è€Œä¸æ˜¯è®¡åˆ’的产物åQŒå…¶¾l“æžœž®×ƒ¼šé€ æˆä¸åŒçš„程åºåŒ…åŠç‰¹æ€§ä¹‹é—´çš„ä¸ä¸€è‡´ã€?/span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="font-family: 宋体;">本章我们ž®†ä¼šè®¨è®º</span><span lang="EN-US">5</span><span style="font-family: 宋体;">¿U基äº?/span><span lang="EN-US">Struts2</span><span style="font-family: 宋体;">代ç çš„特å¾ã€‚从</span><span lang="EN-US">2002</span><span style="font-family: 宋体;">òq´ä»¥æ¥ï¼Œ˜q™äº›æž¶æž„元素éšç€ä»£ç çš„å‘展ä»ç„¶å­˜åœ?/span><span lang="EN-US">--</span><span style="font-family: 宋体;">从开始的</span><span lang="EN-US">WebWork</span><span style="font-family: 宋体;">åQŒç»˜q?/span><span lang="EN-US">WebWork</span><span style="font-family: 宋体;">分解ä¸?/span><span lang="EN-US">WebWork2</span><span style="font-family: 宋体;">å’?/span><span lang="EN-US">XWork</span><span style="font-family: 宋体;">åQŒä¸€ç›´åˆ°æœ€åŽè{å˜äØ“</span><span lang="EN-US">Struts2.</span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><strong><span lang="EN-US">4</span></strong><strong><span style="font-family: 宋体;">ã€?/span><span lang="EN-US">1 </span></strong><strong><span style="font-family: 宋体;">概念的分è§?/span><span lang="EN-US"><o:p></o:p></span></strong></p> <p class="MsoNormal"><span style="font-family: 宋体;">ä½œäØ“ä¸€ä¸?/span><span lang="EN-US">web</span><span style="font-family: 宋体;">应用开å‘äh员,有多¿Uçñ”别的功能需è¦è¿›è¡Œé˜˜qŽÍ¼š</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">1</span><span style="font-family: 宋体;">åQ‰åœ¨</span><span lang="EN-US">request/response</span><span style="font-family: 宋体;">周期期间åQŒéœ€è¦å¯¹ä½œäؓ其核心目标的æ¯ä¸ª</span><span lang="EN-US">action</span><span style="font-family: 宋体;">的逻辑˜q›è¡Œè¯´æ˜ŽåQ?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">2</span><span style="font-family: 宋体;">åQ‰è®¿é—®æˆ–拥有å¯ä»¥ç”¨æ¥æ‰§è¡Œ</span><span lang="EN-US">action</span><span style="font-family: 宋体;">逻辑或访问资æºçš„业务对象åQ?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">3</span><span style="font-family: 宋体;">åQ‰ç¼–è¯‘ã€æ˜ ž®„和转æ¢åQŒä»¥ä¾¿æŠŠ</span><span lang="EN-US">HTML</span><span style="font-family: 宋体;">中基于字½W¦çš„倯D{åŒ–äØ“åŽŸå§‹¾cÕdž‹åQŒä»¥åŠæŠŠè§†å›¾å¯¹è±¡è½¬æ¢ä¸ÞZ¸šåŠ¡å¯¹è±¡æˆ–æ•°æ®è¡¨æ¥˜q›è¡Œè¡¨ç¤ºåQ?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">4</span><span style="font-family: 宋体;">åQ‰äؓ应用中分¾l„çš„</span><span lang="EN-US">action</span><span style="font-family: 宋体;">或所有的</span><span lang="EN-US">action</span><span style="font-family: 宋体;">æä¾›åŠŸèƒ½çš„æ¨ªåˆ‡å…³æ³¨ç‚¹ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åœ?/span><span lang="EN-US">Struts2</span><span style="font-family: 宋体;">架构中,æ¯ä¸€ä¸ªæ¦‚念都是独立的。功能和逻辑ä¸éœ€è¦æ”¾¾|®åœ¨ä¸“é—¨çš?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">里。我们æ¥çœ‹çœ‹ä¸Šé¢æ‰€æåˆ°çš„æ¦‚念以åŠå®ƒä»¬æ˜¯å¦‚何处ç†çš„:</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">1</span><span style="font-family: 宋体;">åQ‰æ¯ä¸?/span><span lang="EN-US">Action</span><span style="font-family: 宋体;">逻辑</span><span lang="EN-US">--</span><span style="font-family: 宋体;">˜q™æ˜¯æœ€½Ž€å•的概念。æ¯ä¸?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">è´Ÿè´£å®ƒéœ€è¦æä¾›çš„é€»è¾‘æˆ–åŠŸèƒ½ï¼›</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">2</span><span style="font-family: 宋体;">åQ‰ç¼–è¯‘ã€æ˜ ž®„和转æ¢</span><span lang="EN-US">--3</span><span style="font-family: 宋体;">者是å„自有所ä¸åŒçš„æ¦‚念,但是有一个相åŒç‚¹ž®±æ˜¯å®ƒä»¬éƒ½æ˜¯ä½œäؓ核心</span><span lang="EN-US">action</span><span style="font-family: 宋体;">逻辑的补充。编译和¾cÕdž‹è½¬æ¢ç”±æ¡†æž¶æœ¬íw«è¿›è¡Œå¤„ç†ã€‚æ¥è‡ªäºŽ</span><span lang="EN-US">HTML</span><span style="font-family: 宋体;">的字½W¦å€¼åœ¨</span><span lang="EN-US">action</span><span style="font-family: 宋体;">开始处ç†ä¹‹å‰è¢«è½¬æ¢ä¸ºåŸºæœ¬ç±»åž‹æˆ–被注入到</span><span lang="EN-US">action</span><span style="font-family: 宋体;">ä¸?/span><span lang="EN-US">--</span><span style="font-family: 宋体;">所有需è¦çš„都在此处。映ž®„由一个特定的拦截器进行处ç†ã€‚通过对一ä¸?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">˜q›è¡Œé…ç½®åQŒè¯´æ˜Žå…¶æ‰€æ‹¥æœ‰çš„域模型åQŒåƈ准确指明其在</span><span lang="EN-US">HTML</span><span style="font-family: 宋体;">中所对应的域åQŒæ¡†æž¶å°†ä¼šæŠŠ</span><span lang="EN-US">UI</span><span style="font-family: 宋体;">映射到该域模型上。它甚至会生æˆå¯¹è±¡å›¾ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">3</span><span style="font-family: 宋体;">åQ‰æ¨ªåˆ‡å…³æ³¨ç‚¹</span><span lang="EN-US">--</span><span style="font-family: 宋体;">拦截器是æä¾›æ¨ªåˆ‡åŠŸèƒ½çš„ä¸»è¦è§’艌Ӏ‚å¼€å‘者å¯ä»¥å®žçŽ°æ‹¦æˆªå™¨åQŒç„¶åŽæŠŠå®ƒä»¬åº”ç”¨åˆ°æ‰€æœ?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">ã€æŸä¸ªç‰¹å®šåŒ…中的所æœ?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">或者选择æŸäº›æŒ‡å®šçš?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">中去。å¦ä¸€ä¸ªæ¨ªåˆ‡å…³æ³¨ç‚¹æ˜¯ç”¨æˆähŽ¥å£å±‚ã€?/span><span lang="EN-US">Struts2</span><span style="font-family: 宋体;">å¯ä»¥ä½¿ç”¨å…¶æ‰€æä¾›çš„ç§°ä¸?#8220;主题åQ?/span><span lang="EN-US">themes</span><span style="font-family: 宋体;">åQ?#8221;的标½{¾æ¥ä¸ºæ­¤æä¾›å¸®åŠ©ã€‚ä¸åŒçš„主题å¯ä»¥è¢«å¼€å‘æ¥æä¾›ä¸åŒçš„层选项åQŒåƈ被应用到å•ä¸ªæ ‡ç­¾æˆ–æ•´ä¸ªåº”ç”¨ï¼ˆé€šè¿‡æŠŠå®ƒè®¾äØ“é»˜è®¤å€û|¼‰ã€?/span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><strong><span lang="EN-US">4</span></strong><strong><span style="font-family: 宋体;">ã€?/span><span lang="EN-US">2 </span></strong><strong><span style="font-family: 宋体;">æ¾è€¦åˆ</span><span lang="EN-US"><o:p></o:p></span></strong></p> <p class="MsoNormal"><span lang="EN-US">WebWork</span><span style="font-family: 宋体;">的早期目标之一ž®±æ˜¯æä¾›ä¸€ä¸ªæ¾è€¦åˆçš„æ¡†æž¶ã€‚å…¶</span><span lang="EN-US">2.0</span><span style="font-family: 宋体;">版更加强调了˜q™ç‚¹åQšæŠŠä»£ç åˆ†æˆäº†ä¸¤ä¸ªé¡¹ç›®ï¼Œä¸€ä¸ªæ˜¯</span><span lang="EN-US">XWork--</span><span style="font-family: 宋体;">æä¾›æ™®é€šçš„命ä×o模å¼</span><span lang="EN-US">(generic command-pattern)</span><span style="font-family: 宋体;">框架åQŒå¦ä¸€ä¸ªæ˜¯</span><span lang="EN-US">WebWork--</span><span style="font-family: 宋体;">ä¸?/span><span lang="EN-US">XWork</span><span style="font-family: 宋体;">æä¾›æ˜Žç¡®çš?/span><span lang="EN-US">web</span><span style="font-family: 宋体;">接å£ã€‚è¿™ä¸?/span><span lang="EN-US">WebWork</span><span style="font-family: 宋体;">架构基础上的å˜åŒ–创å¾äº†äºŒè€…çš„å…Þq”Ÿå…³ç³»ã€‚原æ¥èµ–以æˆåçš„“</span><span lang="EN-US">WebWork</span><span style="font-family: 宋体;">”现在实际上是</span><span lang="EN-US">WebWork</span><span style="font-family: 宋体;">å’?/span><span lang="EN-US">XWork</span><span style="font-family: 宋体;">的结åˆä½“ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">ä½œäØ“ä¸€ä¸ªç‹¬ç«‹çš„™å¹ç›®åQ?/span><span lang="EN-US">XWork</span><span style="font-family: 宋体;">现在å¯ä»¥è¢«ç”¨äºŽå…¶å®ƒé¡¹ç›®çš„一部分äº?/span><span lang="EN-US">--</span><span style="font-family: 宋体;">实际上也¼‹®å®žæ˜¯è¿™æ —÷€?/span><span lang="EN-US">Swingwork</span><span style="font-family: 宋体;">ž®±æ˜¯ä¸€ä¸ªè¿™æ ïLš„™å¹ç›®</span><span lang="EN-US">--</span><span style="font-family: 宋体;">它是一个基äº?/span><span lang="EN-US">Swing</span><span style="font-family: 宋体;">çš„ã€åº•层ä‹Éç”?/span><span lang="EN-US">XWork</span><span style="font-family: 宋体;">çš?/span><span lang="EN-US">MVC</span><span style="font-family: 宋体;">框架。å¦å¤–一个例å­å°±æ˜?/span><span lang="EN-US">JMS</span><span style="font-family: 宋体;">å‰ç«¯</span><span lang="EN-US">--</span><span style="font-family: 宋体;">执行或共享与</span><span lang="EN-US">web UI</span><span style="font-family: 宋体;">相关çš?/span><span lang="EN-US">XWork action</span><span style="font-family: 宋体;">ã€‚è¿™äº›ä¾‹å­æä¾›äº†é«˜æ°´òqÏx¾è€¦åˆçš„典型案例ã€?/span><span lang="EN-US">Struts2</span><span style="font-family: 宋体;">是åˆä¸€ä¸ªé‡‡ç”?/span><span lang="EN-US">XWork</span><span style="font-family: 宋体;">的项目ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">æ¾è€¦åˆæ€æƒ³å·²ç»æ›´è¿‘一步,集æˆåˆ°æ•´ä¸ªæ¡†æž?/span><span lang="EN-US">--</span><span style="font-family: 宋体;">从处ç?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">的第一步直到最åŽä¸€æ­¥ã€‚实际上åQŒåœ¨</span><span lang="EN-US">Struts2</span><span style="font-family: 宋体;">里几乎没有什么ä¸å¯é…¾|®çš„</span><span lang="EN-US">--</span><span style="font-family: 宋体;">个ähè®¤äØ“˜q™ä¸ªç‰¹ç‚¹æ—¢æ˜¯</span><span lang="EN-US">Struts2</span><span style="font-family: 宋体;">å‘展的æžå¤§åŽŸåŠ¨åŠ›ä¹‹ä¸€åQŒä½†åŒæ—¶ä¹Ÿæ˜¯å…‰™‡å¤§ç¼ºé™·ä¹‹ä¸€ã€?/span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="font-family: 宋体;">æ¾è€¦åˆé…置的一般案例包括:</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">1</span><span style="font-family: 宋体;">åQ‰æŠŠ</span><span lang="EN-US">URL</span><span style="font-family: 宋体;">映射åˆ?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">åQ?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">2</span><span style="font-family: 宋体;">åQ‰æŠŠä¸€ä¸?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">çš„ä¸åŒç»“果映ž®„到æäº¤çš„页é¢ï¼›</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">3</span><span style="font-family: 宋体;">åQ‰æŠŠå¤„ç†æœŸé—´äº§ç”Ÿçš„异常映ž®„到æäº¤çš„异帔R¡µé¢ï¼›</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">ä¸å¸¸ä½¿ç”¨å?/span><span lang="EN-US">Struts2</span><span style="font-family: 宋体;">特定的案例包括:</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">1</span><span style="font-family: 宋体;">åQ‰å¦‚æžœä½ ä¸æƒ³ä½¿ç”¨</span><span lang="EN-US">Sping</span><span style="font-family: 宋体;">框架åQŒå°±å¾—é…¾|®ä¸šåŠ¡å¯¹è±¡å·¥åŽ‚ï¼›</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">2</span><span style="font-family: 宋体;">åQ‰æ”¹å?/span><span lang="EN-US">URL</span><span style="font-family: 宋体;">映射åˆîC¸€ä¸?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">¾cÈš„æ–¹å¼åQ?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">3</span><span style="font-family: 宋体;">åQ‰äØ“</span><span lang="EN-US">action</span><span style="font-family: 宋体;">¾l“果增加新的¾l“æžœ¾cÕdž‹åQ?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">4</span><span style="font-family: 宋体;">åQ‰äؓ新的框架功能增加æ’äšgåQ?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">åQ?/span><span lang="EN-US">5</span><span style="font-family: 宋体;">åQ‰é€šè¿‡æ‹¦æˆªå™¨é…¾|®æ¡†æž¶çñ”功能åQ?/span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="font-family: 宋体;">æ¾è€¦åˆ¾pÈ»Ÿçš„好处是众所周知çš?/span><span lang="EN-US">--</span><span style="font-family: 宋体;">增强了寋¹‹è¯•æ€§ã€æ˜“于扩展框架特å¾ç­‰ã€‚ä½†æœ‰ä¸€ä¸ªç¼ºé™øP¼Œç”׃ºŽå¯ç½®é…çš„ç‰|´»æ€§ï¼ˆž®¤å…¶æ˜¯ä¸Žæ‹¦æˆªå™¨ç›¸å…³çš„åQ‰ï¼Œå¯ÆD‡´ä¸€ä¸ªç‰¹å®?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">的处ç†èµ\径䏿˜“被开å‘者所ç†è§£ã€‚这一点在˜q›è¡Œè°ƒè¯•的时候比较明显。由于ä¸ç†è§£å‘生了什么事åQŒä¸€ä¸ªä¸äº†è§£¾pÈ»Ÿçš„å¼€å‘äh员将ä¸èƒ½å¿«é€Ÿé«˜æ•ˆçš„˜q›è¡Œè°ƒè¯•。问题本íw«å¯èƒ½æ¯”较简å•,比如ç”׃¸€ä¸ªæ²¡æœ‰è¿›è¡Œæ­£¼‹®é…¾|®çš„æ‹¦æˆªå™¨å¼•èµïLš„åQŒæˆ–者甚臛_ªæ˜¯å› ä¸ºæ‹¦æˆªå™¨çš„顺åºä¸å¯¹å¼•èµïLš„。åªè¦ç†è§£å¤„ç†èµ\径上的æ¯ä¸€ä¸ªç»†èŠ‚ï¼Œå¾ˆå¿«ž®×ƒ¼šæ‰‘Öˆ°é—®é¢˜çš„解军_Šžæ³•ã€?/span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><strong><span lang="EN-US">4</span></strong><strong><span style="font-family: 宋体;">ã€?/span><span lang="EN-US">3 </span></strong><strong><span style="font-family: 宋体;">易测试性(</span><span lang="EN-US">Testability</span></strong><strong><span style="font-family: 宋体;">åQ?/span><span lang="EN-US"><o:p></o:p></span></strong></p> <p class="MsoNormal"><span style="font-family: 宋体;">在过åŽÕd‡ òq´ä¸­åQŒå•元测试已¾læˆä¸ø™ÊYä»¶å¼€å‘过½E‹ä¸­äº‹å®žä¸Šçš„æ ‡å‡†ã€‚它ä¸ä»…ä¿è¯äº†ç±»é€»è¾‘的一致性,而且通过在类开å‘过½E‹ä¸­ç”šè‡³å¼€å‘之å‰å®žçްå•元测试,ž®†ä¼šå‡å°‘è®¾è®¡çš„å¤æ‚性,òq¶ä¸”会ä‹Éè®¾è®¡æ›´äØ“å¥å£®ã€?/span></p> <p class="MsoNormal"><span lang="EN-US">Struts2</span><span style="font-family: 宋体;">çš„å‰íw«ï¼Œ</span><span lang="EN-US">WebWork</span><span style="font-family: 宋体;">ž®±æ˜¯å»ºç«‹åœ¨è¿™¿UçŽ¯å¢ƒä¹‹ä¸Šçš„ã€‚ç”±äºŽæ¡†æž¶å…ƒç´ çš„æ¾æ•£è€¦åˆåQŒæµ‹è¯•很å®ÒŽ˜“˜q›è¡Œã€‚在</span><span lang="EN-US">web</span><span style="font-family: 宋体;">应用开å‘过½E‹ä¸­åQ?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">ã€æ‹¦æˆªå™¨ã€ç»“æžœã€å¯¹è±¡å·¥åŽ‚åŠå…¶å®ƒè¢«å¼€å‘çš„¾l„äšg能够独立地进行测试。由äº?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">和拦截器最为常用,我们ž®±å¯¹˜q™ä¸¤¿U组件进行详¾l†çš„æŽ¢è®¨ã€?/span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US">Actions</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">通常在框架中是通过执行“</span><span lang="EN-US">execute()</span><span style="font-family: 宋体;">”æ–ÒŽ³•æ¥è°ƒç”?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">的,或者在é…置时调用ä“Q何一个返回å€égؓ字符å€û|¼ˆ</span><span lang="EN-US">String</span><span style="font-family: 宋体;">åQ‰çš„æ–ÒŽ³•æ¥è¿›è¡Œè°ƒç”¨çš„。从易测性的角度æ¥çœ‹åQŒè¿™å†ç®€å•丘q‡äº†ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">我们æ¥çœ‹ä¸€ä¸ªä¾‹å­ã€‚䏋颿˜¯ä¸€ä¸ªæ•°å­—ç¯åŠ çš„</span><span lang="EN-US">action</span><span style="font-family: 宋体;">¾c»ï¼š</span></p> <p class="MsoNormal"><span lang="EN-US">public class MyAction {</span></p> <p class="MsoNormal"><span lang="EN-US">private int number;</span></p> <p class="MsoNormal"><span lang="EN-US">public int getnumber() { return number; }</span></p> <p class="MsoNormal"><span lang="EN-US">public void setNumber( int n ) { number = n; }</span></p> <p class="MsoNormal"><span lang="EN-US">public String execute() {</span></p> <p class="MsoNormal"><span lang="EN-US">number += 10;</span></p> <p class="MsoNormal"><span lang="EN-US">return “success”;</span></p> <p class="MsoNormal"><span lang="EN-US">}</span></p> <p class="MsoNormal"><span lang="EN-US">}</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">ç”׃ºŽè¯?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">æ˜?/span><span lang="EN-US">POJO</span><span style="font-family: 宋体;">åQŒå•元测试åªéœ€æŠ?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">实例化ã€è°ƒç”¨æ–¹æ³•,òq¶åœ¨æ–­ç‚¹å‡ºå¾—到预期的¾l“æžœž®±å¯ä»¥äº†ã€‚æ‰€æœ‰æœæ•°æ®å’Œèµ„æºéƒ½é€šè¿‡</span><span lang="EN-US">setter</span><span style="font-family: 宋体;">æ–ÒŽ³•æä¾›¾l?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">。因æ­?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">需è¦çš„ä»ÖM½•æ•°æ®éƒ½èƒ½å¤Ÿç›´æŽ¥åœ¨</span><span lang="EN-US">action</span><span style="font-family: 宋体;">里进行设¾|®ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">在本例中我们需è¦ä¸¤ä¸ªæ–­ç‚?/span><span lang="EN-US">--</span><span style="font-family: 宋体;">ä¸€ä¸ªäØ““</span><span lang="EN-US">execute</span><span style="font-family: 宋体;">”æ–ÒŽ³•çš„è¾“å‡ø™¿›è¡Œè®¾¾|®ï¼Œå¦ä¸€ä¸ªåˆ™æ˜¯äؓ验è¯</span><span lang="EN-US">action</span><span style="font-family: 宋体;">çš„çŠ¶æ€æ˜¯å¦æ˜¯æˆ‘们预期的。å•元测试如下所½Cºï¼š</span></p> <p class="MsoNormal"><span lang="EN-US">public class myActionTest extends TestCase {</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">…</span></p> <p class="MsoNormal"><span lang="EN-US">public void testExecute() {</span></p> <p class="MsoNormal"><span lang="EN-US">MyAction action = new MyAction();</span></p> <p class="MsoNormal"><span lang="EN-US">Action.setNumber(5);</span></p> <p class="MsoNormal"><span lang="EN-US">assertEquals("success", action.execute());</span></p> <p class="MsoNormal"><span lang="EN-US">assertEquals(15,action.getNumber());</span></p> <p class="MsoNormal"><span lang="EN-US">}</span></p> <p class="MsoNormal"><span lang="EN-US">}</span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="font-family: 宋体;">对于资溽E微有点éºÈƒ¦åQŒç±»ä¼?/span><span lang="EN-US">jMock</span><span style="font-family: 宋体;">˜q™æ ·çš„库å¯ä»¥è¢«ç”¨æ¥æä¾›èµ„æºçš„æ¨¡æ‹Ÿå®žçްåQŒæµ‹è¯•在</span><span lang="EN-US">action</span><span style="font-family: 宋体;">和资æºä¹‹é—´çš„äº¤äº’æ˜¯å¦æ­£ç¡®ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">ž®½ç®¡æœ¬ä¾‹æ˜¯ç”¨</span><span lang="EN-US">JUnit</span><span style="font-family: 宋体;">写æˆçš„,但是</span><span lang="EN-US">TestNG</span><span style="font-family: 宋体;">或其它ä“Q何框枉™ƒ½å¯ä»¥ä½¿ç”¨ã€?/span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="font-family: 宋体;">拦截å™?/span><span lang="EN-US">(Interceptors)</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">当你¾~–译拦截器的时候,‹¹‹è¯•会ç¨å¾®æœ‰ç‚¹å¤æ‚。丘q‡ä¹Ÿæœ‰ä¸€äº›é¢å¤–的帮助å¯ä»¥åˆ©ç”¨ã€‚ä‹É用拦截器˜q›è¡Œå·¥ä½œæœ‰ä¸¤¿U情景ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">½W¬ä¸€¿U情景是使用在调用时ä¸?/span><span lang="EN-US">ActionInvocation</span><span style="font-family: 宋体;">对象˜q›è¡Œäº¤äº’的拦截器。在执行åŽï¼Œä½ èƒ½å¤Ÿé€šè¿‡åœ¨æ–­ç‚¹å‡ºå¾—到拦截器本íw«çš„çŠ¶æ€æ¥éªŒè¯é€»è¾‘的正¼‹®æ€§ã€‚在˜q™ç§æƒ…景下,你能够利用与‹¹‹è¯•</span><span lang="EN-US">action</span><span style="font-family: 宋体;">åŒæ ·çš„æ–¹æ³•楋¹‹è¯•拦截器。实例化拦截器ã€åˆ›å»ÞZ¸€ä¸?/span><span lang="EN-US">ActionInvocation</span><span style="font-family: 宋体;">对象的模拟实çŽ?/span><span lang="EN-US">(</span><span style="font-family: 宋体;">该对象带有在‹¹‹è¯•拦截器时ž®†ä¼šç”¨åˆ°çš„å€?/span><span lang="EN-US">)</span><span style="font-family: 宋体;">ã€è°ƒç”?/span><span lang="EN-US">intercept</span><span style="font-family: 宋体;">æ–ÒŽ³•ã€åœ¨æ–­ç‚¹å¤„得到预期的¾l“果。这些å¯èƒ½å‘生在拦截器本íw«ã€è¢«è°ƒç”¨æ–ÒŽ³•的返回结果或是由¾pÈ»ŸæŠ›å‡ºçš„异常ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">½W¬äºŒ¿U情景是使用与其环境或拦截器堆栈中的其它拦截器å‘生交互的拦截器。在˜q™ç§æƒ…况下,‹¹‹è¯•需è¦é€šè¿‡</span><span lang="EN-US">ActionProxy</span><span style="font-family: 宋体;">¾cÖM¸Ž</span><span lang="EN-US">action</span><span style="font-family: 宋体;">˜q›è¡Œäº¤äº’åQŒè¿˜ž®†ä¼šéœ€è¦è®¿é—®æ‹¦æˆªå™¨æœ¬èínä¸èƒ½è®‰K—®çš„其它环境对象ã€?/span></p> <p class="MsoNormal"><span lang="EN-US">XWork</span><span style="font-family: 宋体;">库通过æä¾›</span><span lang="EN-US">XWorkTestCase</span><span style="font-family: 宋体;">¾cÀL¥ä¸?/span><span lang="EN-US">JUnit</span><span style="font-family: 宋体;">‹¹‹è¯•æä¾›å¸®åŠ©ã€é€šè¿‡æä¾›</span><span lang="EN-US">TestNGStrutsTestCase </span><span style="font-family: 宋体;">å’?/span><span lang="EN-US">TestNGXWorkTestCase</span><span style="font-family: 宋体;">¾cÀL¥ä¸?/span><span lang="EN-US">TestNG</span><span style="font-family: 宋体;">‹¹‹è¯•æä¾›å¸®åŠ©ã€‚è¿™äº›äØ“</span><span lang="EN-US">ConfigurationManager,Configuration, Container </span><span style="font-family: 宋体;">å’?/span><span lang="EN-US"> ActionProxyFactory</span><span style="font-family: 宋体;">¾cÈš„实例æä¾›äº†æµ‹è¯•实现。涉åŠåˆ°çš„ç±»˜q˜æœ‰</span><span lang="EN-US">XWorkTestCaseHelper </span><span style="font-family: 宋体;">å’?/span><span lang="EN-US"> MockConfiguration.</span><span style="font-family: 宋体;">½{‰ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">现在我们已ç»å…·å¤‡äº†å®‰è£…环境的基础åQŒæµ‹è¯•本íw«å˜å¾—容易了</span><span lang="EN-US">--</span><span style="font-family: 宋体;">éµåó@在第一¿U情景里所æè¿°çš„æ­¥éª¤å³å¯ã€‚唯一的ä¸åŒç‚¹åœ¨äºŽåQŒä¸æ˜¯è°ƒç”¨æ‹¦æˆªå™¨çš?/span><span lang="EN-US">intercept()</span><span style="font-family: 宋体;">æ–ÒŽ³•åQŒè€Œæ˜¯éœ€è¦è°ƒç”?/span><span lang="EN-US">ActionProxy</span><span style="font-family: 宋体;">¾cÈš„</span><span lang="EN-US">execute()</span><span style="font-family: 宋体;">æ–ÒŽ³•ã€‚å¦‚ä¸‹è¿°ä»£ç æ‰€½Cºï¼š</span></p> <p class="MsoNormal"><span lang="EN-US">ActionProxy proxy =</span></p> <p class="MsoNormal"><span lang="EN-US">actionProxyFactory.createActionProxy(NAMESPACE,NAME,null);</span></p> <p class="MsoNormal"><span lang="EN-US">assertEquals("success", proxy.execute());</span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="font-family: 宋体;">在这¿U情况下åQŒæµ‹è¯•将会设¾|®æ–­ç‚ÒŽ¥èŽ·å–预期çš?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">¾l“果倹{€?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">值或值堆栈的倹{€‚被执行çš?/span><span lang="EN-US">action</span><span style="font-family: 宋体;">èƒ½å¤Ÿåœ¨æ‰§è¡Œå‰æˆ–执行åŽé€šè¿‡ä¸‹é¢çš„调用进行访问:</span></p> <p class="MsoNormal"><span lang="EN-US">MyAction action=(MyAction)proxy.getInvocation().getAction();</span></p> <p class="MsoNormal"><span style="font-family: 宋体;">而值堆栈则å¯ä»¥é€šè¿‡ä¸‹é¢çš„调用进行访问:</span></p> <p class="MsoNormal"><span lang="EN-US">proxy.getInvocation().getStack();</span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><strong><span lang="EN-US">4</span></strong><strong><span style="font-family: 宋体;">ã€?/span><span lang="EN-US">4 </span></strong><strong><span style="font-family: 宋体;">模å—åŒ?/span><span lang="EN-US">(Modularization)<o:p></o:p></span></strong></p> <p class="MsoNormal"><span style="font-family: 宋体;">éšç€åº”用¾pÈ»Ÿ­‘Šæ¥­‘Šåºžå¤§ï¼ŒæŠ?/span><span lang="EN-US">web</span><span style="font-family: 宋体;">åº”ç”¨åˆ†ç¦»ä¸ø™®¸å¤šæ¨¡å—å°±å˜å¾—­‘Šæ¥­‘Šé‡è¦ã€‚模å—化å…许在一个项目中开å‘的功能或新的框架特å¾èƒ½å¤Ÿç‹¬ç«‹æ‰“包,òq¶å¯ä»¥åœ¨å…¶å®ƒ™å¹ç›®ä¸­è¿›è¡Œé‡ç”¨ã€?/span><span lang="EN-US">Struts2</span><span style="font-family: 宋体;">å·²ç»æŠŠæ¨¡å—åŒ–ä½œäØ“å…¶æž¶æž„çš„åŸºç¡€éƒ¨åˆ†åQŒå…许开å‘者独立工作和¾~–译彼此的项目ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">䏋颿˜¯ä¸€äº›å¯¹åº”用˜q›è¡Œæ¨¡å—化的æ–ÒŽ³•åQ?/span></p> <p class="MsoNormal"><span lang="EN-US">(1)</span><span style="font-family: 宋体;">é…置信æ¯èƒ½å¤Ÿè¢«åˆ†ä¸ºå¤šä¸ªæ–‡ä»?/span><span lang="EN-US">--</span><span style="font-family: 宋体;">˜q™åƈä¸åª„å“应用的打包åQŒç”±äºŽé…¾|®ä¿¡æ¯æ ¹æ®åŠŸèƒ½ç•Œé™è¿›è¡Œé€»è¾‘分离而易于查找,从而简化的开å‘äh员的工作ã€?/span></p> <p class="MsoNormal"><span lang="EN-US">(2)</span><span style="font-family: 宋体;">独立的应用模å—å¯ä»¥ä»¥æ’äšgçš„åÅžå¼è¿›è¡Œåˆ›å»?/span><span lang="EN-US">--</span><span style="font-family: 宋体;">ä¸ÞZº†æä¾›æ‘怸ªç‰¹å®šç‰¹å¾æ‰€éœ€çš„一切都å¯ä»¥æ‰“åŒ…åœ¨ä¸€èµ·åÆˆä½œäØ“æ’äšg独立å‘布。这包括</span><span lang="EN-US">action</span><span style="font-family: 宋体;">ã€æ‹¦æˆªå™¨ã€æ‹¦æˆªå™¨å †æ ˆã€è§†å›¾æ¨¡æ¿ï¼ˆ</span><span lang="EN-US">JSP</span><span style="font-family: 宋体;">除外åQ‰ç­‰ã€‚æµè§ˆå™¨æ’äšg的酾|®å°±æ˜¯ä¸€ä¸ªä¾‹å­ï¼Œè¯¥æ’ä»¶æä¾›äº†ä¸€ä¸ªå®Œæ•´çš„æ¨¡å—åQŒå½“ä½ æŠŠè¯¥æ¨¡å—æ·»åŠ åˆ°ä½ çš„åº”ç”¨ä¸­æ—¶åQŒå…¶æä¾›äº†ä¸€ä¸?/span><span lang="EN-US">web</span><span style="font-family: 宋体;">æŽ¥å£æ¥æŸ¥çœ‹é…¾|®ä¿¡æ¯ã€?/span></p> <p class="MsoNormal"><span lang="EN-US">(3)</span><span style="font-family: 宋体;">å¯ä»¥åˆ›å¾æ–°çš„æ¡†æž¶åŠŸèƒ½æ’äšg</span><span lang="EN-US">-</span><span style="font-family: 宋体;">éžç‰¹å®šåº”用的新功能å¯ä»¥ä»¥æ’äšg形弿†ç»‘òq¶åœ¨ä¸åŒçš„应用中使用ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">从技术角度æ¥è¯ß_¼Œæ‰€æœ‰è¿™äº›å¯¹åº”用˜q›è¡Œæ¨¡å—化的方å¼éƒ½æ˜¯ä¸€æ ïLš„</span><span lang="EN-US">--</span><span style="font-family: 宋体;">éƒ½å…·æœ‰åŒæ ïLš„é…置元素åQˆé™¤äº†å¿UîC¸åŒä¹‹å¤–,“</span><span lang="EN-US">struts-plugin.xml</span><span style="font-family: 宋体;">”是系¾lŸè‡ªåŠ¨åŠ è½½æ’件时的酾|®æ–‡ä»Óž¼‰ã€å…·æœ‰ç›¸åŒçš„目录¾l“æž„åQŒåƈ且它们也包å«åŒæ ·çš„æ¡†æž¶å’Œåº”用元素ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">æ’äšg的两¿U类型之间的唯一ä¸åŒž®±æ˜¯ä½ åœ¨æ¦‚念上如何看待它们,以åŠå“ªäº›å…ƒç´ å’Œé…¾|®è¢«æ”‘Ö…¥åˆ†å‘包中ã€?/span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"><strong><span lang="EN-US">4.4.1</span></strong></st1:chsdate><strong><span lang="EN-US"> </span></strong><strong><span style="font-family: 宋体;">其它é…置元素</span><span lang="EN-US"><o:p></o:p></span></strong></p> <p class="MsoNormal"><span style="font-family: 宋体;">ç”׃ºŽæ’äšg为核心框架功能æä¾›äº†å¯é€‰å®žçŽŽÍ¼Œæ‰€ä»¥æœ‰ä¸€äº›é¢å¤–çš„é…置元素。尽½Ž¡åœ¨“</span><span lang="EN-US">struts.xml</span><span style="font-family: 宋体;">”å’?#8220;</span><span lang="EN-US">struts-default.xml</span><span style="font-family: 宋体;">”é…置文äšg中å¯ä»¥ä‹É用这些元素,但是通常情况下它们还是在æ’äšgé…置文äšg中进行酾|®ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">对于æ’äšgæ¥è¯´åQŒå¯é€‰å®žçŽ°çš„é…ç½®åˆ†äØ“ä¸¤æ­¥åQ?/span></p> <p class="MsoNormal"><span lang="EN-US">1</span><span style="font-family: 宋体;">ã€ä‹Éç”?/span><span lang="EN-US"><bean .../></span><span style="font-family: 宋体;">æ ‡ç­¾ä¸­æ¥æä¾›å¯é€‰æŽ¥å£çš„实现åQŒä‹É用一个唯一的键æ¥è¯†åˆ«å®ƒã€?/span></p> <p class="MsoNormal"><span lang="EN-US">2</span><span style="font-family: 宋体;">ã€ä‹Éç”?/span><span lang="EN-US"><constant </span><span style="font-family: 宋体;">…</span><span lang="EN-US"> /></span><span style="font-family: 宋体;">标签在已é…置的接å£å®žçŽîC¸­é€‰æ‹©ä¸€ä¸ªã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">æˆ‘ä»¬æ¥æ›´è¯¦ç»†åœ°çœ‹ä¸€ä¸‹è¿™ä¸¤ä¸ªæ­¥éª¤ã€?/span></p> <p class="MsoNormal"><span lang="EN-US"><bean .../></span><span style="font-family: 宋体;">标签å…许æ’äšgæä¾›æ‰©å±•点的实现信æ¯ã€‚下é¢çš„例孞®±æ˜¯ä¸€ä¸ªå±•½Cºåœ¨</span><span lang="EN-US">"struts-default.xml"</span><span style="font-family: 宋体;">æ–‡äšgä¸­äØ“ä¸€ä¸ªå¯¹è±¡å·¥åŽ‚è¿›è¡Œé…¾|®çš„æƒ…况åQ?/span></p> <p class="MsoNormal"><span lang="EN-US"><bean name="struts"</span></p> <p class="MsoNormal"><span lang="EN-US">type="com.opensymphony.xwork2.ObjectFactory"</span></p> <p class="MsoNormal"><span lang="EN-US">class="org.apache.struts2.impl.StrutsObjectFactory" /></span></p> <p class="MsoNormal"><span style="font-family: 宋体;">属性æä¾›äº†åœ?/span><span lang="EN-US">Struts2</span><span style="font-family: 宋体;">中创建和使用一个å¯é€‰å¯¹è±¡å®žçŽ°çš„æ‰€æœ‰ä¿¡æ¯ã€‚å¯ä»¥ä‹É用的属性如下所½Cºï¼š</span></p> <p class="MsoNormal"><span lang="EN-US">class--</span><span style="font-family: 宋体;">æä¾›¾cÈš„å…¨ååQ?/span></p> <p class="MsoNormal"><span lang="EN-US">type--</span><span style="font-family: 宋体;">指明¾c»éœ€è¦å®žçŽ°çš„æŽ¥å£åQ?/span></p> <p class="MsoNormal"><span lang="EN-US">name--</span><span style="font-family: 宋体;">å¯ÒŽ¯ä¸ªç±»˜q›è¡Œå”¯ä¸€è¯†åˆ«çš„简¿UŽÍ¼›</span></p> <p class="MsoNormal"><span lang="EN-US">static--</span><span style="font-family: 宋体;">æŒ‡æ˜Žæ˜¯å¦æŠŠé™æ€ç±»æ–ÒŽ³•注入到类的实例;</span></p> <p class="MsoNormal"><span lang="EN-US">scope--</span><span style="font-family: 宋体;">指明所用实例的范围åQŒå…¶å€¼å¯èƒ½äØ“åQ?/span><span lang="EN-US">"default"</span><span style="font-family: 宋体;">ã€?/span><span lang="EN-US">"request"</span><span style="font-family: 宋体;">ã€?/span><span lang="EN-US">"session"</span><span style="font-family: 宋体;">ã€?/span><span lang="EN-US"> "singleton"</span><span style="font-family: 宋体;">æˆ?/span><span lang="EN-US">"thread"</span><span style="font-family: 宋体;">ã€?/span></p> <p class="MsoNormal"><span lang="EN-US">optional--</span><span style="font-family: 宋体;">如果å€égØ““</span><span lang="EN-US">true</span><span style="font-family: 宋体;">”åQŒæ—¢æ˜¯åœ¨åˆ›å¾¾cÕd®žä¾‹æ—¶å‡ºçŽ°é”™è¯¯åQŒå°†ä»ç„¶¾l§ç®‹åŠ è²ã€?/span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="font-family: 宋体;">接下æ¥ï¼Œ</span><span lang="EN-US"><constant </span><span style="font-family: 宋体;">…</span><span lang="EN-US"> /></span><span style="font-family: 宋体;">标签å…许开å‘äh员选择使用哪个é…ç½®ã€‚åªæœ‰ä¸¤ä¸ªå±žæ€?/span><span lang="EN-US">--</span><span style="font-family: 宋体;">一个属æ€?#8220;</span><span lang="EN-US">name</span><span style="font-family: 宋体;">”æä¾›äº†ä½ çš„æ–°å®žçŽ°æ‰€æ”¹å˜çš„æ‰©å±•点的å¿UŽÍ¼Œå¦ä¸€ä¸ªå±žæ€?#8220;</span><span lang="EN-US">value</span><span style="font-family: 宋体;">”ž®±æ˜¯åœ?/span><span lang="EN-US"><bean </span><span style="font-family: 宋体;">…</span><span lang="EN-US"> /></span><span style="font-family: 宋体;">标签中酾|®çš„“</span><span lang="EN-US">name</span><span style="font-family: 宋体;">”åç§°ã€?/span></p> <p class="MsoNormal"><span lang="EN-US"><constant name="struts.objectFactory" value="plexus" /></span></p> <p class="MsoNormal"><span lang="EN-US"><constant </span><span style="font-family: 宋体;">…</span><span lang="EN-US"> /></span><span style="font-family: 宋体;">æ ‡ç­¾æ˜¯æŠŠä¸€ä¸ªæ–°å€ÆDµ‹¾l™ä¸€ä¸ªå·²çŸ¥å±žæ€§çš„一¿Uæ–¹å¼ã€‚该å€ég¹Ÿå¯ä»¥åœ?/span><span lang="EN-US">"web.xml"</span><span style="font-family: 宋体;">é…置文äšg中ä‹Éç”?#8220;</span><span lang="EN-US">init-param</span><span style="font-family: 宋体;">”˜q›è¡Œä¿®æ”¹åQŒæˆ–者在““</span><span lang="EN-US">struts.properties</span><span style="font-family: 宋体;">”é…置文äšg中作ä¸ÞZ¸€ä¸ªå值对åQ?/span><span lang="EN-US">name-value pair</span><span style="font-family: 宋体;">åQ‰è¿›è¡Œä¿®æ”V€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">如果你没在开å‘一个æ’ä»Óž¼Œè€Œåªæ˜¯ä‹É用常è§?/span><span lang="EN-US">"struts-xml"</span><span style="font-family: 宋体;">é…置文äšg中的˜q™äº›æŠ€å·§ï¼Œ˜q™é‡Œ˜q˜æœ‰ä¸€ä¸ªæ·å¾„。在</span><span lang="EN-US"><constant ... /></span><span style="font-family: 宋体;">标签里,使用你通常攑֜¨</span><span lang="EN-US"><bean ... /></span><span style="font-family: 宋体;">标签里的¾cÕd€?/span><span lang="EN-US">---</span><span style="font-family: 宋体;">˜q™æ ·åšå¯ä»¥é¿å…对</span><span lang="EN-US"><bean ... /></span><span style="font-family: 宋体;">标签的需求ã€?/span></p> <p class="MsoNormal"><span style="font-family: 宋体;">下题q™å¼ è¡¨åˆ—å‡ÞZº†å¯é…¾|®æ‰©å±•点的接å£å’Œå±žæ€§å¿UŽÍ¼šåQˆè¡¨çœç•¥åQ?/span></p> <p class="MsoNormal" style="text-align: left;" align="left"><st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"><strong><span style="font-size: 10pt;" lang="EN-US">4.4.2</span></strong></st1:chsdate><strong><span style="font-size: 10pt;" lang="EN-US"> </span></strong><strong><span style="font-size: 10pt; font-family: 宋体;">惯例优先原则</span></strong><strong><span style="font-size: 10pt;" lang="EN-US">(</span></strong><span style="font-size: 12pt; font-family: times-roman;" lang="EN-US">Convention over configuration</span><strong><span style="font-size: 10pt;" lang="EN-US">)<o:p></o:p></span></strong></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: 宋体;">惯例优先é…ç½®</span><span style="font-size: 10pt; font-family: 宋体;">的原则是</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">Rails</span><span style="font-size: 10pt; font-family: 宋体;">带给ä¸ÀLµåº”用开å‘的一个概å¿üc€‚䏿˜¯æä¾›åœ¨å¾ˆå¤šåº”用中都很类似的é…置文äšgåQŒè€Œæ˜¯å‡å®šåœ¨å¤šæ•°æƒ…况下开å‘äh员将会éµä»Žä¸€ä¸ªç‰¹å®šçš„æ¨¡å¼ã€‚这个模å¼éžå¸¸æ™®é以至于å¯ä»¥è¢«è®¤ä¸ºæ˜¯ä¸€ä¸ªæƒ¯ä¾‹ï¼Œ˜q™æ ·ž®±å¯ä»¥åœ¨æ¡†æž¶ä¸­æä¾›ä¸€ä¸ªé»˜è®¤çš„é…ç½®è€Œä¸æ˜¯äØ“æ¯ä¸ªæ–°çš„应用æä¾›ä¸€ä¸ªé…¾|®ã€‚默认情况下åQŒå¼€å‘äh员ä¸éœ€è¦æä¾›é…¾|®ä¿¡æ¯ã€‚但是如果有与惯例酾|®ä¿¡æ¯ä¸åŒçš„需è¦ï¼Œž®±å¾—æä¾›ç›¸åº”的酾|®ä¿¡æ¯æ¥ä»£æ›¿é»˜è®¤é…置信æ¯ã€?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">Struts2</span><span style="font-size: 10pt; font-family: 宋体;">å·²ç»é‡‡ç”¨äº†è¿™¿Uç†å¿üc€‚æ¾è€¦åˆ¾l?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">Struts2</span><span style="font-size: 10pt; font-family: 宋体;">æä¾›å¤§çš„å¼ÒŽ€§ï¼Œä½†æ˜¯åŒæ—¶˜q™ä¹Ÿæ„味ç€è¯¥æ¡†æž¶å¾ˆéš¾è¿›è¡Œé…¾|®ã€‚è€?/span><span style="font-size: 10pt; font-family: 宋体;">惯例优先é…ç½®</span><span style="font-size: 10pt; font-family: 宋体;">åŽŸåˆ™åˆ™äØ“</span><span style="font-family: 宋体;">˜q™ä¸¤¿Uå¯¹ç«‹çš„åŠ›é‡æä¾›äº†åã^衡,使开å‘äh员的开å‘å¯ä»¥æ›´åŠ ç®€å•和高效ã€?/span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: 宋体;">åœ?/span><span style="font-size: 10pt;" lang="EN-US">Struts2</span><span style="font-size: 10pt; font-family: 宋体;">中,惯例优先é…ç½®</span><span style="font-size: 10pt; font-family: 宋体;">的例å­åŒ…括:</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal" style="margin-left: 36pt; text-align: left; text-indent: -36pt;" align="left"><!--[if !supportLists]--><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US"><span>åQ?åQ?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span></span><!--[endif]--><span style="font-size: 10pt; font-family: 宋体;">éšå¼é…置文äšg加è²</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">â€?/span><span style="font-size: 10pt; font-family: 宋体;">é…置文äšg</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">“Struts-default.xml”</span><span style="font-size: 10pt; font-family: 宋体;">å’?#8220;</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">struts-plugin.xml</span><span style="font-size: 10pt; font-family: 宋体;">”æ˜¯è‡ªåŠ¨åŠ è½½è€Œä¸æ˜¯æ˜¾å¼åŠ è½½çš„ã€?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal" style="margin-left: 36pt; text-align: left; text-indent: -36pt;" align="left"><!--[if !supportLists]--><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US"><span>åQ?åQ?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span></span><!--[endif]--><span style="font-size: 10pt; font-family: 宋体;">æ’äšg中的代ç </span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">â€?/span><span style="font-size: 10pt; font-family: 宋体;">当利用æ’ä»¶ä¸­çš„ä»£ç æ—¶åQŒä‹Éç”?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">action</span><span style="font-size: 10pt; font-family: 宋体;">å称和结果字½W¦äºŒè€…çš„¾l“åˆæ¥è‡ªåЍæœç´¢ç»“果模æ¿ï¼Œæ‰€ä»¥å¯¹äº?#8220;</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">/user/add.action</span><span style="font-size: 10pt; font-family: 宋体;">”æ¥è¯´åQŒå°†ä¼šäؓ一ä¸?#8220;</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">success</span><span style="font-size: 10pt; font-family: 宋体;">”的结果返å›?#8220;</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">/user/add-success.jsp</span><span style="font-size: 10pt; font-family: 宋体;">”模æ¿åQŒè€Œäؓ一ä¸?#8220;</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">error</span><span style="font-size: 10pt; font-family: 宋体;">”的结果返å›?#8220;</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">/user/add-error.jsp</span><span style="font-size: 10pt; font-family: 宋体;">”模æ¿ã€?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal" style="margin-left: 36pt; text-align: left; text-indent: -36pt;" align="left"><!--[if !supportLists]--><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US"><span>åQ?åQ?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span></span><!--[endif]--><span style="font-size: 10pt; font-family: 宋体;">默认¾l“æžœåŠç»“果类åž?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">â€?/span><span style="font-size: 10pt; font-family: 宋体;">当对</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">action</span><span style="font-size: 10pt; font-family: 宋体;">˜q›è¡Œé…ç½®æ—Óž¼Œå½“ä‹É用默认的“</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">success</span><span style="font-size: 10pt; font-family: 宋体;">”å’?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">JSP</span><span style="font-size: 10pt; font-family: 宋体;">æ—Óž¼Œä¸å¿…指明¾l“果和类型ã€?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal" style="margin-left: 36pt; text-align: left; text-indent: -36pt;" align="left"><!--[if !supportLists]--><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US"><span>åQ?åQ?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span></span><!--[endif]--><span style="font-size: 10pt; font-family: 宋体;">¾l‘定</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">Spring</span><span style="font-size: 10pt; font-family: 宋体;">业务æœåŠ¡</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">â€?/span><span style="font-size: 10pt; font-family: 宋体;">当安装了</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">Spring</span><span style="font-size: 10pt; font-family: 宋体;">框架æ’äšgåŽï¼Œä¸å¿…为æ¯ä¸?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">action</span><span style="font-size: 10pt; font-family: 宋体;">é…置其所需的基äº?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">Spring</span><span style="font-size: 10pt; font-family: 宋体;">æä¾›çš„ä¸šåŠ¡ï¼Œå› äØ“˜q™äº›ä¸šåŠ¡ä¼šè‡ªåŠ¨ä¸Ž</span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US">action</span><span style="font-size: 10pt; font-family: 宋体;">˜q›è¡Œ¾l‘定ã€?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: 宋体;">在å‰é¢çš„章节中,我们已ç»çœ‹åˆ°äº†å‡ ä¸ªé»˜è®¤é…¾|®ï¼Œä»¥åŠå¦‚何通过é…置使用新值æ¥ä»£æ›¿é»˜è®¤å€¹{€?/span><span style="font-family: 宋体;">更多的酾|®é€‰é¡¹</span><span lang="EN-US">,</span><span style="font-family: 宋体;">ä»¥åŠæ›´å¤šçš„æƒ¯ä¾‹å°†ä¼šåœ¨æŽ¥ä¸‹æ¥çš„章节中进行探讨ã€?/span><span style="font-size: 10pt; font-family: times-roman;" lang="EN-US"><o:p></o:p></span></p><img src ="http://www.aygfsteel.com/atiger06/aggbug/132352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/atiger06/" target="_blank">leefoo</a> 2007-07-25 17:23 <a href="http://www.aygfsteel.com/atiger06/archive/2007/07/25/132352.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>struts2é…置文äšg说明(¾˜»è¯‘自startingstruts2online)http://www.aygfsteel.com/atiger06/archive/2007/06/22/125748.htmlleefooleefooFri, 22 Jun 2007 02:09:00 GMThttp://www.aygfsteel.com/atiger06/archive/2007/06/22/125748.htmlhttp://www.aygfsteel.com/atiger06/comments/125748.htmlhttp://www.aygfsteel.com/atiger06/archive/2007/06/22/125748.html#Feedback0http://www.aygfsteel.com/atiger06/comments/commentRss/125748.htmlhttp://www.aygfsteel.com/atiger06/services/trackbacks/125748.html一ã€struts.propertiesæ–‡äšg说明
       struts.propertiesé…置文äšgæä¾›äº†ä¸€¿Uæ”¹å˜æ¡†æž‰™»˜è®¤è¡Œä¸ºçš„æœºåˆ¶ã€‚一般æ¥è®²æˆ‘们没必è¦ä¿®æ”¹˜q™ä¸ªæ–‡äšgåQŒé™¤éžä½ æƒÏx‹¥æœ‰ä¸€ä¸ªæ›´åŠ å‹å¥½çš„å¼€å‘调试环境。struts.propertiesæ–‡äšg中所包å«çš„æ‰€æœ‰å±žæ€§éƒ½å¯ä»¥åœ¨web.xmlé…置文äšg中ä‹Éç”?init-param"标签˜q›è¡Œé…ç½®åQŒæˆ–者在struts.xmlæ–‡äšg中ä‹Éç”?#8220;constant”标签˜q›è¡Œé…ç½®ã€?br> å¯ä»¥è¢«ä¿®æ”¹çš„属性å…许改å˜Freemarker选项åQï¼æ”¹å˜“action-mapping”¾c…R€å†³å®šæ˜¯å¦å…许XMLé…置文äšgé‡è²åŠç¡®å®šé»˜è®¤ç”¨æˆähŽ¥å£ä¸»é¢˜ç­‰è¡ŒäØ“ã€?/p>

        一个åä¸?#8220;default.properties”的属性文件包å«åœ¨“Struts2-Core”JARæ–‡äšg中。你å¯ä»¥åœ¨ä½ ™å¹ç›®æºæ–‡ä»¶èµ\径的根目录下创å¾ä¸€ä¸ªåä¸?#8220;struts.properties”的文ä»Óž¼Œæ¥å¯¹æŸä¸ªå±žæ€§è¿›è¡Œä¿®æ”V€‚这样你ž®±å¯ä»¥å¢žåŠ ä½ æƒŒ™¦ä¿®æ”¹çš„属性。新的属性值将会覆盖默认倹{€?/p>

       在开å‘环境下åQŒä½ å¯èƒ½ä¼šè€ƒè™‘修改下é¢ä¸€äº›å±žæ€§ï¼š
 (1) struts.i18n.reload = true  åQï¼å…许国际化文仉™‡è½½ï¼›
 (2) struts.devMode = true åQï¼å…è®¸å¼€å‘æ¨¡å¼ä»¥æä¾›æ›´æ–¹ä¾¿çš„调试功能åQ?br> (3) struts.configuration.xml.reload = true åQï¼å…许XMLé…置文äšgé‡è²åŠŸèƒ½åQŒä»¥ä¾¿åœ¨æœ‰å˜åŒ–æ—¶å¯ä»¥é‡è²è€Œä¸éœ€é‡è²servlet容器中的整个web应用åQ?br> (4) struts.url.http.port = 8080 åQï¼è®„¡½®æœåС噍å…许端å£ï¼Œä»¥ä¾¿æ­£ç¡®åˆ›å¾ç”Ÿæˆçš„URLã€?/p>

二ã€struts.xmlæ–‡äšg说明
       struts.xmlæ–‡äšg包å«äº†å½“ä½ å¼€å‘actionæ—‰™œ€è¦ä¿®æ”¹çš„é…置信æ¯ã€‚䏋颿ˆ‘们æ¥çœ‹ä¸€ä¸‹è¯¥æ–‡äšg的固定结构ã€?br>       æ ÒŽ®ä½ æ‰€å¼€å‘应用的功能ä¸åŒåQŒæœ‰å¯èƒ½åœ¨ä½ çš„应用中完全用ä¸ç€“struts.xml”é…置文äšg。我们这里所说的é…ç½®èƒ½å¤Ÿè¢«åŒ…å«æ³¨é‡Šçš„æ›¿ä»£æ–ÒŽ³•ã€?#8220;web.xml”中的åˆå§‹åŒ–傿•°åŠå¯æ›¿æ¢URL映射é…ç½®˜q›è¡Œå¤„ç†ã€‚需è¦?#8220;struts.xml”æ–‡äšg˜q›è¡Œé…置的属性有全局¾l“æžœã€å¼‚常处ç†åŠè‡ªå®šä¹‰æ‹¦æˆªå™¨å †æ ˆã€?/p>

       ˜q™æ˜¯ä¸€ä¸ªXMLæ–‡äšgåQŒæ‰€ä»¥ç¬¬ä¸€ä¸ªå…ƒç´ æ˜¯XML版本和解ç ä¿¡æ¯ã€‚æŽ¥ä¸‹æ¥æ˜¯è¯¥XML的文档类型定义(DTDåQ‰ï¼Œæä¾›è¯¥æ–‡æ¡£æ‰€åŒ…å«å…ƒç´ çš„结构信æ¯ï¼Œä»¥ä¾¿è¢«XMLè§£æžå™¨å’Œ¾~–辑器ä‹É用ã€?/p>

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ¾Å½­ÏØ| ÎäÉ½ÏØ| ÄÏ¿µÊÐ| Âí±ß| Ìì¾þÏØ| Õ¢±±Çø| ÇúËÉÏØ| ÂÐÄÏÏØ| ÓÀÖÝÊÐ| °²¶àÏØ| ¹ØÁë| ÇåÔ­| ɳÌïÇø| ¿ªÔ¶ÊÐ| ¾°Ì©ÏØ| ÉÇβÊÐ| ±¦¼¦ÊÐ| ×ϽðÏØ| ¾²°²Çø| ׿×ÊÏØ| ÆæÌ¨ÏØ| ÄþÄÏÏØ| °²Í¼ÏØ| Ã÷Ë®ÏØ| ÍÍÃÅÇø| ¡²ýÏØ| ·±ÖÅÏØ| ÚöáÁÊÐ| ¸ßƽÊÐ| ÄϲýÏØ| ¹Ê³ÇÏØ| IJ¶¨ÏØ| ÑÓ±ß| ÐËÉ½ÏØ| °¢ÈÙÆì| Î÷·áÏØ| Èç¸ÞÊÐ| ÃÉÒõÏØ| »ñ¼ÎÏØ| ²ÔÉ½ÏØ| Èð½ðÊÐ|