ÃæÏò¶ÔÏóµÄÉè¼ÆÄ£Ê½ÊǾÑéµÄ×ܽᣬMVC˼ÏëÊÇÔÏÈÓÃÓÚ¹¹½¨Óû§½çÃæµÄ¡£ÕâÆªÎÄÕÂÖ÷ÒªÂÛÊöÁËÈçºÎÔÚеÄWebÓ¦ÓÃÁìÓòÖÐʹÓÃÉè¼ÆÄ£Ê½ºÍMVC¼Ü¹¹¡£ÎÄÕÂÊ×ÏȽéÉÜÁËÉè¼ÆÄ£Ê½µÄ¸ÅÄîºÍÌØµã£¬ÒÔ¼°MVC¼Ü¹¹µÄÉè¼ÆË¼Ï룬²¢·ÖÎöÁËMVC¼Ü¹¹Öаüº¬µÄ¼¸ÖÖÖ÷ÒªµÄģʽ¡£È»ºó¸ù¾ÝWebÓ¦ÓÃϵͳµÄÌØµã£¬¾ÍÈçºÎÓ¦ÓÃģʽºÍMVC¼Ü¹¹Ìá³öÁËһЩÉè¼ÆË¼Â·¡£
1. ÒýÑÔ
1.1 Éè¼ÆÄ£Ê½
ÃæÏò¶ÔÏó¼¼ÊõµÄ³öÏÖºÍÓ¦Óôó´óÌá¸ßÁËÈí¼þµÄÖØÓÃÐÔºÍÈí¼þµÄÖÊÁ¿¡£ÃæÏò¶ÔÏóµÄ±à³ÌÒ²±ÈÒÔÍùµÄ¸÷ÖÖ±à³ÌģʽҪ¼òµ¥ºÍ¸ßЧ£¬µ«ÊÇÃæÏò¶ÔÏóµÄÉè¼Æ·½·¨Òª±ÈÒÔÍùµÄÉè¼Æ·½·¨Òª¸´ÔÓºÍÓм¼Çɵö࣬һ¸öÁ¼ºÃµÄÉè¼ÆÓ¦¸Ã¼È¾ßÓжÔÎÊÌâµÄÕë¶ÔÐÔ£¬Ò²³ä·Ö¿¼Âǵ½¶Ô½«À´ÎÊÌâºÍÐèÇóÓÐ×ã¹»µÄͨÓÃÐÔ¡£ÔÚ¹ýÈ¥µÄÊ®¼¸ÄêÖУ¬ÈËÃÇÔÚ¶ÔÃæÏò¶ÔÏó¼¼ÊõµÄÑо¿Ì½Ë÷ºÍʵ¼ÊÓ¦ÓÃÖÐÕë¶ÔijЩÎÊÌâ´´ÔìÁËһЩÁ¼ºÃµÄ½â¾ö·½°¸,¼´ËùνµÄÃæÏò¶ÔÏóµÄÉè¼ÆÄ£Ê½¡£ÃæÏò¶ÔÏó¼¼ÊõµÄÄ¿µÄÖ®Ò»¾ÍÊÇÌá¸ßÈí¼þµÄÖØÓÃÐÔ£¬¶ø¶ÔÉè¼ÆÄ£Ê½¡¢Éè¼Æ·½°¸µÄÖØÓÃÔò´Ó¸üÉîµÄ²ã´ÎÉÏÌåÏÖÁËÖØÓõÄÒâÒåºÍ±¾ÖÊ¡£
ÈËÃǶÔÉè¼ÆÄ£Ê½ÓкܶඨÒ壬ÆäÖб»ÒýÓõÄ×î¶àÊÇChristopher AlexanderµÄÉè¼ÆÄ£Ê½µÄ¶¨Ò壺ÿһ¸öÉè¼ÆÄ£Ê½ÊÇÒ»¸öÈý·½µÄ¹æÔò£¬Ëü±í´ïÁËÒ»¸öÉÏÏÂÎÄ»·¾³£¨Context£©,Ò»¸öÎÊÌâºÍÒ»¸ö½â¾ö·½°¸¡£Éè¼ÆÄ£Ê½Ò»°ãÓÐÈçϼ¸¸ö»ù±¾ÒªËØ£ºÄ£Ê½Ãû³Æ£¬ÎÊÌ⣬ĿµÄ£¬½â¾ö·½°¸£¬Ð§¹û£¬ÑùÀý´úÂëºÍÏà¹ØÉè¼ÆÄ£Ê½¡£
Éè¼ÆÄ£Ê½µÄ·ÖÀàÓкü¸ÖÖ£¬¿ÉÒÔ¸ù¾ÝÆäÄ¿µÄ·ÖΪ´´½¨ÐÍ(Creational)£¬½á¹¹ÐÍ(Structural)ºÍÐÐΪÐÍ(Behavioral)ÈýÖÖ¡£´´½¨ÐÍģʽÖ÷ÒªÊÇÓÃÀ´´´½¨¶ÔÏ󣬽ṹÐÍģʽÖ÷ÒªÊÇ´¦ÀíÀà»ò¶ÔÏóµÄ×éºÏ£¬ÐÐΪÐÍģʽÔòÖ÷ÒªÓÃÀ´ÃèÊö¶ÔÀà»ò¶ÔÏóÔõÑù½»»¥ºÍÔõÑù·ÖÅäÖ°Ôð¡£Ò²¿ÉÒÔ¸ù¾Ý·¶Î§½«Éè¼ÆÄ£Ê½·ÖΪÀàģʽºÍ¶ÔÏóģʽ£¬Ààģʽ´¦ÀíÀàºÍ×ÓÀàÖ®¼äµÄ¹ØÏµ£¬ÕâЩ¹ØÏµÍ¨¹ý¼Ì³Ð½¨Á¢£¬ÔÚ±àÒëʱ¿Ì¾Í±»È·¶¨ÏÂÀ´£¬ÊÇÊôÓÚ¾²Ì¬µÄ¡£¶ÔÏóģʽÊÇ´¦Àí¶ÔÏó¼äµÄ¹ØÏµ£¬ÕâЩ¹ØÏµÔÚÔËÐÐʱ¿Ì±ä»¯£¬¸ü¾ß¶¯Ì¬ÐÔ¡£
ģʽµÄÌØµã£ºÊÇͨ¹ý¾Ñé»ñÈ¡µÄ£¬ÒÔijÖֽṹ»¯µÄ¸ñʽÊéдÏÂÀ´£¬±ÜÃâÁËÓöµ½ÏàͬµÄÎÊÌâÖØÍ·Éè¼Æ£¬´æÔÚÓÚ²»Í¬µÄ³éÏó²ã£¬ÔÚ²»¶ÏÍêÉÆµÄ£¬ÊÇ¿ÉÖØÓõÄÈ˹¤²úÎʹÉè¼ÆºÍ×îºÃµÄÁ·Ï°½»»¥£¬ÒÔ±»×éºÏÆðÀ´½â¾ö¸ü´óµÄÎÊÌâ¡£
1.2 MVC¼Ü¹¹
MVC×î³õÊÇÔÚSmalltalk-80Öб»ÓÃÀ´¹¹½¨Óû§½çÃæµÄ¡£M´ú±íÄ£ÐÍModel,
V´ú±íÊÓͼ View£¬ C´ú±í ¿ØÖÆÆ÷Controller¡£
MVCµÄÄ¿µÄÊÇÔö¼Ó´úÂëµÄÖØÓÃÂÊ£¬¼õÉÙÊý¾Ý±í´ï£¬Êý¾ÝÃèÊöºÍÓ¦ÓòÙ×÷µÄñîºÏ¶È¡£
ͬʱҲʹµÃÈí¼þ¿Éά»¤ÐÔ£¬¿ÉÐÞ¸´ÐÔ£¬¿ÉÀ©Õ¹ÐÔ£¬Áé»îÐÔÒÔ¼°·â×°ÐÔ´ó´óÌá¸ß¡£
µ¥Óû§µÄÓ¦ÓÃͨ³£ÊÇÒÔʼþÇý¶¯µÄÓû§½çÃæÎª×éÖ¯½á¹¹µÄ¡£¿ª·¢ÈËÔ±ÓÃÒ»¸ö½çÃæ¹¤¾ß»ÁËÒ»¸öÓû§½Ó¿Ú½çÃæ£¬È»ºó±àд´úÂë¸ù¾ÝÓû§ÊäÈëÈ¥Ö´ÐÐÏàÓ¦µÄ¶¯×÷£¬Ðí¶à½»»¥Ê½µÄ¿ª·¢»·¾³¹ÄÀøÕâô×ö£¬ÒòΪËüÇ¿µ÷ÏÈÓнçÃæÈ»ºóÔÙÓй¦ÄÜ¡£Ò»Ð©Èí¼þÉè¼ÆÄ£Ê½²ßÂÔÊÇÕâÑùµÄ£¬È»ºó¾³£½«¹Ì¶¨ºóµÄ´úÂëÈÚÈë×îºóµÄϵͳµ±ÖС£µ¼ÖµĽá¹û¾ÍÊÇ£¬³ÌÐò×éÖ¯Î§ÈÆÓû§½çÃæÔªËØºÍÓû§ÔÚÄÇЩ½çÃæÔªËØÉϵ͝×÷£¬Êý¾ÝµÄ´æ´¢£¬Ó¦ÓõŦÄÜÒÔ¼°ÓÃÀ´ÏÔʾµÄ´úÂë¶¼ÔÓÂÒÎÞÕµIJøÈÆÔÚÒ»Æð¡£ÔÚµ¥Óû§µÄϵͳÀï´úÂë½á¹¹ÊÇ¿ÉÒÔÕâÑùµÄ£¬ÒòΪϵͳÐèÇó²»»áÆµ·±±ä»¯¡£µ«ÊǶÔÒ»¸ö´óµÄϵͳÈç´óÐÍWebϵͳ£¬»òµç×ÓÉÌÎñϵͳÀ´Ëµ¾Í²»Ì«ÊÊÓÃÁË¡£
ͨ¹ý°ÑÊý¾Ýģʽ´Ó¸÷ÖÖ¿ÉÒÔ±»´æÈ¡ºÍ¿ØÖƵÄÊý¾ÝÖзÖÀë³öÀ´¿ÉÒÔ¸ÄÉÆ·Ö²¼Ê½ÏµÍ³µÄÉè¼Æ¡£MVCÉè¼ÆÄ£Ê½ÓÉÈý²¿·Ö×é³É¡£Ä£ÐÍÊÇÓ¦ÓöÔÏó£¬Ã»ÓÐÓû§½çÃæ¡£ÊÓͼ±íʾËüÔÚÆÁÄ»ÉϵÄÏÔʾ£¬´ú±íÁ÷ÏòÓû§µÄÊý¾Ý¡£¿ØÖÆÆ÷¶¨ÒåÓû§½çÃæ¶ÔÓû§ÊäÈëµÄÏìÓ¦·½Ê½£¬¸ºÔð°ÑÓû§µÄ¶¯×÷ת³ÉÕë¶ÔModelµÄ²Ù×÷¡£Model
ͨ¹ý¸üÐÂViewµÄÊý¾ÝÀ´·´Ó³Êý¾ÝµÄ±ä»¯¡£
ÈýÕß¹ØÏµÈçͼ£º

