Óï·¨±ê×¢½âÊÍ
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Ö®ºó±»ÄæÐòÖ´ÐС£