Intercepter


Le module WebMVC est basé sur les nouvelles fonctionnalités de YMPv2.0 et supporte nativement l'interception de méthode AOP. Il est configuré via les annotations suivantes :

@Avant : utilisé pour définir l'intercepteur frontal d'une classe ou d'une méthode, déclarée sur. la classe. L'intercepteur sera appliqué à toutes les méthodes de la classe ;

@After : utilisé pour définir le post-intercepteur d'une classe ou d'un groupe. Le post-intercepteur déclaré sur la classe sera appliqué à toutes les méthodes de la classe.

@Clean : utilisé pour nettoyer tous les intercepteurs spécifiés sur la classe, les intercepteurs nettoyés ne seront pas exécutés

@ContextParam : utilisé pour définir les paramètres de contexte, principalement utilisé pour transmettre la configuration des paramètres à l'intercepteur ; : La déclaration d'une méthode ignorera toutes les configurations de l'intercepteur ;

Explication

 : La déclaration des méthodes annotées @Ignored, des méthodes non publiques, des méthodes de classe Object et des méthodes surchargées de classe Object ne seront pas traitées par l'intercepteur.

Exemple de code :

    // 创建自定义拦截器
    public class UserSessionChecker implements IInterceptor {
        public Object intercept(InterceptContext context) throws Exception {
            // 判断当前拦截器执行方向
            if (context.getDirection().equals(Direction.BEFORE)
                    && WebContext.getRequest().getSession(false) == null) {
                return View.redirectView("/user/login");
            }
            return null;
        }
    }

    @Controller
    @RequestMapping("/user")
    @Before(UserSessionChecker.class)
    public class Controller {

        @RequestMapping("/center")
        public IView userCenter() throws Exception {
            // ......
            return View.jspView("/user/center");
        }

        @RequestMapping("/login")
        @Clean
        public IView userLogin() throws Exception {
            return View.jspView("/user/login");
        }
    }