¶ÔMVC¹ØÏµÍ¼µÄÀí½â


ͼ2 MVCµÄ·Ö¹¤ÓëÐ×÷
2. MVCÖеÄÉè¼ÆÄ£Ê½
Ò»¸öÒÔMVCΪ¼Ü¹¹µÄϵͳ°üº¬Á˺ܶàµÄÉè¼ÆÄ£Ê½£¬µ«ÊÇÓëMVC×îΪÃÜÇÐÏà¹ØµÄÊÇÏÂÃæÈýÖÖģʽ£ºObserver,
CompositeºÍStrategy¡£
2.1 Observerģʽ
MVCͨ¹ýʹÓö¨¹º/֪ͨµÄ·½Ê½·ÖÀëÁËModelºÍView¡£ViewÒª±£Ö¤×Ô¼ºÏÔʾÄÜÕýÈ·µØ·´Ó³³öModelµÄÄÚÈݺÍ״̬¡£Ò»µ©ModelµÄÄÚÈÝ·¢Éú±ä»¯£¬±ØÐëÓÐÒ»¸ö»úÖÆÀ´Ê¹µÃModelÄܹ»Í¨ÖªÏà¹ØµÄView£¬Ê¹µÃÏà¹ØµÄView¿ÉÒÔÔÚÊʵ±µÄʱ»úË¢ÐÂÊý¾Ý¡£Õâ¸öÉè¼Æ»¹¿ÉÒÔ½â¾ö¸üÒ»°ãµÄÎÊÌ⣬½«¶ÔÏó·ÖÀ룬ʹµÃÒ»¸ö¶ÔÏóµÄ¸Ä±äÄܹ»Ó°Ïìµ½ÁíһЩ¶ÔÏ󣬶øÕâ¸ö¶ÔÏó²¢²»ÖªµÀÄÇЩ±»Ó°ÏìµÄ¶ÔÏóµÄϸ½Ú¡£Õâ¾ÍÊDZ»ÃèÊöΪObserverµÄÉè¼ÆÄ£Ê½¡£
ģʽÀàÐÍ£ºObserverģʽÊǶÔÏóÐÍģʽ£¬Í¬Ê±ËüÒ²ÊÇÐÐΪÐÍģʽ¡£
ģʽĿµÄ£º¶¨Òå¶ÔÏó¼äµÄÒ»¶Ô¶àµÄÒÀÀµ¹ØÏµ£¬µ±Ò»¸ö¶ÔÏóµÄÖµ»ò״̬·¢Éú¸Ä±äʱ£¬ËùÓÐÓëËüÓÐÒÀÀµ¹ØÏµµÄ¶ÔÏ󶼵õ½Í¨Öª²¢×Ô¶¯¸üС£Ä³Ò»Êý¾Ý¿ÉÄÜÓжàÖÖÏÔʾ·½Ê½£¬²¢ÇÒ¿ÉÄÜͬʱÒÔ²»Í¬µÄ·½Ê½ÏÔʾ£¨Èçͼ2£©¡£µ±Í¨¹ýijһÖÖ·½Ê½¸Ä±äÁËÊý¾Ý£¬ÄÇôÆäËûµÄÏÔʾ¶¼Ó¦¸ÃÄÜÁ¢¼´ÖªµÀÊý¾ÝµÄ¸Ä±äºÍ×öÏàÓ¦µÄµ÷Õû¡£
ģʽ½á¹¹£º

