Struts Óû§Ö¸ÄÏ

$Id: users_guide.html,v 1.10 2000/08/10 23:45:27 craigmcc Exp $

×÷ÕߣºJakarta Team  http://jakarta.apache.org
ÒëÕߣºÀîï¿£¨dlee£©  unruly_wind@163.net

1. ½éÉÜ

1.1 Model-View-Controller (MVC) Éè¼ÆÄ£Ê½

FIXME - ÐèÒªÒ»¸ö¶Ô¸Ãģʽһ°ãÐԵĽéÉÜ¡££¨Òë×¢£º¿ÉÒԲο¼»úе¹¤Òµ³ö°æÉçµÄ¡¶Éè¼ÆÄ£Ê½¡·¡££©

1.2 ½«MVC¸ÅÄîÓ³Éäµ½Struts×é¼þÖÐ

Struts µÄÌåϵ½á¹¹ÊµÏÖÁËModel-View-ControllerÉè¼ÆÄ£Ê½µÄ¸ÅÄËü½«ÕâЩ¸ÅÄîÓ³Éäµ½webÓ¦ÓóÌÐòµÄ×é¼þºÍ¸ÅÄîÖУ¬ÈçÏÂͼËùʾ£º


ÕâÒ»Ìåϵ½á¹¹ÖÐÿ¸öÖ÷ÒªµÄ×é¼þ¶¼½«ÔÚÏÂÃæ×öÏêϸµÄÌÖÂÛ¡£

1.3 Model: ϵͳ״̬ºÍÉÌÒµÂß¼­JavaBeans

»ùÓÚMVCµÄϵͳÖÐµÄ Model ²¿·Ö¿ÉÒÔϸ·ÖΪÁ½¸ö¸ÅÄî -- ϵͳµÄÄÚ²¿×´Ì¬, Äܹ»¸Ä±ä״̬µÄÐÐΪ¡£ÓÃÓï·¨ÊõÓïÀ´Ëµ£¬ÎÒÃÇ¿ÉÒÔ°Ñ״̬ÐÅÏ¢µ±×÷Ãû´Ê£¨ÊÂÎ£¬°ÑÐÐΪµ±×÷¶¯´Ê£¨ÊÂÎï״̬µÄ¸Ä±ä£©¡£

ͨ³£ËµÀ´£¬ÄãµÄÓ¦ÓóÌÐò½«ÏµÍ³ÄÚ²¿µÄ״̬±íʾΪһ×éÒ»¸ö»ò¶à¸öµÄJavaBeans£¬Ê¹ÓÃÊôÐÔ£¨properties£©À´±íʾ״̬µÄϸ½Ú¡£ÒÀÀµÓÚÄãµÄÓ¦ÓóÌÐòµÄ¸´ÔÓ¶È£¬ÕâЩbeans¿ÉÒÔÊÇ×Ô°üº¬µÄ£¨ÒÔijÖÖ·½Ê½ÖªµÀÔõÑùÓÀ¾ÃµØ±£´æËüÃǵÄ״̬ÐÅÏ¢£©£¬»òÕß¿ÉÒÔÊÇÕýÃæµÄ£¨facades£©£¬ÖªµÀµ±±»ÇëÇóʱÔõÑù´ÓÍⲿÊý¾ÝÔ´£¨ÀýÈçÊý¾Ý¿â£©ÖÐÈ¡µÃÐÅÏ¢¡£Entity EJBsͨ³£Ò²ÓÃÀ´±íʾÄÚ²¿×´Ì¬¡£

´óÐÍÓ¦ÓóÌÐò¾­³£½«ÏµÍ³¿ÉÄܵÄÉÌÒµÂß¼­ÐÐΪ±íʾΪ¿ÉÒÔ±»Î¬»¤×´Ì¬ÐÅÏ¢µÄbeansµ÷Óõķ½·¨¡£¾Ù¸öÀý×Ó£¬ÄãÓÐÒ»¸öΪÿ¸öµ±Ç°Óû§±£´æÔÚsessionÖеĹºÎï³µbean£¬ÀïÃæÊDZíʾµ±Ç°Óû§¾ö¶¨¹ºÂòÎïÆ·µÄÊôÐÔ¡£Õâ¸öbeanÓÐÒ»¸öcheckOut()·½·¨ÓÃÀ´ÑéÖ¤Óû§µÄÐÅÓÿ¨£¬½«¶¨µ¥·¢¸ø¿â·¿ÒÔÑ¡Ôñ»õÆ·ºÍ³ö»õ¡£±ðµÄϵͳ·Ö±ðµØ±íʾͬÑùµÄÐÐΪ£¬»òÐíʹÓÃSession EJBs¡£

ÔÚһЩСÐÍÓ¦ÓóÌÐòÖУ¬Í¬ÑùµÄÐÐΪÓÖ¿ÉÄÜǶÈëµ½×÷ΪControllerÒ»²¿·ÖµÄ Action ÀàÖС£ÕâÔÚÂß¼­·Ç³£¼òµ¥»òÕß²¢²»ÏëÒªÔÚÆäËü»·¾³ÖÐÖØÓÃÕâЩÉÌÒµÂß¼­Ê±ÊÇÇ¡µ±µÄ¡£Struts¿ò¼ÜÖ§³ÖËùÓÐÕâЩ·½·¨£¬µ«½¨Ò齫ÉÌÒµÂß¼­£¨¡°×öʲô¡±£©ºÍ Action Àࣨ¡°¾ö¶¨×öʲô¡±£©·ÖÀ뿪¡£

1.4 View: JSPÒ³ÃæºÍ±íʾ×é¼þ

»ùÓÚStrutsµÄÓ¦ÓóÌÐòÖÐµÄ View ²¿·Öͨ³£Ê¹ÓÃJSP¼¼ÊõÀ´¹¹½¨¡£JSPÒ³Ãæ°üº¬³ÆÎª¡°Ä£°æÎı¾¡±µÄ¾²Ì¬HTML£¨»òXML£©Îı¾£¬¼ÓÉϲåÈëµÄ»ùÓÚ¶ÔÌØÊâÐÐΪ±ê¼Ç½âÊ͵Ķ¯Ì¬ÄÚÈÝ¡£JSP»·¾³°üÀ¨ÁËÆäÓÃ;ÓÉJSP¹æ·¶À´ÃèÊöµÄÒ»Ì×±ê×¼µÄÐÐΪ±ê¼Ç£¬ÀýÈç <jsp:useBean> ¡£ÁíÍ⣬»¹ÓÐÒ»¸öÓÃÀ´¶¨ÒåÄã×Ô¼º±ê¼ÇµÄ±ê×¼»úÖÆ£¬ÕâЩ×Ô¶¨ÒåµÄ±ê¼Ç×éÖ¯ÔÚ¡°¶¨ÖƱê¼Ç¿â¡±ÖС£

Struts°üÀ¨ÁËÒ»¸ö¹ãÀ«µÄ±ãÓÚ´´½¨Óû§½çÃæ£¬²¢ÇÒ³ä·Ö¹ú¼Ê»¯µÄ¶¨ÖƱê¼Ç¿â£¬Óë×÷Ϊϵͳ Model ²¿·ÖÒ»²¿·ÖµÄActionForm beansÃÀÃîµØÏ໥ÅäºÏ¡£ÕâЩ±ê¼ÇµÄʹÓý«ÔÚºóÃæ×öÏêϸÌÖÂÛ¡£

