struts2À¹½ØÆ÷Ïê½â ÏÂÔØ±¾ÎÄ

Óï·¨±ê×¢½âÊÍ

interceptorÓ¢Òô£º[,int?'sept?]

ÔÚ֮ǰµÄÎÄÕÂÖУ¬ÎÒÃÇÒѾ­Éæ¼°µ½ÁËÀ¹½ØÆ÷£¨Interceptor£©µÄ¸ÅÄî¡£ downpour дµÀ

À¹½ØÆ÷ÊÇAOPÖеĸÅÄËü±¾ÉíÊÇÒ»¶Î´úÂ룬¿ÉÒÔͨ¹ý¶¨Òå¡°Ö¯Èëµã¡±£¬À´Ö¸¶¨À¹½ØÆ÷µÄ´úÂëÔÚ¡°Ö¯Èëµã¡±µÄǰºóÖ´ÐУ¬´Ó¶øÆðµ½À¹½ØµÄ×÷Óá£ÕýÈçÉÏÃæ Struts2µÄReferenceÖн²ÊöµÄ£¬Struts2µÄInterceptor£¬ÆäÀ¹½ØµÄ¶ÔÏóÊÇAction´úÂ룬¿ÉÒÔ¶¨ÒåÔÚAction´úÂë֮ǰ»òÕßÖ®ºóÖ´ÐÐÀ¹½ØÆ÷µÄ´úÂë¡£

½ÓÏÂÀ´£¬ÎÒÃǽ«ÖصãÌÖÂÛÒ»ÏÂStruts2ÖеÄÀ¹½ØÆ÷µÄÄÚ²¿½á¹¹ºÍÖ´ÐÐ˳Ðò£¬²¢½áºÏÔ´Âë½øÐзÖÎö¡£ Ä¿ ¼ [ - ]

1. Interceptor½á¹¹ 2. InterceptorÖ´ÐзÖÎö 3. Ô´Âë½âÎö

Interceptor½á¹¹

ÈÃÎÒÃÇÔÙÀ´»Ø¹ËÒ»ÏÂ֮ǰÎÒÃÇÔø¾­ÓùýµÄÒ»ÕÅAction LifeCycleµÄͼ£º

ͼÖУ¬ÎÒÃÇ¿ÉÒÔ·¢ÏÖ£¬Struts2µÄInterceptorÒ»²ãÒ»²ã£¬°ÑAction°ü¹üÔÚ×îÀïÃæ¡£ÕâÑùµÄ½á¹¹£¬´ó¸ÅÓÐÒÔÏÂÒ»Ð©ÌØµã£º

1. Õû¸ö½á¹¹¾ÍÈçͬһ¸ö¶ÑÕ»£¬³ýÁËActionÒÔÍ⣬¶ÑÕ»ÖÐµÄÆäËûÔªËØÊÇInterceptor

2. ActionλÓÚ¶ÑÕ»µÄµ×²¿¡£ÓÉÓÚ¶ÑÕ»\ÏȽøºó³ö\µÄÌØÐÔ£¬Èç¹ûÎÒÃÇÊÔͼ°ÑActionÄóöÀ´Ö´ÐУ¬ÎÒÃDZØÐëÊ×ÏȰÑλÓÚActionÉ϶˵ÄInterceptorÄóöÀ´Ö´ÐС£ÕâÑù£¬Õû¸öÖ´ÐоÍÐγÉÁËÒ»¸öµÝ¹éµ÷ÓÃ

3. ÿ¸öλÓÚ¶ÑÕ»ÖеÄInterceptor£¬³ýÁËÐèÒªÍê³ÉËü×ÔÉíµÄÂß¼­£¬»¹ÐèÒªÍê³ÉÒ»¸öÌØÊâµÄÖ´ÐÐÖ°Ôð¡£Õâ¸öÖ´ÐÐÖ°ÔðÓÐ3ÖÖÑ¡Ôñ£º

1) ÖÐÖ¹Õû¸öÖ´ÐУ¬Ö±½Ó·µ»ØÒ»¸ö×Ö·û´®×÷ΪresultCode

