インターセプト
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"); } }