³ýÁËJSPÒ³ÃæºÍÆä°üº¬µÄÐÐΪ¼°¶¨ÖƱê¼Ç£¬ÉÌÒµ¶ÔÏó¾­³£ÐèÒªÄܹ»»ùÓÚËüÃÇÔÚ±»ÇëÇóʱµÄµ±Ç°×´Ì¬½«×Ô¼º´¦Àí³ÉHTML£¨»òXML£©¡£´ÓÕâЩ¶ÔÏó´¦Àí¹ýµÄÊä³ö¿ÉÒÔºÜÈÝÒ×µØÊ¹Óà <jsp:include> ±ê×¼ÐÐΪ±ê¼Ç°üÀ¨ÔÚ½á¹ûµÄJSPÒ³ÃæÖС£

1.5 Controller: ActionServletºÍActionMapping

Ó¦ÓóÌÐòµÄ Controller ²¿·Ö¼¯ÖÐÓÚ´Ó¿Í»§¶Ë½ÓÊÕÇëÇ󣨵äÐÍÇé¿öÏÂÊÇÒ»¸öÔËÐÐä¯ÀÀÆ÷µÄÓû§£©£¬¾ö¶¨Ö´ÐÐʲôÉÌÒµÂß¼­¹¦ÄÜ£¬È»ºó½«²úÉúÏÂÒ»²½Óû§½çÃæµÄÔðÈÎίÅɸøÒ»¸öÊʵ±µÄView×é¼þ¡£ÔÚStrutsÖУ¬controllerµÄ»ù±¾×é¼þÊÇÒ»¸ö ActionServlet ÀàµÄservlet¡£Õâ¸öservletͨ¹ý¶¨ÒåÒ»×éÓ³É䣨ÓÉJava½Ó¿Ú ActionMapping ÃèÊö£©À´ÅäÖá£Ã¿¸öÓ³É䶨ÒåÒ»¸öÓëËùÇëÇóµÄURIÏàÆ¥ÅäµÄ·¾¶ºÍÒ»¸ö Action Àࣨһ¸öʵÏÖ Action ½Ó¿ÚµÄÀࣩÍêÕûµÄÀàÃû£¬Õâ¸öÀฺÔðÖ´ÐÐÔ¤ÆÚµÄÉÌÒµÂß¼­£¬È»ºó½«¿ØÖÆ·ÖÅɸøÊʵ±µÄView×é¼þÀ´´´½¨ÏìÓ¦¡£

StrutsÒ²Ö§³ÖʹÓðüº¬ÓÐÔËÐпò¼ÜËù±ØÐèµÄ±ê×¼ÊôÐÔÖ®ÍâµÄ¸½¼ÓÊôÐ﵀ ActionMapping ÀàµÄÄÜÁ¦¡£ÕâÔÊÐíÄã±£´æÌض¨ÓÚÄãµÄÓ¦ÓóÌÐòµÄ¸½¼ÓÐÅÏ¢£¬Í¬Ê±ÈÔ¿ÉÀûÓÿò¼ÜÆäÓàµÄÌØÐÔ¡£ÁíÍ⣬StrutsÔÊÐíÄ㶨Òå¿ØÖÆ½«Öض¨Ïòµ½µÄÂß¼­Ãû£¬ÕâÑùÒ»¸öÐÐΪ·½·¨¿ÉÒÔÇëÇó¡°Ö÷²Ëµ¥¡±Ò³Ã棨¾ÙÀý£©£¬¶ø²»ÐèÒªÖªµÀÏàÓ¦µÄJSPÒ³ÃæµÄʵ¼ÊÃû×ÖÊÇʲô¡£Õâ¸ö¹¦Äܼ«´óµØ°ïÖúÄã·ÖÀë¿ØÖÆÂß¼­£¨ÏÂÒ»²½×öʲô£©ºÍÏÔʾÂß¼­£¨ÏàÓ¦µÄÒ³ÃæµÄÃû³ÆÊÇʲô£©¡£

2. ´´½¨Model×é¼þ

2.1 ¸ÅÊö

ÄãÓõ½µÄÓ¦ÓóÌÐòµÄÐèÇóÎĵµºÜ¿ÉÄܼ¯ÖÐÓÚ´´½¨Óû§½çÃæ¡£È»¶øÄãÓ¦¸Ã±£Ö¤Ã¿¸öÌá½»µÄÇëÇóËùÐèÒªµÄ´¦ÀíÒ²Òª±»Çå³þµÄ¶¨Ò塣ͨ³£ËµÀ´£¬Model ×é¼þµÄ¿ª·¢Õß¼¯ÖÐÓÚ´´½¨Ö§³ÖËùÓй¦ÄÜÐèÇóµÄJavaBeansÀà¡£Ò»¸öÌØÊâÓ¦ÓÃÒªÇóµÄbeansµÄ¾«È·ÌØÐÔÒÀÀµÓÚ¾ßÌåÐèÇó±ä»¯»á·Ç³£µÄ´ó£¬µ«ÊÇËüÃÇͨ³£¿ÉÒÔ·Ö³ÉÏÂÃæÌÖÂ۵ļ¸ÖÖÀàÐÍ¡£È»¶ø£¬Ê×Ïȶԡ°·¶Î§¡±¸ÅÄî×öÒ»¸ö¼ò¶ÌµÄ»Ø¹ËÊÇÓÐÓõģ¬ÒòΪËüÓëbeansÓйء£

2.2 JavaBeansºÍ·¶Î§

ÔÚÒ»¸ö»ùÓÚwebµÄÓ¦ÓóÌÐòÖУ¬JavaBeans¿ÉÒÔ±»±£´æÔÚ£¨²¢´ÓÖзÃÎÊ£©Ò»Ð©²»Í¬¡°ÊôÐÔ¡±µÄ¼¯ºÏÖС£Ã¿Ò»¸ö¼¯ºÏ¶¼Óм¯ºÏÉú´æÆÚºÍËù±£´æµÄbeans¿É¼û¶ÈµÄ²»Í¬µÄ¹æÔò¡£×ܵÄ˵À´£¬¶¨ÒåÉú´æÆÚºÍ¿É¼û¶ÈµÄÕâЩ¹æÔò±»½Ð×öÕâЩbeansµÄ ·¶Î§ ¡£JSP¹æ·¶ÖÐʹÓÃÒÔÏÂÊõÓﶨÒå¿ÉÑ¡µÄ·¶Î§£¨ÔÚÔ²À¨ºÅÖж¨Òåservlet APIÖеĵȼÛÎ£º ¼Çסͬһ¸öwebÓ¦ÓóÌÐòµÄJSPÒ³ÃæºÍservlets¹²ÏíͬÑùÒ»×ébean¼¯ºÏÊǺÜÖØÒªµÄ¡£ÀýÈ磬һ¸öbean×÷Ϊһ¸örequestÊôÐÔ±£´æÔÚÒ»¸öservletÖУ¬¾ÍÏóÕâÑù£º
    MyCart mycart = new MyCart(...);
    request.setAttribute("cart", mycart);
½«Á¢¼´±»Õâ¸öservletÖØ¶¨Ïòµ½µÄÒ»¸öJSPÒ³ÃæÊ¹ÓÃÒ»¸ö±ê×¼µÄÐÐΪ±ê¼Ç¿´µ½£¬¾ÍÏóÕâÑù£º
    <jsp:useBean id="cart" scope="request"
     class="com.mycompany.MyApp.MyCart"/>

2.3 ActionForm Beans

