1. ¼òÊö Struts2 µÄ¹¤×÷Á÷³Ì:
¢Ù. ÇëÇó·¢Ë͸ø StrutsPrepareAndExecuteFilter
¢Ú. StrutsPrepareAndExecuteFilter Åж¨¸ÃÇëÇóÊÇ·ñÊÇÒ»¸ö Struts2 ÇëÇó
¢Û. Èô¸ÃÇëÇóÊÇÒ»¸ö Struts2 ÇëÇó£¬Ôò StrutsPrepareAndExecuteFilter °ÑÇëÇóµÄ´¦Àí½»¸ø ActionProxy
¢Ü. ActionProxy ´´½¨Ò»¸ö ActionInvocation µÄʵÀý£¬²¢½øÐгõʼ»¯
¢Ý. ActionInvocation ʵÀýÔÚµ÷Óà Action µÄ¹ý³Ìǰºó£¬Éæ¼°µ½Ïà¹ØÀ¹½ØÆ÷£¨Intercepter£©µÄµ÷Óá£
¢Þ. Action Ö´ÐÐÍê±Ï£¬ActionInvocation ¸ºÔð¸ù¾Ý struts.xml ÖеÄÅäÖÃÕÒµ½¶ÔÓ¦µÄ·µ»Ø½á¹û¡£µ÷Óýá¹ûµÄ execute ·½·¨£¬äÖȾ½á¹û¡£
¢ß. Ö´Ðи÷¸öÀ¹½ØÆ÷ invocation.invoke() Ö®ºóµÄ´úÂë
¢à. °Ñ½á¹û·¢Ë͵½¿Í»§¶Ë
2. Struts2 À¹½ØÆ÷ ºÍ ¹ýÂËÆ÷ µÄÇø±ð£º
¢Ù¡¢¹ýÂËÆ÷ÒÀÀµÓÚServletÈÝÆ÷£¬¶øÀ¹½ØÆ÷²»ÒÀÀµÓÚServletÈÝÆ÷¡£
¢Ú¡¢Struts2 À¹½ØÆ÷Ö»ÄÜ¶Ô Action ÇëÇóÆð×÷Ó㬶ø¹ýÂËÆ÷Ôò¿ÉÒÔ¶Ô¼¸ºõËùÓÐÇëÇóÆð×÷Óá£
¢Û¡¢À¹½ØÆ÷¿ÉÒÔ·ÃÎÊ Action ÉÏÏÂÎÄ(ActionContext)¡¢ÖµÕ»ÀïµÄ¶ÔÏó(ValueStack)£¬¶ø¹ýÂËÆ÷²»ÄÜ.
¢Ü¡¢ÔÚ Action µÄÉúÃüÖÜÆÚÖУ¬À¹½ØÆ÷¿ÉÒÔ¶à´Îµ÷Ó㬶ø¹ýÂËÆ÷Ö»ÄÜÔÚÈÝÆ÷³õʼ»¯Ê±±»µ÷ÓÃÒ»´Î¡£
3. ΪʲôҪʹÓà Struts2 & Struts2 µÄÓŵ㣺
¢Ù. »ùÓÚ MVC ¼Ü¹¹£¬¿ò¼Ü½á¹¹ÇåÎú¡£
¢Ú. ʹÓà OGNL: OGNL ¿ÉÒÔ¿ì½ÝµÄ·ÃÎÊÖµÕ»ÖеÄÊý¾Ý¡¢µ÷ÓÃÖµÕ»ÖжÔÏóµÄ·½·¨
¢Û. À¹½ØÆ÷: Struts2 µÄÀ¹½ØÆ÷ÊÇÒ»¸ö Action ¼¶±ðµÄ AOP, Struts2 ÖеÄÐí¶àÌØÐÔ¶¼ÊÇͨ¹ýÀ¹½ØÆ÷À´ÊµÏÖµÄ, ÀýÈçÒì³£´¦Àí£¬ÎļþÉÏ´«£¬ÑéÖ¤µÈ¡£À¹½ØÆ÷ÊÇ¿ÉÅäÖÃÓëÖØÓõÄ
¢Ü. ¶àÖÖ±íÏֲ㼼Êõ. È磺JSP¡¢FreeMarker¡¢Velocity µÈ
4. Struts2 ÈçºÎ·ÃÎÊ HttpServletRequest¡¢HttpSession¡¢ServletContext Èý¸öÓò¶ÔÏó
¢Ù. Óë Servlet API ½âñîµÄ·ÃÎÊ·½Ê½
> ͨ¹ý ActionContext ·ÃÎÊÓò¶ÔÏó¶ÔÓ¦µÄ Map ¶ÔÏó
> ͨ¹ýʵÏÖ Aware ½Ó¿Úʹ Struts2 ×¢Èë¶ÔÓ¦µÄ Map ¶ÔÏó
¢Ú. Óë Servlet API ñîºÏµÄ·ÃÎÊ·½Ê½
> ͨ¹ý ServletActionContext Ö±½Ó»ñÈ¡ Servlet API ¶ÔÏó
> ͨ¹ýʵÏÖ ServletXxxAware ½Ó¿ÚµÄ·½Ê½Ê¹ Struts2 ×¢Èë¶ÔÓ¦µÄ¶ÔÏó
5. Struts2 ÖеÄĬÈϰü struts-default ÓÐʲô×÷Óã¿
¢Ù. struts-default °üÊÇ struts2 ÄÚÖõģ¬Ëü¶¨ÒåÁË struts2 ÄÚ²¿µÄÖÚ¶àÀ¹½ØÆ÷ºÍ Result ÀàÐÍ£¬¶ø Struts2 ºÜ¶àºËÐĵŦÄܶ¼ÊÇͨ¹ýÕâЩÄÚÖõÄÀ¹½ØÆ÷ʵÏÖ£¬È磺´ÓÇëÇóÖаÑÇëÇó²ÎÊý·â×°µ½action¡¢ÎļþÉÏ´«ºÍÊý¾ÝÑéÖ¤µÈµÈ¶¼ÊÇͨ¹ýÀ¹½ØÆ÷ʵÏֵġ£µ±°ü¼Ì³ÐÁËstruts-default°ü²ÅÄÜʹÓÃstruts2ΪÎÒÃÇÌṩµÄÕâЩ¹¦ÄÜ¡£
¢Ú.struts-default °üÊÇÔÚ struts-default.xml Öж¨Ò壬struts-default.xml Ò²ÊÇ Struts2 ĬÈÏÅäÖÃÎļþ¡£Struts2 ÿ´Î¶¼»á×Ô¶¯¼ÓÔØ struts-default.xmlÎļþ¡£
¢Û. ͨ³£Ã¿¸ö°ü¶¼Ó¦¸Ã¼Ì³Ð struts-default °ü¡£
6. ˵³ö struts2 ÖÐÖÁÉÙ 5 ¸öµÄĬÈÏÀ¹½ØÆ÷
exception£»fileUpload£»i18n£»modelDriven£»params£»prepare£»token£»tokenSession£»validation µÈ
7. ̸̸ ValueStack£º
¢Ù. ValueStack ¹á´©Õû¸ö Action µÄÉúÃüÖÜÆÚ£¬±£´æÔÚ request ÓòÖУ¬ËùÒÔ ValueStack ºÍ request µÄÉúÃüÖÜÆÚÒ»Ñù. µ± Struts2 ½ÓÊÜÒ»¸öÇëÇóʱ£¬»áѸËÙ´´½¨ ActionContext£¬ValueStack£¬Action. È»ºó°Ñ Action ´æ·Å½ø ValueStack£¬ËùÒÔ Action µÄʵÀý±äÁ¿¿ÉÒÔ±» OGNL ·ÃÎÊ¡£ÇëÇóÀ´µÄʱºò£¬Action¡¢ValueStack µÄÉúÃü¿ªÊ¼£»ÇëÇó½áÊø£¬Action¡¢ValueStackµÄÉúÃü½áÊø
¢Ú. ÖµÕ»ÊǶàʵÀýµÄ£¬ÒòΪAction ÊǶàÀýµÄ(ºÍ Servlet ²»Ò»Ñù£¬Servelt Êǵ¥ÀýµÄ)£¬¶øÃ¿¸ö Action ¶¼ÓÐÒ»¸ö¶ÔÓ¦µÄÖµÕ»£¬Action ¶ÔÏóĬÈϱ£´æÔÚÕ»¶¥£»
¢Û. ValueStack ±¾ÖÊÉϾÍÊÇÒ»¸ö ArrayList(²é¿´Ô´´úÂëµÃµ½)£»
¢Ü. ʹÓà OGNL ·ÃÎÊÖµÕ»µÄÄÚÈÝʱ£¬²»ÐèÒª#ºÅ£¬¶ø·ÃÎÊ request¡¢session¡¢application¡¢attr ʱ£¬ÐèÒª¼Ó#ºÅ£»
¢Ý. Struts2 ÖØÐ´ÁË request µÄ getAttribute ·½·¨£¬ËùÒÔ¿ÉÒÔʹÓà EL Ö±½Ó·ÃÎÊÖµÕ»ÖеÄÄÚÈÝ
8. ActionContext¡¢ServletContext¡¢pageContextµÄÇø±ð £¿
¢Ù. ActionContext Struts2 µÄ API£ºÊǵ±Ç°µÄ Action µÄÉÏÏÂÎÄ»·¾³
¢Ú. ServletContext ºÍ PageContext ÊÇ Servlet µÄ API
9. Struts2 ÓÐÄļ¸ÖÖ½á¹ûÀàÐÍ
²Î¿´ struts-default.xml ÖеÄÏà¹ØÅäÖãºdispatcher¡¢chain¡¢redirect µÈ.
10. À¹½ØÆ÷µÄÉúÃüÖÜÆÚÓ빤×÷¹ý³Ì
ÿ¸öÀ¹½ØÆ÷¶¼ÊÇÐèҪʵÏÖ Interceptor ½Ó¿Ú
> init()£ºÔÚÀ¹½ØÆ÷±»´´½¨ºóÁ¢¼´±»µ÷ÓÃ, ËüÔÚÀ¹½ØÆ÷µÄÉúÃüÖÜÆÚÄÚÖ»±»µ÷ÓÃÒ»´Î. ¿ÉÒÔÔڸ÷½·¨ÖжÔÏà¹Ø×ÊÔ´½øÐбØÒªµÄ³õʼ»¯£»
> intercept(ActionInvocation invocation)£ºÃ¿À¹½ØÒ»¸ö¶¯×÷ÇëÇ󣬸÷½·¨¾Í»á±»µ÷ÓÃÒ»´Î£»
> destroy£º¸Ã·½·¨½«ÔÚÀ¹½ØÆ÷±»Ïú»Ù֮ǰ±»µ÷ÓÃ, ËüÔÚÀ¹½ØÆ÷µÄÉúÃüÖÜÆÚÄÚÒ²Ö»±»µ÷ÓÃÒ»´Î£»
11. ÈçºÎÔÚ Struts2 ÖÐʹÓà Ajax ¹¦ÄÜ
¢Ù. JSON plugin
¢Ú. DOJO plugin
¢Û. DWR plugin
¢Ü. ʹÓà Stream ½á¹ûÀàÐÍ.