ͼ 3. ObserverģʽµÄ½á¹¹Í¼
Ч¹û£º
1. ³éÏóñîºÏ¡£Ä¿±ê¶ÔÏóÖ»ÖªµÀËüÓÐһЩ¹Û²ìÕߣ¬Ã¿¸ö¹Û²ìÕß¶¼·ûºÏ³éÏóµÄObserverÀàµÄ¼òµ¥½Ó¿Ú£¬²¢²»ÖªµÀËüÃǾßÌåÊôÓÚÄĸöÀà¡£ÕâÑùʹµÃÄ¿±êºÍ¹Û²ìÕßÖ®¼äµÄñîºÏ×îСÇÒ³éÏó¡£
2. Ö§³Ö¹ã²¥Í¨ÐÅ¡£Ä¿±ê·¢ËÍ֪ͨ²»ÓÃÖ¸¶¨¹Û²ìÕߣ¬ÈçºÎ´¦Àí֪ͨÓɹ۲ìÕß¾ö¶¨¡£
3. ¿ÉÄܵÄÒâÍâ¸üС£Òª´¦ÀíºÃ¸üÐÂÂß¼£¬±ÜÃâ´íÎó¸üС£
2.2 Compositeģʽ
MVCµÄÒ»¸öÖØÒªÌØÕ÷¾ÍÊÇView¿ÉÒÔǶÌס£Ç¶Ì×µÄ×éºÏÊÓͼ¿ÉÓÃÓÚÈκÎÊÓͼ¿ÉÓõĵط½£¬¶øÇÒ¿ÉÒÔ¹ÜÀíǶÌ×ÊÓͼ¡£ÕâÖÖ˼Ïë·´Ó³³ö½«×éºÏµÄÊÓͼÓëÆä×é¼þƽµÈ¶Ô´ýµÄÉè¼Æ¡£ÕâÖÖÉè¼ÆË¼ÏëÔÚÃæÏò¶ÔÏóÁìÓòÄÚ±»ÃèÊö³ÉΪCompositeµÄÉè¼ÆÄ£Ê½¡£
ģʽÀàÐÍ£ºCompositeģʽÊǶÔÏóÐÍģʽ£¬Í¬Ê±ËüÒ²ÊǽṹÐÍģʽ¡£
ģʽĿµÄ£º½«¶ÔÏó×éºÏ³ÉÊ÷ÐνṹÒÔ±íʾ"²¿·Ö-ÕûÌå"²ã´Î½á¹¹¡£Compositeʹ×éºÏ¶ÔÏóµÄʹÓú͵¥¸ö¶ÔÏóµÄʹÓþßÓÐÒ»ÖÂÐÔ¡£
ģʽ½á¹¹£º