Struts¿ò¼Üͨ³£¼Ù¶¨ÄãÒѾ­ÎªÃ¿Ò»¸öÄãµÄÓ¦ÓóÌÐòÖÐÇëÇóµÄÊäÈë´´½¨ÁËÒ»¸ö ActionForm bean£¨¼´Ò»¸öʵÏÖÁË ActionForm ½Ó¿ÚµÄÀࣩ¡£Èç¹ûÄãÔÚÄãµÄ ActionMapping ÅäÖÃÎļþÖж¨ÒåÁËÕâÑùµÄbeans£¨¼û¡°´´½¨Controller×é¼þ¡±£©£¬StrutsµÄcontroller servletÔÚµ÷ÓÃÊʵ±µÄ Action ·½·¨Ç°½«×Ô¶¯ÎªÄãÖ´ÐÐÈçϵķþÎñ£º µ±ÄãÔÚдÄãµÄActionForm beansʱ£¬¼ÇסÒÔϵÄÔ­Ôò£º ÄãÓ¦¸Ã×¢ÒâÒ»¸ö¡°±íµ¥¡±ÔÚÕâÀïÌÖÂÛʱµÄÒâÒå²¢²»±ØÐë¶ÔÓ¦ÓÚÓû§½çÃæÖеÄÒ»¸öµ¥¶ÀµÄJSPÒ³Ãæ¡£ÔںܶàÓ¦ÓóÌÐòÖÐÒ»¸ö¡°±íµ¥¡±£¨´ÓÓû§µÄ¹Ûµã£©ÑÓÉìÖÁ¶à¸öÒ³ÃæÒ²ÊÇºÜÆ½³£µÄ¡£ÏëÏë¿´£¬ÀýÈ磬ͨ³£ÔÚ°²×°ÐµÄÓ¦ÓóÌÐòʱʹÓõĵ¼º½°²×°³ÌÐòµÄÓû§½çÃæ¡£Struts¹ÄÀøÄ㶨ÒåÒ»¸ö°üº¬ËùÓÐ×Ö¶ÎÊôÐԵĵ¥¶ÀµÄActionForm bean¡£²»¹Ü×Ö¶Îʵ¼ÊÉÏÊÇÏÔʾÔÚÄĸöÒ³ÃæÉÏ¡£Í¬ÑùµÄ£¬Í¬Ò»±íµ¥µÄ²»Í¬µÄÒ³ÃæÓ¦¸ÃÌá½»µ½ÏàͬµÄActionÀà¡£Èç¹ûÄã×ñÕÕÕâ¸ö½¨Ò飬ÔÚ´ó¶àÊýÇé¿öÏ£¬Ò³ÃæÉè¼ÆÕß¿ÉÒÔÖØÐÂ×éÖ¯²»Í¬Ò³ÃæÖеÄ×ֶζø²»ÐèÒª¸Ä±ä´¦ÀíÂß¼­¡£

2.4 ϵͳ״̬Beans

ϵͳµÄʵ¼Ê״̬ͨ³£±íʾΪһ×éÒ»¸ö»ò¶à¸öµÄJavaBeansÀ࣬ÆäÊôÐÔ¶¨Ò嵱ǰ״̬¡£ÀýÈ磬һ¸ö¹ºÎﳵϵͳ°üÀ¨Ò»¸ö±íʾ¹ºÎï³µµÄbean£¬Õâ¸öbeanΪÿ¸öµ¥¶ÀµÄ¹ºÎïÕßά»¤£¬Õâ¸öbeanÖаüÀ¨£¨ÔÚÆäËüÊÂÎïÖ®ÖУ©Ò»×鹺ÎïÕßµ±Ç°Ñ¡Ôñ¹ºÂòµÄÏîÄ¿¡£·Ö±ðµØ£¬ÏµÍ³Ò²°üÀ¨±£´æÓû§ÐÅÏ¢£¨°üÀ¨ËûÃǵÄÐÅÓÿ¨ºÍËÍ»õµØÖ·£©¡¢¿É»ñµÃÏîÄ¿µÄĿ¼ºÍËüÃǵ±Ç°¿â´æË®Æ½µÄ²»Í¬µÄbeans¡£

¶ÔÓÚС¹æÄ£µÄϵͳ£¬»òÕß¶ÔÓÚ²»ÐèÒª³¤Ê±¼ä±£´æµÄ״̬ÐÅÏ¢£¬Ò»×éϵͳ״̬beans¿ÉÒÔ°üº¬ËùÓÐÏµÍ³Ôø¾­¾­ÀúµÄÌØ¶¨Ï¸½ÚµÄÐÅÏ¢¡£»òÕß¾­³£ÊÇ£¬ÏµÍ³×´Ì¬beans±íʾÓÀ¾Ã±£´æÔÚһЩÍⲿÊý¾Ý¿âÖеÄÐÅÏ¢£¨ÀýÈçCustomerBean¶ÔÏó¶ÔÓ¦ÓÚ±í CUSTOMERS ÖеÄÌØ¶¨µÄÒ»ÐУ©£¬ÔÚÐèҪʱ´Ó·þÎñÆ÷µÄÄÚ´æÖд´½¨»òÇå³ý¡£ÔÚ´ó¹æÄ£Ó¦ÓóÌÐòÖУ¬Entity EJBsÒ²ÓÃÓÚÕâÖÖÓÃ;¡£

2.5 ÉÌÒµÂß¼­Beans

ÄãÓ¦¸Ã°ÑÄãµÄÓ¦ÓóÌÐòÖеŦÄÜÂß¼­·â×°³É¶ÔΪ´ËÄ¿µÄÉè¼ÆµÄJavaBeansµÄ·½·¨µ÷Óá£ÕâЩ·½·¨¿ÉÒÔÊÇÓÃÓÚϵͳ״̬beansµÄÏàͬµÄÀàµÄÒ»²¿·Ö£¬»òÕß¿ÉÒÔÊÇÔÚרÃÅÖ´ÐÐÉÌÒµÂß¼­µÄ¶ÀÁ¢µÄÀàÖС£ÔÚºóÒ»ÖÖÇé¿öÏ£¬Äãͨ³£ÐèÒª½«ÏµÍ³×´Ì¬beans´«µÝ¸øÕâЩ·½·¨×÷Ϊ²ÎÊý´¦Àí¡£

ΪÁË´úÂë×î´óµÄ¿ÉÖØÓÃÐÔ£¬ÉÌÒµÂß¼­beansÓ¦¸Ã±»Éè¼ÆºÍʵÏÖΪËüÃDz»ÖªµÀ×Ô¼º±»Ö´ÐÐÓÚwebÓ¦Óû·¾³ÖС£Èç¹ûÄã·¢ÏÖÔÚÄãµÄbeanÖÐÄã±ØÐëimportÒ»¸ö javax.servlet.* À࣬Äã¾Í°ÑÕâ¸öÉÌÒµÂß¼­À¦°óÔÚÁËwebÓ¦Óû·¾³ÖС£¿¼ÂÇÖØÐÂ×éÖ¯ÊÂÎïʹÄãµÄ Action ÀࣨControllerÈÎÎñµÄÒ»²¿·Ö£¬ÔÚÏÂÃæÃèÊö£©·­ÒëËùÓдÓHTTPÇëÇóÖÐÇëÇó±»´¦ÀíΪ¶ÔÄãµÄÉÌÒµÂß¼­beansÊôÐÔset·½·¨µ÷ÓõÄÐÅÏ¢£¬È»ºó¿ÉÒÔ·¢³öÒ»¸ö¶Ô execute() µÄµ÷Óá£ÕâÑùµÄÒ»¸öÉÌÒµÂß¼­Àà¿ÉÒÔ±»ÖØÓÃÔÚ³ýËüÃÇ×î³õ±»¹¹ÔìµÄwebÓ¦ÓóÌÐòÒÔÍâµÄ»·¾³ÖС£

ÒÀÀµÓÚÄãµÄÓ¦ÓóÌÐòµÄ¸´ÔӶȺͷ¶Î§£¬ÉÌÒµÂß¼­beans¿ÉÒÔÊÇÓë×÷Ϊ²ÎÊý´«µÝµÄϵͳ״̬beans½»»¥×÷ÓÃµÄÆÕͨµÄJavaBeans£¬»òÕßʹÓÃJDBCµ÷Ó÷ÃÎÊÊý¾Ý¿âµÄÆÕͨµÄJavaBeans¡£¶ø¶ÔÓڽϴóµÄÓ¦ÓóÌÐò£¬ÕâЩbeans¾­³£ÊÇÓÐ״̬»òÎÞ״̬µÄEJBs¡£