2) ͨ¹ýµÝ¹éµ÷ÓøºÔðµ÷ÓöÑÕ»ÖÐÏÂÒ»¸öInterceptorµÄÖ´ÐÐ

3) Èç¹ûÔÚ¶ÑÕ»ÄÚÒѾ­²»´æÔÚÈκεÄInterceptor£¬µ÷ÓÃAction

Struts2µÄÀ¹½ØÆ÷½á¹¹µÄÉè¼Æ£¬Êµ¼ÊÉÏÊÇÒ»¸öµäÐ͵ÄÔðÈÎÁ´Ä£Ê½µÄÓ¦Óá£Ê×ÏȽ«Õû¸öÖ´Ðл®·Ö³ÉÈô¸ÉÏàͬÀàÐ͵ÄÔªËØ£¬Ã¿¸öÔªËØ¾ß±¸²»Í¬µÄÂß¼­ÔðÈΣ¬²¢½«ËûÃÇÄÉÈëµ½Ò»¸öÁ´Ê½µÄÊý¾Ý½á¹¹ÖУ¨ÎÒÃÇ¿ÉÒ԰ѶÑÕ»½á¹¹Ò²¿´×÷ÊÇÒ»¸öµÝ¹éµÄÁ´Ê½½á¹¹£©£¬¶øÃ¿¸öÔªËØÓÖÓÐÔðÈθºÔðÁ´Ê½½á¹¹ÖÐÏÂÒ»¸öÔªËØµÄÖ´Ðе÷Óá£

ÕâÑùµÄÉè¼Æ£¬´Ó´úÂëÖØ¹¹µÄ½Ç¶ÈÀ´¿´£¬Êµ¼ÊÉÏÊǽ«Ò»¸ö¸´ÔÓµÄϵͳ£¬·Ö¶øÖÎÖ®£¬´Ó¶øÊ¹µÃÿ¸ö²¿·ÖµÄÂß¼­Äܹ»¸ß¶ÈÖØÓò¢¾ß±¸¸ß¶È¿ÉÀ©Õ¹ÐÔ¡£ËùÒÔ£¬Interceptor½á¹¹ÊµÔÚÊÇStruts2/XworkÉè¼ÆÖеľ«»ªÖ®±Ê¡£

InterceptorÖ´ÐзÖÎö

InterceptorµÄ¶¨Òå

ÎÒÃÇÀ´¿´Ò»ÏÂInterceptorµÄ½Ó¿ÚµÄ¶¨Ò壺 Java´úÂë

1. public interface Interceptor extends Serializable { 2.

3. /**

4. * Called to let an interceptor clean up any resources it has allocated.

5. */

6. void destroy(); 7.

8. /**

9. * Called after an interceptor is created, but before any requests are processed using

10. * {@link #intercept(com.opensymphony.xwork2.ActionInvocation) intercept} , giving

11. * the Interceptor a chance to initialize any needed resources. 12. */

13. void init(); 14.

15. /**

16. * Allows the Interceptor to do some processing on the request before and/or after the rest of the processing of the 17. * request by the {@link ActionInvocation} or to short-circuit the processing and just return a String return code. 18. *

19. * @return the return code, either returned from {@link ActionInvocation#invoke()}, or from the interceptor itself.

20. * @throws Exception any system-level error, as defined in {@link com.opensymphony.xwork2.Action#execute()}. 21. */

22. String intercept(ActionInvocation invocation) throws Exception; 23.}

InterceptorµÄ½Ó¿Ú¶¨ÒåûÓÐÊ²Ã´ÌØ±ðµÄµØ·½£¬³ýÁËinitºÍdestory·½·¨ÒÔÍ⣬intercept·½·¨ÊÇʵÏÖÕû¸öÀ¹½ØÆ÷»úÖÆµÄºËÐÄ·½·¨¡£¶øËüËùÒÀÀµµÄ²ÎÊý

ActionInvocationÔòÊÇÎÒÃÇ֮ǰÕ½ÚÖÐÔø¾­Ìáµ½¹ýµÄÖøÃûµÄActionµ÷¶ÈÕß¡£

