インターセプト


WebMVC モジュールは YMPv2.0 の新機能に基づいており、AOP メソッド インターセプトをネイティブにサポートしています。次のアノテーションによって構成されます:

@Before: で宣言されたクラスまたはメソッドのフロント インターセプターを設定するために使用されます。クラス。インターセプターはクラスのすべてのメソッドに適用されます。

@After: クラスまたはパーティーのポストインターセプターを設定するために使用されます。クラスで宣言されたポストインターセプターは、クラスのすべてのメソッドに適用されます。 ;

@Clean: クラス上のすべてまたは指定されたインターセプターをクリーンアップするために使用され、クリーンアップされたインターセプターは実行されません。

@ContextParam: コンテキスト パラメーターを設定するために使用され、主にパラメーター設定をインターセプターに渡すために使用されます。 : メソッドを宣言すると、すべてのインターセプター設定が無視されます。

説明

: @Ignored アノテーション付きメソッド、非パブリック メソッド、オブジェクト クラス メソッド、およびオブジェクト クラスのオーバーロードされたメソッドの宣言は、インターセプターによって処理されません。

サンプルコード:

    // 创建自定义拦截器
    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");
        }
    }