2.6 ÌâÍâ»°: ·ÃÎʹØÏµÊý¾Ý¿â

ºÜ¶àwebÓ¦ÓóÌÐòÀûÓÃÒ»¸ö¹ØÏµÊý¾Ý¿â£¨Í¨¹ýÒ»¸öJDBC driver·ÃÎÊ£©À´±£´æÓ¦ÓóÌÐòÏà¹ØµÄÓÀ¾ÃÊý¾Ý¡£ ÆäËüÓ¦ÓóÌÐòÔòʹÓÃEntity EJBsÀ´ÊµÏÖÕâ¸öÄ¿µÄ£¬ËûÃÇίÅÉEJBs×Ô¼ºÀ´¾ö¶¨ÔõÑùά»¤ÓÀ¾Ã״̬¡£Èç¹ûÄãÊÇʹÓÃEJBsÀ´ÊµÏÖÕâ¸öÄ¿µÄ£¬×ñÕÕEJB¹æ·¶ÖÐÃèÊöµÄ¿Í»§¶ËÉè¼ÆÄ£Ê½¡£

¶ÔÓÚ»ùÓÚÖ±½ÓÊý¾Ý¿â·ÃÎʵÄwebÓ¦ÓóÌÐò£¬Ò»¸öÆÕͨµÄÉè¼ÆÎÊÌâÊǵ±ÐèÒª·ÃÎʵͲãÊý¾Ý¿âʱÔõÑù²úÉúÒ»¸öÊʵ±µÄJDBCÁ¬½Ó¶ÔÏó¡£½â¾öÕâ¸öÎÊÌâÓм¸ÖÖ·½·¨ -- ÒÔÏÂÔ­ÔòÃèÊöÁËÍÆ¼öµÄÒ»ÖÖ·½·¨£º

×ñÕÕÉÏÃæÍÆ¼öµÄÉè¼ÆÄ£Ê½Òâζ×ÅÄãÄܹ»±àдÄãµÄÉÌÒµÂß¼­Àà¶ø²»ÐèÒªµ£ÐÄËüÃÇÔõÑùµÃµ½Ò»¸öJDBCÁª½ÓÀ´Ê¹ÓÃ-- ¼òµ¥µØÔÚÈκÎÐèÒª·ÃÎÊÊý¾Ý¿âµÄ·½·¨Öаüº¬Ò»¸öConnection²ÎÊý¡£µ±ÄãµÄÉÌÒµÂß¼­ÀàÔÚÒ»¸öwebÓ¦ÓóÌÐòÖб»ÀûÓÃʱ£¬·ÖÅäºÍÊÍ·ÅÊʵ±µÄÁª½ÓÊÇ Action ÀàµÄÔðÈΡ£µ±ÄãʹÓÃÏàͬµÄÉÌÒµÂß¼­Ààʱ£¬ÀýÈ磬ÔÚÒ»¸öÅú´¦Àí¹¤×÷ÖУ¬Ìṩһ¸öÊʵ±µÄÁª½ÓÊÇÄǸöÓ¦ÓóÌÐòµÄÔðÈΣ¨Õâ²»ÐèÒª´Ó»º³å³ØÖлñµÃ£¬ÒòΪ´ó¶àÊýÅú´¦Àí¹¤×÷ÔËÐÐÓÚÒ»¸öµ¥Ï̻߳·¾³ÖУ©¡£

3. ´´½¨View×é¼þ

3.1 ¸ÅÊö

ÕâÒ»Õ¼¯ÖÐÓÚ´´½¨Ó¦ÓóÌÐòÖÐµÄ View ×é¼þµÄÈÎÎñ£¬Ö÷ҪʹÓÃJSP¼¼Êõ½¨Á¢¡£ÌرðµÄ£¬Struts³ýÁËÌṩÁËÓëÊäÈë±íµ¥µÄ½»»¥Í⻹ÌṩÁ˽¨Á¢¹ú¼Ê»¯Ó¦ÓóÌÐòµÄÖ§³Ö¡£¼¸¸öÆäËüµÄÓëViewÏà¹ØµÄÖ÷ÌâÒ²±»¼òµ¥µØÌÖÂÛ¡£

3.2 ¹ú¼Ê»¯ÏûÏ¢

¼¸Äê֮ǰ£¬Ó¦ÓóÌÐò¿ª·¢ÕßÄܹ»¿¼Âǵ½½ö½öÖ§³ÖËûÃDZ¾¹úµÄֻʹÓÃÒ»ÖÖÓïÑÔ£¨»òÕßÓÐʱºòÊÇÁ½ÖÖ£©ºÍͨ³£Ö»ÓÐÒ»ÖÖÊýÁ¿±íÏÖ·½Ê½£¨ÀýÈçÈÕÆÚ¡¢Êý×Ö¡¢»õ±ÒÖµ£©µÄ¾ÓÃñ¡£È»¶ø£¬»ùÓÚweb¼¼ÊõµÄÓ¦ÓóÌÐòµÄ±¬Õ¨ÐÔÔö³¤£¬ÒÔ¼°½«ÕâЩӦÓóÌÐòÕ¹¿ªÔÚInternet»òÆäËü±»¹ã·º·ÃÎʵÄÍøÂçÖ®ÉÏ£¬ÒѾ­ÔںܶàÇé¿öÏÂʹµÃ¹ú¼ÒµÄ±ß½çµ­»¯µ½²»¿É¼û¡£ÕâÖÖÇé¿öת±ä³ÉΪһÖÖ¶ÔÓÚÓ¦ÓóÌÐòÖ§³Ö¹ú¼Ê»¯£¨¾­³£±»³Æ×ö¡°i18n¡±£¬ÒòΪ18ÊÇ×Öĸ¡°i¡±ºÍ×Öĸ¡°n¡±Ö®¼äµÄ×Öĸ¸öÊý£©ºÍ±¾µØ»¯µÄÐèÇó¡£

Struts½¨Á¢ÓÚJavaƽ̨֮ÉÏΪ½¨Á¢¹ú¼Ê»¯ºÍ±¾µØ»¯µÄÓ¦ÓóÌÐòÌṩ°ïÖú¡£ÐèÒªÊìϤµÄ¹Ø¼ü¸ÅÄîÊÇ£º

¶ÔÓÚÒ»¸ö¹ú¼Ê»¯µÄÓ¦ÓóÌÐò£¬×ñÕÕJDKÎĵµ°üÖйú¼Ê»¯ÎĵµËùÃèÊöµÄ²½ÖèÀ´´´½¨Ò»¸ö°üº¬Ã¿ÖÖÓïÑÔµÄÏûÏ¢µÄÊôÐÔÎļþ¡£ÏÂÃæ¾ÙÒ»¸öÀý×Ó˵Ã÷¡£

¼ÙÉèÄãµÄÔ´´úÂ뽨Á¢ÔÚ°ü com.mycompany.mypackage ÖУ¬Òò´ËËü±£´æÓÚÒ»¸ö½Ð×ö£¨Ïà¶ÔÓÚÄãµÄԴĿ¼£©com/mycompany/mypackage µÄĿ¼ÖС£Îª´´½¨Ò»¸ö½Ð×ö com.mycompany.mypackage.MyResources µÄ×ÊÔ´°ü£¬ÄãÓ¦¸ÃÔÚĿ¼ com/mycompany/mypackage Öд´½¨ÏÂÁÐÎļþ£º