ÎÒÃÇÔÙÀ´¿´¿´Ò»¸öµäÐ͵ÄInterceptorµÄ³éÏóʵÏÖÀࣺ Java´úÂë

1. public abstract class AroundInterceptor extends AbstractInterceptor { 2.

3. /* (non-Javadoc)

4. * @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation)

5. */

6. @Override

7. public String intercept(ActionInvocation invocation) throws Exception {

8. String result = null; 9.

10. before(invocation);

11. // µ÷ÓÃÏÂÒ»¸öÀ¹½ØÆ÷£¬Èç¹ûÀ¹½ØÆ÷²»´æÔÚ£¬ÔòÖ´ÐÐAction 12. result = invocation.invoke(); 13. after(invocation, result); 14.

15. return result; 16. } 17.

18. public abstract void before(ActionInvocation invocation) throws Exception; 19.

20. public abstract void after(ActionInvocation invocation, String resultCode) throws Exception; 21. 22.}

ÔÚÕâ¸öʵÏÖÀàÖУ¬Êµ¼ÊÉÏÒѾ­ÊµÏÖÁË×î¼òµ¥µÄÀ¹½ØÆ÷µÄ³ûÐΡ£»òÐí´ó¼Ò¶ÔÕâÑùµÄ´úÂ뻹±È½ÏİÉú£¬ÕâûÓйØÏµ¡£ÎÒÔÚÕâÀïÐèÒªÖ¸³öµÄÊÇÒ»¸öºÜÖØÒªµÄ·½·¨invocation.invoke()¡£ÕâÊÇActionInvocationÖеķ½·¨£¬¶øActionInvocationÊÇActionµ÷¶ÈÕߣ¬ËùÒÔÕâ¸ö·½·¨¾ß±¸ÒÔÏÂ2²ãº¬Ò壺

1. Èç¹ûÀ¹½ØÆ÷¶ÑÕ»Öл¹ÓÐÆäËûµÄInterceptor£¬ÄÇôinvocation.invoke()½«µ÷ÓöÑÕ»ÖÐÏÂÒ»¸öInterceptorµÄÖ´ÐС£

2. Èç¹ûÀ¹½ØÆ÷¶ÑÕ»ÖÐÖ»ÓÐActionÁË£¬ÄÇôinvocation.invoke()½«µ÷ÓÃActionÖ´ÐС£

ËùÒÔ£¬ÎÒÃÇ¿ÉÒÔ·¢ÏÖ£¬invocation.invoke()Õâ¸ö·½·¨ÆäʵÊÇÕû¸öÀ¹½ØÆ÷¿ò¼ÜµÄʵÏÖºËÐÄ¡£»ùÓÚÕâÑùµÄʵÏÖ»úÖÆ£¬ÎÒÃÇ»¹¿ÉÒԵõ½ÏÂÃæ2¸ö·Ç³£ÖØÒªµÄÍÆÂÛ£º

1. Èç¹ûÔÚÀ¹½ØÆ÷ÖУ¬ÎÒÃDz»Ê¹ÓÃinvocation.invoke()À´Íê³É¶ÑÕ»ÖÐÏÂÒ»¸öÔªËØµÄµ÷Ó㬶øÊÇÖ±½Ó·µ»ØÒ»¸ö×Ö·û´®×÷ΪִÐнá¹û£¬ÄÇôÕû¸öÖ´Ðн«±»ÖÐÖ¹¡£

2. ÎÒÃÇ¿ÉÒÔÒÔinvocation.invoke()Ϊ½ç£¬½«À¹½ØÆ÷ÖеĴúÂë·Ö³É2¸ö²¿·Ö£¬ÔÚinvocation.invoke()֮ǰµÄ´úÂ룬½«»áÔÚAction֮ǰ±»ÒÀ´ÎÖ´ÐУ¬¶øÔÚinvocation.invoke()Ö®ºóµÄ´úÂ룬½«»áÔÚActionÖ®ºó±»ÄæÐòÖ´ÐС£