ͼ4. CompositeģʽµÄ½á¹¹Í¼
Ч¹û£º
1. ¶¨ÒåÁ˰üº¬¼òµ¥¶ÔÏóºÍ×éºÏ¶ÔÏóµÄÀà²ã´Î½á¹¹¡£¼òµ¥¶ÔÏó¿ÉÒÔ±»×éºÏµ½¸´ÔÓ¶ÔÏóÖУ¬¶ø×éºÏµÄ¶ÔÏó¿ÉÒÔÔÙ±»×éºÏ¡£ÕâÑù¿Í»§¶Ë´úÂëÖÐÓõ½¼òµ¥¶ÔÏóµÄµØ·½¶¼¿ÉÒÔʹÓÃ×éºÏ¶ÔÏó¡£
2. ¼ò»¯¿Í»§¶Ë´úÂë¡£¿Í»§¶Ë²»ÓÃÖªµÀij¶ÔÏóÊǼòµ¥¶ÔÏó»¹ÊÇ×éºÏ¶ÔÏ󣬿ÉÒÔÒÔÒ»Öµķ½Ê½Ê¹ÓÃÕâЩ¶ÔÏó¡£
3. ¸üÈÝÒ×Ôö¼ÓÐÂÀàÐ͵Ä×é¼þ¡£ÐµÄ×é¼þ¿ÉÒÔ·½±ãµØ¼ÓÈëÒÑÓÐ×éºÏ¶ÔÏóÖв»Óøıä¿Í»§¶Ë´úÂë¡£
2.3 Strategyģʽ
MVCµÄÁíÒ»ÖØÒªÌØÕ÷ÊÇ¿ÉÒÔÔÚ²»¸Ä±äViewµÄÇé¿öϸıäView¶ÔÓû§ÊäÈëµÄÏìÓ¦·½Ê½¡£Õâ¶ÔÒ»¸ö¾³£ÐèÒª±ä¸üÏìÓ¦Âß¼µÄϵͳÀ´ËµÊǷdz£ÖØÒªµÄ¡£MVC°ÑÏìÓ¦Âß¼·â×°ÔÚControllerÖС£ÓÐÒ»¸öControllerµÄÀà²ã´Î½á¹¹£¬¿ÉÒÔ·½±ãµØ¶ÔÔÓÐController×öÊʵ±¸Ä±ä£¬´´½¨ÐµÄController¡£ViewʹÓÃController×ÓÀàµÄʵÀýÀ´ÊµÏÖÒ»¸öÌØ¶¨µÄÏìÓ¦²ßÂÔ¡£ÒªÊµÏÖ²»Í¬µÄÏìÓ¦²ßÂÔ£¬Ö»ÒªÓò»Í¬ÖÖÀàµÄControllerʵÀýÌæ»»¼´¿É¡£»¹¿ÉÒÔÔÚÔËÐÐʱ¿Ìͨ¹ý¸Ä±äViewµÄControllerÀ´¸Ä±äView¶ÔÓû§ÊäÈëµÄÏìÓ¦²ßÂÔ¡£ÕâÖÖView-ControllerµÄ¹ØÏµÊDZ»ÃèÊöΪStrategyµÄÉè¼ÆÄ£Ê½µÄÒ»¸öÀý×Ó¡£
ģʽÀàÐÍ£ºStrategyģʽÊǶÔÏóÐÍģʽ£¬Í¬Ê±ËüÒ²ÊÇÐÐΪÐÍģʽ¡£
ģʽĿµÄ£º¶¨ÒåһϵÁеÄËã·¨£¬²¢ÇÒ°ÑËüÃÇ·â×°ÆðÀ´£¬Ê¹ËüÃÇ¿ÉÒÔ»¥ÏàÌæ»»£¬Ê¹µÃËã·¨¿ÉÒÔ¶ÀÁ¢ÓÚʹÓÃËüµÄ¿Í»§¶Ë¶ø±ä»¯¡£
ģʽ½á¹¹£º