µ±ÄãÔÚwebÓ¦ÓóÌÐòÕ¹¿ªÃèÊö·ûÖÐÅäÖÃcontroller servletʱ£¬ÄãÐèÒªÔÚÒ»¸ö³õʼ»¯²ÎÊýÖж¨ÒåµÄÒ»¼þÊÂÊÇÓ¦ÓóÌÐòµÄ×ÊÔ´°üµÄ»ù´¡Ãû¡£ÔÚÉÏÊöµÄÇé¿öÖУ¬ÕâÓ¦¸ÃÊÇ com.mycompany.mypackage.MyResources ¡£

3.3 ±íµ¥ºÍFormBeanµÄ½»»¥

´ó²¿·Öweb¿ª·¢ÕßÔø¾­Ê¹ÓÃHTMLµÄ±ê×¼ÐÔÄÜÀ´½¨Á¢±íµ¥£¬ÀýÈçʹÓà <input> ±ê¼Ç¡£Óû§Ï£Íû½»»¥³ÌÐò¾ßÓÐÒ»¶¨µÄÐÐΪ£¬ÕâЩÆÚ´ýÖеÄÒ»¸öÓë´íÎó´¦ÀíÓÐ¹Ø -- Èç¹ûÓû§³öÏÖÒ»¸ö´íÎó£¬Ó¦ÓóÌÐòÓ¦¸ÃÔÊÐíËûÃǽö½öÐÞ¸ÄÐèÒªÐ޸ĵIJ¿·Ö -- ¶ø²»ÐèÒªÖØÐÂÇÃÈëµ±Ç°Ò³Ãæ»ò±íµ¥ÖеÄÈÎºÎÆäËüÐÅÏ¢¡£

ʹÓñê×¼µÄHTMLºÍJSP±à³ÌÀ´ÍêȫʵÏÖÕâ¸öÆÚÍûÊǵ¥µ÷¶ø·±Öصġ£¾ÙÀýÀ´Ëµ£¬Ò»¸öÓû§Ãû×ֶεÄÊäÈëÔªËØ¿´ÆðÀ´¿ÉÒÔÏóÊÇÕâÑù£¨ÔÚJSPÖУ©

        <input type="text" name="username"
         value="<%= loginBean.getUsername() %>">
ÕâºÜÄÑÇöԣ¬»á°ÑûÓбà³Ì¸ÅÄîµÄHTML¿ª·¢Õ߸ãºýÍ¿£¬²¢ÇÒ»áÔÚHTML±à¼­Æ÷ÖÐÔì³ÉÎÊÌ⡣ȡ¶ø´úÖ®µÄÊÇ£¬StrutsÌṩÁËÒ»ÖÖÈ«ÃæµÄ»ùÓÚJSP 1.1µÄ¶¨ÖƱê¼Ç¿â¹¦ÄܵĻúÖÆÀ´½¨Á¢±íµ¥¡£ÉÏÃæµÄÇé¿öʹÓÃStruts´¦Àíºó½«ÏóÊÇÕâÑù£º
        <struts:text name="username"/>
ûÓбØÒªÔÙÏÔʽµØÉæ¼°µ½´ÓÖлñµÃ³õʼֵµÄJavaBean¡£Õ⽫ÓÉ¿ò¼Ü×Ô¶¯´¦Àí¡£

3.3.1 ʹÓÃStruts½¨Á¢±íµ¥

Ò»¸öÍêÕûµÄ×¢²á±íµ¥½«ÑÝʾStrutsÏà¶ÔÓÚÖ±½ÓʹÓÃHTMLºÍ±ê×¼µÄJSP¹¦ÄÜÔõÑù¼«´óµØ¼õÇáÁË´¦Àí±íµ¥µÄÍ´¿à¡£¿¼ÂÇÒÔϳÆÎªlogon.jspµÄÒ³Ãæ£¨À´×ÔStrutsµÄÀý×Ó³ÌÐò£©£º
  <%@ page language="java" %>
  <%@ taglib uri="/WEB-INF/struts.tld" prefix="struts" %>

  <html>
  <head>
  <title><struts:message key="logon.title"/></title>
  <body bgcolor="white">

  <struts:errors/>

  <struts:form action="logon.do" name="logonForm"
   type="org.apache.struts.example.LogonForm"/>
  <table border="0" width="100%">
    <tr>
      <th align="right">
        <struts:message key="prompt.username"/>
      </th>
      <td align="left">
        <struts:text name="username" size="16"/>
      </td>
    </tr>
    <tr>
      <th align="right">
        <struts:message key="prompt.password"/>
      </th>
      <td align="left">
        <struts:password name="password" size="16"/>
      </td>
    </tr>
    <tr>
      <td align="right">
        <struts:submit>
          <struts:message key="button.submit"/>
        </struts:submit>
      </td>
      <td align="right">
        <struts:reset>
          <struts:message key="button.reset"/>
        </struts:reset>
      </td>
    </tr>
  </table>
  </struts:form>

  </body>
  </html>
ÏÂÃæµÄÌõÄ¿»ùÓÚÕâ¸öÀý×ÓÑÝʾÔÚStrutsÖд¦Àí±íµ¥µÄ¹Ø¼üµÄÌØÐÔ£º

3.3.2 ÊäÈë×Ö¶ÎÀàÐÍÖ§³Ö

StrutsΪËùÓÐÒÔÏÂÀàÐ͵ÄÊäÈë×ֶζ¨ÒåÁ˱ê¼Ç£¬´øÓÐÓëÆäÏàÓ¦µÄ²Î¿¼ÐÅÏ¢µÄ³¬Áª½Ó¡£ ÔÚËùÓÐÇé¿öÏ£¬Ò»¸ö×ֶαê¼Ç¶¼±ØÐëǶÌ×ÔÚÒ»¸ö form ±ê¼ÇÖУ¬ÕâÑù×ֶβÅÖªµÀʹÓÃÄĸöbeanÀ´³õʼ»¯ÏÔʾµÄÖµ¡£

3.3.3 ÆäËüÓÐÓõıíʾ±ê¼Ç

ÔÚStrutsµÄ±ê¼Ç¿âÖÐÓм¸¸öÆäËüµÄ±ê¼Ç¶ÔÓÚ½¨Á¢Óû§½çÃæÊÇÓаïÖúµÄ£º

3.3.4 ×Ô¶¯±íµ¥ÑéÖ¤

³ýÁËÉÏÃæÃèÊöµÄ±íµ¥ºÍbeanµÄ½»»¥Í⣬Èç¹ûÄãµÄbeanÖªµÀÔõÑùÑéÖ¤Ëü½ÓÊÕµÄÊäÈë×ֶΣ¬Struts»¹ÌṩһÖÖ¸½¼ÓµÄ»úÖÆ¡£ÎªÁËÀûÓÃÕâ¸öÌØÐÔ£¬Ê¹ÄãµÄbeanÀàʵÏÖ ValidatingActionForm ½Ó¿Ú£¬¶ø²»ÊÇ ActionForm ½Ó¿Ú¡£Ò»¸ö ValidatingActionForm Ôö¼ÓÁËÒ»¸ö¸½¼ÓµÄ·½·¨Ç©Ãû£º
    public String[] validate()
¶ÔÓÚÒ»¸ö±»controller servletÔÚbeanÊôÐÔÒѾ­×é×°µ«ÊÇÔÚÏàÓ¦µÄÐÐΪÀàµÄ perform() ·½·¨±»µ÷ÓÃ֮ǰµ÷Óõķ½·¨£¬validate() ·½·¨ÓÐÒÔÏ¿ÉÑ¡Ï ÕýÈçÒÔǰÌáµ½µÄ£¬Õâ¸öÌØÐÔÍêÈ«ÊÇ¿ÉÑ¡µÄ¡£Èç¹ûÄãµÄform bean ½ö½öʵÏÖÁË ActionForm ½Ó¿Ú£¬controller servlet½«¼ÙÉèÈκÎÇëÇóµÄÑéÖ¤ÓÉactionÀàÍê³É¡£

