攔截器(Intercept)

2018-12-24 22:50 更新

WebMVC模塊基于YMPv2.0的新特性,原生支持AOP方法攔截,通過(guò)以下注解進(jìn)行配置:

@Before:用于設(shè)置一個(gè)類(lèi)或方法的前置攔截器,聲明在類(lèi)上的前置攔截器將被應(yīng)用到該類(lèi)所有方法上;

@After:用于設(shè)置一個(gè)類(lèi)或方的后置攔截器,聲明在類(lèi)上的后置攔截器將被應(yīng)用到該類(lèi)所有方法上;

@Clean:用于清理類(lèi)上全部或指定的攔截器,被清理的攔截器將不會(huì)被執(zhí)行;

@ContextParam:用于設(shè)置上下文參數(shù),主要用于向攔截器傳遞參數(shù)配置;

@Ignored:聲明一個(gè)方法將忽略一切攔截器配置;

說(shuō)明: 聲明@Ignored注解的方法、非公有方法和Object類(lèi)方法及Object類(lèi)重載方法將不被攔截器處理。

示例代碼:

    // 創(chuàng)建自定義攔截器
    public class UserSessionChecker implements IInterceptor {
        public Object intercept(InterceptContext context) throws Exception {
            // 判斷當(dāng)前攔截器執(zhí)行方向
            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");
        }
    }
以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)