인터셉트


WebMVC 모듈은 YMPv2.0의 새로운 기능을 기반으로 하며 기본적으로 AOP 메서드 차단을 지원합니다.

@Before: 선언된 클래스 또는 메서드의 전면 인터셉터를 설정하는 데 사용됩니다. 인터셉터는 클래스의 모든 메소드에 적용됩니다.

@After: 클래스 또는 파티의 포스트 인터셉터를 설정하는 데 사용됩니다. 클래스에 선언된 포스트 인터셉터는 클래스의 모든 메소드에 적용됩니다.

@Clean: 클래스의 모든 또는 지정된 인터셉터를 정리하는 데 사용되며 정리된 인터셉터는 실행되지 않습니다.

@ContextParam: 컨텍스트 매개변수를 설정하는 데 사용되며 주로 매개변수 구성을 인터셉터에 전달하는 데 사용됩니다. : 메소드를 선언하면 모든 인터셉터 구성이 무시됩니다.

Explanation

: @Ignored 주석이 달린 메소드, 비공개 메소드, Object 클래스 메소드 및 Object 클래스 오버로드 메소드 선언은 인터셉터에 의해 처리되지 않습니다.

샘플 코드:

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