3.4 ÆäËüµÄ±íʾ¼¼Êõ

¾¡¹ÜÄãµÄÓ¦ÓóÌÐòµÄÍâ±íºÍ¸Ð¾õ¿ÉÒÔÍêÈ«»ùÓÚ±ê×¼µÄJSPÄÜÁ¦ºÍStrutsµÄ¶¨ÖƱê¼Ç¿â¹¹½¨£¬ÄãÒ²Ó¦¸Ã¿¼ÂÇÕ¹¿ªÆäËü¸Ä½ø×é¼þÖØÓᢼõÉÙ¹ÜÀí¸ºµ£»òÕß¼õÉÙ³ö´íµÄ¼¼Êõ¡£ÔÚÏÂÃæµÄ²¿·ÖÌÖÂÛ¼¸¸ö¿ÉÑ¡µÄ¼¼Êõ¡£

3.4.1 ÌØ¶¨ÓÚÓ¦ÓóÌÐòµÄ¶¨ÖƱê¼Ç

ÔÚʹÓÃStruts¿âÌṩµÄ¶¨ÖƱê¼ÇÖ®Í⣬ºÜÈÝÒ×½¨Á¢Ìض¨ÓÚÄã´´½¨µÄÓ¦ÓóÌÐòµÄ±ê¼ÇÀ´°ïÖú½¨Á¢Óû§½çÃæ¡£Struts°üÀ¨µÄÀý×Ó³ÌÐòÓý¨Á¢ÒÔϽöÓÃÓÚʵÏÖÕâ¸öÓ¦ÓóÌÐòµÄ±ê¼ÇÑÝʾÁËÕâ¸öÔ­Ôò£º ÕâЩ±ê¼ÇµÄÔ´´úÂëÔÚ src/example Ŀ¼ÖУ¬ÔÚ°ü org.apache.struts.example À»¹´øÓÐһЩÆäËüµÄÓÃÔÚÕâ¸öÓ¦ÓóÌÐòÖеÄJavaÀà¡£

3.4.2 Óаüº¬ÎļþµÄÒ³Ãæ×é¼þ

ÔÚÒ»¸öJSPÎļþ£¨°üº¬¶¨ÖƱê¼ÇºÍbeansÓÃÀ´·ÃÎÊÇëÇóµÄ¶¯Ì¬Êý¾Ý£©Öд´½¨ÍêÕûµÄ±íʾÊÇÒ»Öַdz£ÆÕͨµÄÉè¼Æ·½·¨£¬ÔÚStruts°üÀ¨µÄÀý×Ó³ÌÐòÖб»²ÉÓá£È»¶øºÜ¶àÓ¦ÓóÌÐòÒªÇóÔÚµ¥¶ÀÒ»¸öÒ³ÃæÖÐÏÔʾÄãµÄÓ¦ÓóÌÐòµÄ¶à¸öÂß¼­É϶ÀÁ¢µÄ²¿·Ö¡£

¾ÙÀýÀ´Ëµ£¬Ò»¸öÈë¿ÚÓ¦ÓóÌÐò¿ÉÒÔÔÚÈë¿ÚµÄÖ÷Ò³ÃæÉÏÓÐһЩ»òÕßÈ«²¿ÒÔÏµĹ¦ÄÜ£º

Èç¹ûÄãÄܹ»½«¹¤×÷»®·Ö¿ª£¬·ÖÅ䲻ͬµÄ¿ª·¢ÕßÈ¥×ö²»Í¬µÄƬ¶Î£¬ÄÇôÕâ¸öÕ¾µã²»Í¬Æ¬¶ÎµÄ¿ª·¢¾Í»á¸ü¼Ó¼òµ¥¡£È»ºó£¬Äã¿ÉÒÔʹÓÃJSP¼¼ÊõµÄ include ÄÜÁ¦À´½«ÕâЩƬ¶Î×éºÏ½øÒ»¸öµ¥¶ÀµÄÒ³Ãæ¡£ÓÐÁ½ÖÖ include ¿ÉÓã¬ÒÀÀµÓÚÄãÏ£ÍûÊä³öµÄ×éºÏ·¢ÉúÔÚʲôʱ¼ä£º

3.4.3 ͼƬ´¦Àí×é¼þ

һЩӦÓóÌÐòÒªÇó¶¯Ì¬Éú³ÉͼƬ£¬¾ÍÏóÒ»¸ö¹ÉÊб¨¸æÕ¾µãµÄ¼Û¸ñͼһÑù¡£Í¨³£Ê¹ÓÃÁ½ÖÖ²»Í¬µÄ·½·¨À´ÊµÏÖÕâ¸öÐèÇó£º

4. ´´½¨Controller×é¼þ

4.1 ¸ÅÊö

ÏÖÔÚÎÒÃÇÀí½âÁËÔõÑù¹¹ÔìÄãµÄÓ¦ÓóÌÐòµÄModelºÍView×é¼þ£¬ÏÖÔÚÊǼ¯Öе½ Controller ×é¼þµÄʱºòÁË¡£Struts°üÀ¨Ò»¸öʵÏÖÓ³ÉäÒ»¸öÇëÇóURIµ½Ò»¸öÐÐΪÀàµÄÖ÷Òª¹¦ÄܵÄservlet¡£Òò´ËÄãµÄÓëControllerÓйصÄÖ÷ÒªÔðÈÎÊÇ£º

4.2 ActionÀà

Action ½Ó¿Ú¶¨ÒåÒ»¸öµ¥Ò»µÄ±ØÐëÓÉÒ»¸ö Action ÀàʵÏֵķ½·¨£¬¾ÍÏóÏÂÃæÕâÑù£º
    public ActionForward perform(ActionServlet servlet,
                                 ActionMapping mapping,
                                 ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response)
      throws IOException, ServletException;
Ò»¸ö Action ÀàµÄÄ¿±êÊÇ´¦ÀíÕâ¸öÇëÇó£¬È»ºó·µ»ØÒ»¸ö±êʶJSPÒ³ÃæµÄ ActionForward ¶ÔÏ󣬿ØÖÆÓ¦¸ÃÖØ¶¨ÏòÕâ¸öJSPÒ³ÃæÒÔÉú³ÉÏàÓ¦µÄÏìÓ¦¡£ÔÚ Model 2 Éè¼ÆÄ£Ê½ÖУ¬Ò»¸öµäÐ굀 Action ÀཫÔÚËüµÄ perform() ·½·¨ÖÐʵÏÖÏÂÃæµÄÂß¼­£º µ±Îª Action Àà±à³ÌʱҪ¼ÇסµÄÉè¼ÆÒªµã°üÀ¨ÒÔÏÂÕâЩ£º ÁíÍ⣬Ä㽫»áÏëÒª·ÀÖ¹³öÏַdz£´óµÄ Action Àà¡£×î¼òµ¥µÄʵÏÖ;¾¶Êǽ«ÄãµÄ¹¦ÄÜÂß¼­Ç¶Èëµ½ Action Àà±¾Éí£¬¶ø²»Êǽ«ÆäдÔÚ¶ÀÁ¢µÄÉÌÒµÂß¼­beansÖС£³ýÁËʹ Action ÀàÄÑÓÚÀí½âºÍά»¤Í⣬ÕâÖÖ·½·¨Ò²Ê¹µÃÄÑÓÚÖØÓÃÕâЩÉÌÒµÂß¼­´úÂ룬ÒòΪ´úÂ뱻ǶÈëµ½Ò»¸ö×é¼þ£¨Action ÀࣩÖв¢±»À¦°óÔËÐÐÓÚwebÓ¦ÓóÌÐò»·¾³ÖС£