ͼ5. StrategyģʽµÄ½á¹¹Í¼
Ч¹û£º
1. StrategyÀà²ã´ÎΪContext¶¨ÒåÁË¿ÉÖØÓõÄÏà¹ØËã·¨»òÐÐΪ¡£
2. Ìæ´ú¼Ì³ÐµÄ·½·¨¡£Èç¹ûÖ±½Ó¼Ì³ÐContext£¬¸øÒÔ²»Í¬µÄÐÐΪ£¬»á½«ÐÐΪ¼Óµ½ContextÖУ¬´Ó¶ø½«Ëã·¨µÄʵÏÖÓëContext»ìºÏÆðÀ´£¬Ê¹ContextÄÑÒÔÀí½â£¬Î¬»¤ºÍÀ©Õ¹£¬¶øÇÒ²»Äܶ¯Ì¬µØ¸Ä±äËã·¨¡£½«Ëã·¨·â×°ÔÚ¶ÀÁ¢µÄStrategyÀ࣬¿ÉÒÔʹµÃËã·¨¶ÀÁ¢ÓÚContext¸Ä±ä£¬ÈÝÒ×Çл»À©Õ¹¡£
3. ¿ÉÒÔÌṩÏàͬÐÐΪµÄ²»Í¬ÊµÏÖ¡£
4. ¿Í»§¶Ë±ØÐëÁ˽âStrategyÖ®¼äÓкβ»Í¬¡£
5. ContextºÍStrategyÖ®¼äµÄͨÐÅ¿ªÏú¡£
6. Ôö¼ÓÁ˶ÔÏóµÄÊýÄ¿¡£
3. MVCÔÚ WebϵͳÖеÄÓ¦ÓÃ
ÏÖÔÚµÄһЩ»ùÓÚWebµÄ·Ö²¼Ê½ÏµÍ³ÈçB2Bµç×ÓÉÌÎñϵͳ£¬¾ÍÊʺϲÉÓÃMVC¼Ü¹¹¡£
ͨ¹ý·ÖÎö£¬´Ó¸ß²ã´ÎµÄ½Ç¶È¿ÉÒÔ½«Ò»¸öÓ¦ÓõĶÔÏó·ÖΪÈýÀà¡£Ò»Àà¾ÍÊǸºÔðÏÔʾµÄ¶ÔÏó£¬Ò»Àà¶ÔÏó°üº¬ÉÌÒµ¹æÔòºÍÊý¾Ý£¬»¹ÓÐÒ»Àà¾ÍÊǽÓÊÕÇëÇ󣬿ØÖÆÉÌÒµ¶ÔÏóÈ¥Íê³ÉÇëÇó¡£ÕâЩӦÓõÄÏÔʾÊǾ³£ÐèÒª±ä»»µÄ£¬ÈçÍøÒ³µÄ·ç¸ñ£¬É«µ÷£¬»¹ÓÐÐèÒªÏÔʾµÄÄÚÈÝ£¬ÄÚÈݵÄÏÔʾ·½Ê½µÈ¡£¶øÉÌÒµ¹æÔòºÍÊý¾ÝÊÇÏà¶ÔÒªÎȶ¨µÄ¡£Òò´Ë£¬±íʾÏÔʾµÄ¶ÔÏóView¾³£ÐèÒª±ä»¯µÄ£¬±íʾÉÌÒµ¹æÔòºÍÊý¾ÝµÄ¶ÔÏóModelÒªÏà¶ÔÎȶ¨£¬¶ø±íʾ¿ØÖƵÄControllerÔò×îÎȶ¨¡£
ͨ³£µ±ÏµÍ³·¢²¼ºó£¬View¶ÔÏóÊÇÓÉÃÀ¹¤£¬HTML/JSPÉè¼ÆÈËÔ±»òÕßϵͳ¹ÜÀíÔ±À´¸ºÔð¹ÜÀíµÄ¡£Controller¶ÔÏóÓÉÓ¦Óÿª·¢ÈËÔ±¿ª·¢ÊµÊ©£¬ÉÌÒµ¹æÔò¶ÔÏóºÍÉÌÒµÊý¾Ý¶ÔÏóÔòÓÉ¿ª·¢ÈËÔ±£¬ÁìÓòר¼ÒºÍÊý¾Ý¿â¹ÜÀíÔ±¹²Í¬Íê³ÉµÄ¡£ÏÔʾÂß¼ÔÚWeb²ã»ò¿Í»§¶Ë¿ØÖÆ£¬¿ÉÒÔÊÇServlet
»òJSP£¬¶¯Ì¬µØÉú³ÉHtml¡£Ò»°ãÀ´Ëµ²ÉÓÃJSPÒª±È²ÉÓÃServletÒªºÃ¡£JSP¸üºÃµØ½«´úÂëÓëHtml²¿·Ö·Ö¿ª£¬ÓÐÀûÓÚÒ³ÃæÉè¼ÆÈËÔ±ºÍ´úÂ뿪·¢ÈËÔ±µÄ·ÖÀ룬Ìá¸ßЧÂÊ¡£Í¬Ê±JSP¿ÉÒÔÍê³ÉËùÓÐServletÍê³ÉµÄ¹¦ÄÜ£¬Êµ¼ÊÉÏJSP×îÖÕҲת»»³ÉÒ»¸öServlet¡£Óë¿ØÖÆÓйصĶÔÏó´æÔÚÓÚϵͳµÄÿһ¸ö²ã´Î£¬Ðµ÷¿ç²ã¶¯×÷¡£°üº¬ÉÌÒµ¹æÔòºÍÊý¾ÝµÄ¶ÔÏó´æÔÚÓÚEJB²ã£¨ÒÔEJBΪÖÐÐĵÄģʽ£©»òWeb²ã£¨ÒÔWebΪÖÐÐĵÄģʽ£©¡£
3.1 ViewÔÚWebϵͳÖеÄÓ¦ÓÃ
View´ú±íϵͳµÄÏÔʾ£¬ËüÍêÈ«´æÔÚÓÚWeb²ã¡£Ò»°ãÓÉJSP, Java
BeanºÍCustom Tag×é³É¡£JSP¿ÉÒÔ¶¯Ì¬Éú³ÉÍøÒ³ÄÚÈÝ£¬Custom Tag ¸ü·½±ãÁËʹÓÃJava
Bean£¬¶øÇÒËü¿ÉÒÔ·â×°ÏÔʾÂß¼£¬¸üÓÐÀûÓÚÓÚÄ£¿é»¯ºÍÖØÓá£Ò»Ð©Éè¼ÆÁ¼ºÃµÄCustom Tag¿ÉÒÔÔÚ¶à¸öJSPÉõÖÁ¿ÉÒÔÔÚ²»Í¬µÄϵͳÀïÖØ¸´Ê¹Óá£Java
BeanÓÃÀ´¿ØÖÆJSPºÍModel¶ÔÏó¡£JSPͨ¹ýJava Bean À´¶ÁÈ¡Model¶ÔÏóÖеÄÊý¾Ý£¬ModelºÍController¶ÔÏóÔò¸ºÔð¶ÔJava
BeanµÄÊý¾Ý¸üС£Ò»°ãÀ´Ëµ£¬¿ÉÒÔÏÈÒªÉè¼Æ³öËùÓпÉÄܳöÏֵįÁÄ»£¬¼´Óû§Ê¹ÓÃϵͳʱ¿ÉÒÔ¿´µ½µÄËùÓÐÄÚÈÝ¡£È»ºó¸ù¾ÝÕâЩÄÚÈÝ£¬ÕÒ³ö¹«¹²²¿·Ö£¬¾²Ì¬²¿·ÖºÍ¶¯Ì¬±ä»¯²¿·Ö¡£¿ÉÒÔ¿¼ÂÇʹÓÃÄ£°å·½·¨£¬°Ñ¹«ÓõÄÄÚÈݵ¥¶ÀÉú³ÉJSP£¬ÐèÒª±ä»¯µÄÒ²¸÷×ÔÉú³ÉHtml»òJSP,
ÓÉÒ»¸öÄ£°åJSP, °ÑÕâЩ²»Í¬²¿·Ö¶¯Ì¬µØÒýÈ루include·½·¨£©¡£»¹ÓÐÒ»¸öÒª¿¼ÂǵÄÎÊÌâ¾ÍÊÇÆÁÄ»µÄÑ¡ÔñÎÊÌ⣬µ±´¦ÀíÍêÓû§ÇëÇó£¬Ä£°å±»×Ô¶¯µ÷ÓÃÀ´ÏÔʾ£¬Õâ¸öÏÔʾһ¶¨ÒªÖªµÀÓû§¹ØÐĵįÁÄ»ÊÇÓÐÄÄЩ²¿·Ö×é³É¡£ËùÒÔ¿ÉÒÔ¿¼ÂǰÑËùÓÐÆÁÄ»µÄ¶¨Òå·ÅÔÚÒ»¸ö¼¯ÖеÄÎļþÀÈçÒ»¸öjavaÎļþ»òÎı¾Îļþ¡£ÓÉÓÚ¿¼Âǵ½ÆÁÄ»¶¨ÒåÎļþ½«À´µÄ±ä¸ü¿ÉÄÜÐÔ£¬×îºÃʹÓÃÎı¾ÎļþÈçÒ»¸öXMLÎļþ£¬ÕâÑù½«À´¸ü¸Ä²»ÓÃÖØÐ±àÒë¡£¿ÉÒÔ¸ù¾ÝÓû§ÊäÈëµÄURLºÍ²ÎÊý¿ÉÒÔÓ³É䵽ijһ¸ö½á¹ûÆÁÄ»£¬µ±È»ÓпÉÄÜ»¹Òª¸ù¾Ý¶¯×÷µÄÖ´Ðнá¹ûÑ¡Ôñ²»Í¬µÄ½á¹ûÆÁÄ»ÄÚÈÝ¡£ËùÒÔÐèÒªÒ»¸öÇëÇóÓë×ÊÔ´µÄÆ¥ÅäÎļþ£¨XML£©£¬Èç¹ûÒ»¸öURLÇëÇóÓм¸ÖÖ²»Í¬½á¹û£¬ÔòÒªÔÚ¸ÃÎļþÖÐÖ¸Ã÷ÊÇ·ñÐèÒªÁ÷¿ØÖÆ£¨Ò»ÖÖcontroller¶ÔÏó£©ÒÔ¼°²»Í¬Á÷ÏòµÄ¶ÔÓ¦ÆÁÄ»¡£
3.2 ModelÔÚWebϵͳÖеÄÓ¦ÓÃ
Model¶ÔÏó´ú±íÁËÉÌÒµ¹æÔòºÍÉÌÒµÊý¾Ý£¬´æÔÚÓÚEJB²ãºÍWeb²ã¡£ÔÚJ2EEµÄ¹æ·¶ÖУ¬ÏµÍ³ÓÐЩÊý¾ÝÐèÒª´æ´¢ÓÚÊý¾Ý¿âÖУ¬ÈçÓû§µÄÕ˺ÅÐÅÏ¢£¨account
model£©£¬¹«Ë¾µÄÊý¾Ý(company model)µÈ£¬Ò²ÓÐһЩ²»ÐèÒª¼Ç¼ÔÚÊý¾Ý¿âÀïµÄ£¬ÈçijÓû§ä¯ÀÀµÄµ±Ç°²úƷĿ¼(catalog
model)£¬ËûµÄ¹ºÎïÄÚÈÝ(shopping cart model)µÈ¡£ÕâЩmodelÊý¾Ý´æÔÚÓÚÄÄÒ»²ãÒª¸ù¾ÝËüÃǵÄÉúÃüÖÜÆÚºÍ·¶Î§À´¾ö¶¨¡£ÔÚWeb²ãÓÐHttpSessionºÍServletContext¼°Java
Bean¶ÔÏóÀ´´æ´¢Êý¾Ý£¬ÔÚEJB²ãÔòÓÐEJBÀ´´æ´¢Êý¾ÝºÍÂß¼¡£Web²ãµÄJava BeanµÄmodel¶ÔÏó´æ´¢ÁËEJB²ãmodel¶ÔÏóµÄÊý¾ÝµÄ¿½±´¡£ÒòΪEJB²ãÓкܶ಻ͬµÄmodel¶ÔÏó£¬ËùÒÔWeb²ã¿ÉÒÔͨ¹ýÒ»¸öModelManagerÀ´¿ØÖÆEJB²ãµÄ¸÷model¶ÔÏó£¬ÔÚModelMangerÖпÉÒÔ·âװʹÓúǫ́model¶ÔÏóµÄ·½·¨¡£
ÔÚEJB²ã°ÑËùÓеÄÊý¾ÝºÍ¹æÔò¶¼Ä£Ê½»¯ÎªEJBÒ²ÊDz»Ç¡µ±µÄ¡£Èç¿ÉÒÔ°Ñ´æÈ¡Êý¾Ý¿âµÄ¶ÔÏóģʽ»¯ÎªDAO¶ÔÏó¡£DAOÖпÉÒÔ·â×°Óë¾ßÌåÊý¾Ý¿âµÄ½»»¥Ï¸½Ú£¬Èç¿ÉÒÔ¶Áд²»Í¬µÄ±í£¬¶à¸öÊý¾Ý¿â£¬ÉõÖÁ¶àÖÖÊý¾Ý¿â¡£È綨µ¥µÄmodel¶ÔÏó¿ÉÒÔÊÇÒ»¸öOrderDAO,
Ëü¿ÉÄÜҪͬʱ´¦ÀíOrder±í£¬OrderStatus±íºÍOrderItemLines±í¡£
»¹ÓпÉÒÔ¿¼ÂÇʹÓÃValue¶ÔÏó¡£Ò»¸öValue ¶ÔÏó¿ÉÒÔ·â×°Ô¶³Ì¶ÔÏó£¬ÒòΪÿһ¸ö¶ÁÔ¶³Ì¶ÔÏóµÄÊôÐÔ¶¼¿ÉÄÜÊÇÒ»¸öÔ¶³Ì¹ý³Ìµ÷Ó㬶¼»áºÄ·ÑÍøÂç×ÊÔ´¡£¿ÉÒÔÔÚEJBµÄÔ¶³Ì¶ÔÏóÖÐʹÓÃValue¶ÔÏó.
ÔÚÔ¶³Ì¶ÔÏóÖÐÒ»´ÎÐԵõ½Value¶ÔÏóÀ´µÃµ½ËùÓÐÊôÐÔµÄÖµ¡£
3.3 ControllerÔÚWebϵͳÖеÄÓ¦ÓÃ
Controller¶ÔÏóе÷ModelÓëView£¬°ÑÓû§ÇëÇó·Òë³Éϵͳʶ±ðµÄʼþ¡£ÔÚWeb²ã£¬Ò»°ãÓÐÒ»¸öMainServlet(»òMain.jsp)£¬½ÓÊÕËùÓÐÇëÇó£¬Ëü¿ÉÒÔµ÷ÓÃÆÁÄ»Á÷¹ÜÀíÆ÷£¨ScreenFlowManger£©¾ö¶¨ÏÂÒ»¸öÆÁÄ»¡£Ò»°ã»¹ÓÐÒ»¸öÇëÇó´¦ÀíÆ÷RequestProcessor£¬°üº¬ËùÓÐÇëÇó¶¼ÐèÒª×öµÄ´¦ÀíÂß¼£¬Èç°ÑÇëÇó·Òë³Éϵͳʼþ£¨RequestToEvent£©¡£ÇëÇó´¦ÀíÆ÷ͨ³£»¹°üº¬Ò»¸ö´úÀí¶ÔÏóClientControlWebImpl£¬ËüÊÇEJB²ãµÄÂß¼´¦ÀíµÄÔÚWeb²ãµÄ´úÀí¡£ÔÚEJB²ã£¬ÓÐÒ»¸öClientControllerÌṩWeb
²ã¶ÔEJB²ãµÄÖ»¶Á·ÃÎÊ¡£»¹ÓÐÒ»¸öStateMachineÓÃÀ´½¨Á¢ºÍɾ³ýejb£¬´¦ÀíWeb²ãËÍÀ´µÄʼþ¡£
Controller»¹ÓÐÒ»¸öÖØÒªµÄ¹¦ÄܾÍÊÇͬ²½ViewºÍModelµÄÊý¾Ý¡£ÔÚModelMangerÖаüº¬Ò»¸öModelUpdateManger£¬Ëü°Ñϵͳʼþת»»ÎªÒ»¸öModelµÄ¼¯ºÏ£¬¼´ËùÓÐÐèҪͬ²½µÄModel£¬È»ºó֪ͨListenersÈ¥×öͬ²½²Ù×÷¡£ |