我写了一个AOP的拦截器,该拦截器的作用是在调用目标方法前,先判断用户是否有权限调用该方法(其实也就是一个小的权限检测),如果权限不够的话,直接跳到登陆页且不执行目标方法。但我发现在拦截器里跳至登陆页以后,由于是AOP,他又执行了目标方法。请问该如何阻止AOP去执行目标方法呢?

解决方案 »

  1.   

    当权限不够时抛出异常,它就不会执行目标方法了;
    比如当权限不够时抛出UnLoginException(这个自己定义), 然后在catch异常, 作出你所说的转到登录页面去;
      

  2.   

    OK,明白!!!!thanks,你真是帮了我大忙了!我去试试,
      

  3.   

    刚才试了试好像不行,它还是去执行了目标方法
    代码如下:
    HttpServletRequest request = (HttpServletRequest) jp.getArgs()[ 2 ];
    HttpServletResponse response = (HttpServletResponse) jp.getArgs()[ 3 ];
    String loginDo = Messages.getString( "com.rmdkt.common.loginDo" );
    try {
    HttpSession session = request.getSession();
    if ( null == session.getAttribute( "loginInfo" ) ) 
    throw new MyCustomException();
    }
    } catch ( MyCustomException e ) {
    try {
    request.getRequestDispatcher( loginDo ).forward( request,
    response );
    } catch ( Exception e1 ) 
    }
    }
    不知道哪儿错了?
      

  4.   

    环绕通知应该可以 网上google一下