°üÀ¨ÔÚStrutsÖеÄÀý×Ó³ÌÐòijÖ̶ֳÈÉÏÑÓÉìÁËÕâ¸öÉè¼ÆÔ­Ôò£¬ÒòΪÉÌÒµÂß¼­±¾ÉíÊÇǶÈëµ½ Action ÀàÖеġ£ÕâÓ¦¸Ã±»¿´×÷ÊÇÔÚÕâ¸öÑù±¾Ó¦ÓóÌÐòÉè¼ÆÖеÄÒ»¸öbug£¬¶ø²»ÊÇÒ»¸öStrutsÌåϵ½á¹¹ÖеĹÌÓÐÌØÐÔ£¬»òÕßÊÇÒ»¸öÖµµÃ·ÂЧµÄ·½·¨¡£

4.3 ActionMappingʵÏÖ

ΪÁ˳ɹ¦µØÔËÐУ¬StrutsµÄcontroller servletÐèÒªÖªµÀ¹ØÓÚÿ¸öURI¸ÃÔõÑùÓ³Éäµ½Ò»¸öÊʵ±µÄ Action ÀàµÄ¼¸¼þÊ¡£ÐèÒªÁ˽âµÄ֪ʶ·â×°ÔÚÒ»¸ö½Ð×ö ActionMapping µÄJava½Ó¿ÚÖУ¬ËüÓÐÒÔÏÂÊôÐÔ£º StrutsÔÚÒ»¸ö½Ð×ö ActionMappingBase µÄÀàÖаüÀ¨ÁËÒ»¸ö ActionMapping ½Ó¿ÚµÄ·½±ãµÄʵÏÖ¡£Èç¹ûÄã²»ÐèҪΪÄã×Ô¼ºµÄÓ³É䶨ÒåÈκθ½¼ÓµÄÊôÐÔ£¬¾¡¹Ü°ÑÕâ¸öÀà×÷ΪÄãµÄ ActionMapping ÀàºÃÁË£¬¾ÍÏòÏÂÃæ²¿·ÖÃèÊöµÄÄÇÑùÅäÖá£È»¶ø£¬¶¨ÒåÒ»¸ö ActionMapping ʵÏÖ£¨¶à°ëÊÇÀ©Õ¹ ActionMappingBase ÀࣩÀ´°üº¬¸½¼ÓµÄÊôÐÔÒ²ÊÇ¿ÉÄܵġ£controller servletÖªµÀÔõÑù×Ô¶¯ÅäÖÃÕâЩ¶¨ÖÆÊôÐÔ£¬ÒòΪËüʹÓÃStrutsµÄDigesterÄ£¿éÀ´¶ÁÅäÖÃÎļþ¡£

°üÀ¨ÔÚStrutsµÄÀý×Ó³ÌÐòÖУ¬Õâ¸öÌØÐÔÓÃÀ´¶¨ÒåÁ½¸ö¸½¼ÓµÄÊôÐÔ£º

ʹÓÃÕâÁ½¸ö¶îÍâµÄÊôÐÔ£¬Àý×Ó³ÌÐòÖÐµÄ Action À༸ºõÍêÈ«¶ÀÁ¢ÓÚÒ³ÃæÉè¼ÆÕßʹÓõÄʵ¼ÊµÄJSPÒ³ÃæÃû¡£ Õâ¸öÒ³Ãæ¿ÉÒÔÔÚÖØÐÂÉè¼ÆÊ±±»ÖØÃüÃû£¬È»¶ø¼¸ºõ²»»áÓ°Ïìµ½ Action Àà±¾Éí¡£Èç¹û¡°ÏÂÒ»¸ö¡±JSPÒ³ÃæµÄÃû×Ö±»Ó²±àÂëµ½ Action ÀàÖУ¬ËùÓеÄÕâЩÀàÒ²ÐèÒª±»Ð޸ġ£

4.4 ActionÓ³ÉäÅäÖÃÎļþ

controller servletÔõÑùÖªµÀÄãÏëÒªµÃµ½µÄÓ³É䣿дһ¸ö¼òµ¥µØ³õʼ»¯Ð嵀 ActionMapping ʵÀý²¢ÇÒµ÷ÓÃËùÓÐÊʵ±µÄset·½·¨µÄСµÄJavaÀàÊÇ¿ÉÄܵ썵«ÊǺÜÂé·³£©¡£ÎªÁËʹÕâ¸ö´¦Àí¼òµ¥Ð©£¬Struts°üÀ¨Ò»¸öDigesterÄ£¿éÄܹ»´¦ÀíÒ»¸öÏëµÃµ½µÄÓ³ÉäµÄ»ùÓÚXMLµÄÃèÊö£¬Í¬Ê±´´½¨Êʵ±µÄ¶ÔÏ󡣿´ API Îĵµ ÒÔ»ñµÃ¹ØÓÚDigester¸ü¶àµÄÐÅÏ¢¡£

¿ª·¢ÕßµÄÔðÈÎÊÇ´´½¨Ò»¸ö½Ð×ö action.xml µÄXMLÎļþ£¬²¢ÇÒ°ÑËü·ÅÔÚÄãµÄÓ¦ÓóÌÐòµÄWEB-INFĿ¼ÖС££¨×¢ÒâÕâ¸öÎļþ²¢²»ÐèÒª DTD£¬ÒòΪʵ¼ÊʹÓõÄÊôÐÔ¶ÔÓÚ²»Í¬µÄÓû§¿ÉÒÔÊDz»Í¬µÄ£©×îÍâÃæµÄXMLÔªËØ±ØÐëÊÇ<action-mappings>£¬ÔÚÕâ¸öÔªËØÖ®ÖÐÊÇǶÈëµÄ0¸ö»ò¸ü¶àµÄ <action> ÔªËØ -- ÿһ¸ö¶ÔÓ¦ÓÚÄãÏ£Íû¶¨ÒåµÄÒ»¸öÓ³Éä¡£

À´×ÔÀý×Ó³ÌÐòµÄ action.xml Îļþ°üÀ¨¡°×¢²á¡±¹¦ÄܵÄÒÔÏÂÓ³ÉäÌõÄ¿£¬ÎÒÃÇÓÃÀ´ËµÃ÷Õâ¸öÐèÇó£º

  <action-mappings>

    <forward name="logon" path="/logon.jsp"/>

    <action   path="/logon"
       actionClass="org.apache.struts.example.LogonAction"
     formAttribute="logonForm"
         formClass="org.apache.struts.example.LogonForm"
         inputForm="/logon.jsp">
      <forward name="success" path="/mainMenu.jsp"/>
    </action>

  </action-mappings>
¾ÍÏóÄãËù¿´µ½µÄ£¬Õâ¸öÓ³É䯥Åä·¾¶ /logon £¨Êµ¼ÊÉÏ£¬ÒòΪÀý×Ó³ÌÐòʹÓÃÀ©Õ¹Æ¥Å䣬ÄãÔÚÒ»¸öJSPÒ³ÃæÖ¸¶¨µÄÇëÇóµÄURI½áÊøÓÚ/logon.do£©¡£µ±½ÓÊÕµ½Ò»¸öÆ¥ÅäÕâ¸ö·¾¶µÄÇëÇóʱ£¬Ò»¸ö LogonAction ÀàµÄʵÀý½«±»´´½¨£¨½ö½öÔÚµÚÒ»´Î£©²¢±»Ê¹Óá£controller servlet½«Ôڹؼü×Ö logonForm ϲéÕÒÒ»¸ösession·¶Î§µÄbean£¬Èç¹ûÐèÒª¾ÍΪָ¶¨µÄÀà´´½¨²¢±£´æÒ»¸öbean¡£

Õâ¸ö action ÔªËØÒ²¶¨ÒåÁËÒ»¸öÂß¼­Ãû¡°success¡±£¬ËüÔÚ LogonAction ÀàÖб»ÓÃÀ´±êʶµ±Ò»¸öÓû§³É¹¦×¢²áʱʹÓõÄÒ³Ãæ¡£ÏóÕâÑùʹÓÃÒ»¸öÂß¼­ÃûÔÊÐí½« action Àà¸ôÀëÓÚÈκÎÓÉÓÚÖØÐÂÉè¼ÆÎ»Ööø¿ÉÄÜ·¢ÉúµÄÒ³ÃæÃû¸Ä±ä¡£

ÕâÊǵڶþ¸öÔÚÈκΠaction Ö®ÍâÐû¸æµÄ forward ÔªËØ£¬ÕâÑùËü¾Í¿ÉÒÔ±»ËùÓеÄactionÈ«¾ÖµØ»ñµÃ¡£ÔÚÕâ¸öÇé¿öÏ£¬ËüΪע²áÒ³Ãæ¶¨ÒåÁËÒ»¸öÂß¼­Ãû¡£µ±Äãµ÷Óà mapping.findForward() ʱÔÚÄãµÄ action ´úÂëÖУ¬StrutsÊ×ÏȲéÕÒÕâ¸öaction±¾µØ¶¨ÒåµÄÂß¼­Ãû¡£Èç¹ûûÓÐÕÒµ½£¬Struts»á×Ô¶¯ÎªÄã²éÕÒÈ«¾Ö¶¨ÒåµÄÂß¼­Ãû¡£

4.5 WebÓ¦ÓóÌÐòÕ¹¿ªÃèÊö·û

ÉèÖÃÓ¦ÓóÌÐò×îºóµÄ²½ÖèÊÇÅäÖÃÓ¦ÓóÌÐòÕ¹¿ªÃèÊö·û£¨±£´æÔÚÎļþWEB-INF/web.xmlÖУ©ÒÔ°üÀ¨ËùÓбØÐèµÄStruts×é¼þ¡£×÷Ϊһ¸öÖ¸ÄÏʹÓÃÀý×Ó³ÌÐòµÄÕ¹¿ªÃèÊö·û£¬ÎÒÃÇ¿´µ½ÏÂÃæµÄÌõÄ¿ÐèÒª±»´´½¨»òÐ޸ġ£

4.5.1 ÅäÖÃAction ServletʵÀý

Ìí¼ÓÒ»¸öÌõÄ¿¶¨Òåaction servlet±¾Éí£¬Í¬Ê±°üÀ¨Êʵ±µÄ³õʼ»¯²ÎÊý¡£ÕâÑùÒ»¸öÌõÄ¿¿´ÆðÀ´ÏóÊÇÕâÑù£º
    <servlet>
      <servlet-name>action</servlet-name>
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
      <init-p
aram>
        <param-name>application</param-name>
        <param-value>org.apache.struts.example.ApplicationResources</param-value>
      </init-param>
      <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/action.xml</param-value>
      </init-param>
      <init-param>
        <param-name>debug</param-name>
        <param-value>2</param-value>
      </init-param>
      <init-param>
        <param-name>mapping</param-name>
        <param-value>org.apache.struts.example.ApplicationMapping</param-value>
      </init-param>
      <load-on-startup>2</load-on-startup>
    </servlet>
controller servletÖ§³ÖµÄ³õʼ»¯²ÎÊýÔÚÏÂÃæÃèÊö£¬¿½±´×Ô ActionServlet ÀàµÄ Javadocs ¡£·½À¨ºÅÃèÊöÈç¹ûÄãûÓÐΪÄǸö³õʼ»¯²ÎÊýÌṩһ¸öֵʱ¼ÙÉèµÄȱʡֵ¡£

4.5.2 ÅäÖÃAction ServletÓ³Éä

ÓÐÁ½ÖÖͨ³£µÄ·½·¨À´¶¨Ò彫±»controller servlet´¦ÀíµÄURL -- ǰ׺ƥÅäºÍÀ©Õ¹Æ¥Å䡣ÿÖÖ·½·¨µÄÒ»¸öÊʵ±µÄÓ³ÉäÌõÄ¿½«ÔÚÏÂÃæ±»ÃèÊö¡£

ǰ׺ƥÅäÒâ˼ÊÇÄãÏëÈÃËùÓÐÒÔÒ»¸öÌØÊâÖµ¿ªÍ·£¨ÔÚÉÏÏÂÎÄ·¾¶²¿·ÖÖ®ºó£©µÄURL´«µÝ¸øÕâ¸öservlet¡£ÕâÑùÒ»¸öÌõÄ¿¿´ÆðÀ´¿ÉÒÔÏóÊÇÕâÑù£º

    <servlet-mapping>
      <servlet-name>action</servlet-name>
      <url-pattern>/execute/*</url-pattern>
    </servlet-mapping>
ËüÒâζ×ÅÒ»¸öÆ¥ÅäÇ°ÃæÃèÊöµÄ /logon ·¾¶µÄÇëÇóµÄURL¿´ÆðÀ´ÏóÊÇÕâÑù£º
    http://www.mycompany.com/myapplication/execute/logon
ÕâÀï /myapplicationis ÊÇÄãµÄÓ¦ÓóÌÐòÕ¹¿ªËùÔÚµÄÉÏÏÂÎÄ·¾¶¡£

ÁíÒ»·½Ã棬À©Õ¹Ó³Éä»ùÓÚURLÒÔÒ»¸ö¸ú×Ŷ¨ÒåµÄÒ»×é×Ö·ûµÄ¾äµã½áÊøµÄÊÂʵ¶ø½«URLÆ¥Åäµ½action servlet ¡£ÀýÈ磬JSP´¦ÀíservletÓ³Éäµ½ *.jsp ģʽÕâÑùËüÔÚÿ¸öJSPÒ³ÃæÇëÇóʱ±»µ÷Óá£ÎªÁËʹÓà *.do À©Õ¹£¨ËüÒâζ×Å¡°×öij¼þÊ¡±£©Ó³ÉäÌõÄ¿¿´ÆðÀ´Ó¦¸ÃÏóÊÇÕâÑù£º

    <servlet-mapping>
      <servlet-name>action</servlet-name>
      <url-pattern>*.do</url-pattern>
    </servlet-mapping>
²¢ÇÒÒ»¸öÆ¥ÅäÒÔǰÃèÊöµÄ /logon ·¾¶µÄÇëÇóµÄURI¿ÉÒÔ¿´ÆðÀ´ÏóÊÇÕâÑù£º
    http://www.mycompany.com/myapplication/logon.do

4.5.3 ÅäÖÃStruts±ê¼Ç¿â

ÏÂÒ»²½£¬Äã±ØÐëÌí¼ÓÒ»¸ö¶¨ÒåStruts±ê¼Ç¿âµÄÌõÄ¿¡£Õâ¸öÌõÄ¿¿´ÆðÀ´Ó¦¸ÃÏóÊÇÕâÑù£º
  <taglib>
    <taglib-uri>/WEB-INF/struts.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts.tld</taglib-location>
  </taglib>
Ëü¸æËßJSPϵͳµ½ÄÄÀïÈ¥ÕÒÕâ¸ö¿âµÄ±ê¼Ç¿âÃèÊö·û£¨ÔÚÄãµÄÓ¦ÓóÌÐòµÄWEB-INFĿ¼£¬¶ø²»ÊÇÔÚÍⲿ»¥ÁªÍøÉϵÄij¸öµØ·½£©¡£

4.5.4 Ìí¼ÓStruts×é¼þµ½ÄãµÄÓ¦ÓóÌÐòÖÐ

ΪÁËÔÚÄãµÄÓ¦ÓóÌÐòÔËÐÐʱʹÓÃStruts£¬Äã±ØÐ뽫 struts.tld Îļþ¿½±´µ½ÄãµÄ WEB-INF Ŀ¼£¬½« struts.jar Îļþ¿½±´µ½ÄãµÄ WEB-INF/lib ¡£ ³