org.springframework.web.bind.annotation.RequestMapping#value ( )源码实例Demo

下面列出了org.springframework.web.bind.annotation.RequestMapping#value ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

/**
 * 创建匹配条件
 *
 * @param clazz
 * @return
 */
private static RequestCondition<ApiVersionCondition> createCondition(Class<?> clazz) {
    RequestMapping classRequestMapping = AnnotationUtils.findAnnotation(clazz, RequestMapping.class);
    if (classRequestMapping == null) {
        return null;
    }
    StringBuilder mappingUrlBuilder = new StringBuilder();
    if (classRequestMapping.value().length > 0) {
        mappingUrlBuilder.append(classRequestMapping.value()[0]);
    }
    String mappingUrl = mappingUrlBuilder.toString();
    if (!mappingUrl.contains("{version}") || !mappingUrl.contains("{v}")) {
        return null;
    }
    ApiVersion apiVersion = AnnotationUtils.findAnnotation(clazz, ApiVersion.class);
    return apiVersion == null ? new ApiVersionCondition(1) : new ApiVersionCondition(apiVersion.value());
}
 
源代码2 项目: lams   文件: AnnotationMethodHandlerAdapter.java
@Override
protected boolean isHandlerMethod(Method method) {
	if (this.mappings.containsKey(method)) {
		return true;
	}
	RequestMapping mapping = AnnotationUtils.findAnnotation(method, RequestMapping.class);
	if (mapping != null) {
		String[] patterns = mapping.value();
		RequestMethod[] methods = new RequestMethod[0];
		String[] params = new String[0];
		String[] headers = new String[0];
		if (!hasTypeLevelMapping() || !Arrays.equals(mapping.method(), getTypeLevelMapping().method())) {
			methods = mapping.method();
		}
		if (!hasTypeLevelMapping() || !Arrays.equals(mapping.params(), getTypeLevelMapping().params())) {
			params = mapping.params();
		}
		if (!hasTypeLevelMapping() || !Arrays.equals(mapping.headers(), getTypeLevelMapping().headers())) {
			headers = mapping.headers();
		}
		RequestMappingInfo mappingInfo = new RequestMappingInfo(patterns, methods, params, headers);
		this.mappings.put(method, mappingInfo);
		return true;
	}
	return false;
}
 
源代码3 项目: spring-analysis-note   文件: CrossOriginTests.java
@Override
protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
	RequestMapping annotation = AnnotatedElementUtils.findMergedAnnotation(method, RequestMapping.class);
	if (annotation != null) {
		return new RequestMappingInfo(
				new PatternsRequestCondition(annotation.value(), getUrlPathHelper(), getPathMatcher(), true, true),
				new RequestMethodsRequestCondition(annotation.method()),
				new ParamsRequestCondition(annotation.params()),
				new HeadersRequestCondition(annotation.headers()),
				new ConsumesRequestCondition(annotation.consumes(), annotation.headers()),
				new ProducesRequestCondition(annotation.produces(), annotation.headers()), null);
	}
	else {
		return null;
	}
}
 
@Override
protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
	RequestMapping annot = AnnotationUtils.findAnnotation(method, RequestMapping.class);
	if (annot != null) {
		return new RequestMappingInfo(
			new PatternsRequestCondition(annot.value(), getUrlPathHelper(), getPathMatcher(), true, true),
			new RequestMethodsRequestCondition(annot.method()),
			new ParamsRequestCondition(annot.params()),
			new HeadersRequestCondition(annot.headers()),
			new ConsumesRequestCondition(annot.consumes(), annot.headers()),
			new ProducesRequestCondition(annot.produces(), annot.headers()), null);
	}
	else {
		return null;
	}
}
 
源代码5 项目: swagger-maven-plugin   文件: SpringUtils.java
/**
    * Extracts all routes from the annotated class
    *
    * @param controllerClazz
    *            Instrospected class
    * @return At least 1 route value (empty string)
    */
   public static String[] getControllerResquestMapping(Class<?> controllerClazz) {
String[] controllerRequestMappingValues = {};

// Determine if we will use class-level requestmapping or dummy string
RequestMapping classRequestMapping = AnnotationUtils.findAnnotation(controllerClazz, RequestMapping.class);
if (classRequestMapping != null) {
    controllerRequestMappingValues = classRequestMapping.value();
}

if (controllerRequestMappingValues.length == 0) {
    controllerRequestMappingValues = new String[1];
    controllerRequestMappingValues[0] = "";
}
return controllerRequestMappingValues;
   }
 
源代码6 项目: java-technology-stack   文件: CrossOriginTests.java
@Override
protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
	RequestMapping annotation = AnnotatedElementUtils.findMergedAnnotation(method, RequestMapping.class);
	if (annotation != null) {
		return new RequestMappingInfo(
				new PatternsRequestCondition(annotation.value(), getUrlPathHelper(), getPathMatcher(), true, true),
				new RequestMethodsRequestCondition(annotation.method()),
				new ParamsRequestCondition(annotation.params()),
				new HeadersRequestCondition(annotation.headers()),
				new ConsumesRequestCondition(annotation.consumes(), annotation.headers()),
				new ProducesRequestCondition(annotation.produces(), annotation.headers()), null);
	}
	else {
		return null;
	}
}
 
@Override
protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
	RequestMapping annot = AnnotationUtils.findAnnotation(method, RequestMapping.class);
	if (annot != null) {
		return new RequestMappingInfo(
			new PatternsRequestCondition(annot.value(), getUrlPathHelper(), getPathMatcher(), true, true),
			new RequestMethodsRequestCondition(annot.method()),
			new ParamsRequestCondition(annot.params()),
			new HeadersRequestCondition(annot.headers()),
			new ConsumesRequestCondition(annot.consumes(), annot.headers()),
			new ProducesRequestCondition(annot.produces(), annot.headers()), null);
	}
	else {
		return null;
	}
}
 
@Override
protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
	RequestMapping annotation = AnnotationUtils.findAnnotation(method, RequestMapping.class);
	if (annotation != null) {
		return new RequestMappingInfo(
			new PatternsRequestCondition(annotation.value(), getUrlPathHelper(), getPathMatcher(), true, true),
			new RequestMethodsRequestCondition(annotation.method()),
			new ParamsRequestCondition(annotation.params()),
			new HeadersRequestCondition(annotation.headers()),
			new ConsumesRequestCondition(annotation.consumes(), annotation.headers()),
			new ProducesRequestCondition(annotation.produces(), annotation.headers()), null);
	}
	else {
		return null;
	}
}
 
private void logException(Object handler, Exception exception, Map<String, String[]> parameterMap) {
    if (handler != null && HandlerMethod.class.isAssignableFrom(handler.getClass())) {
        try {
            HandlerMethod handlerMethod = (HandlerMethod) handler;
            Class<?> beanType = handlerMethod.getBeanType();
            String methodName = handlerMethod.getMethod().getName();
            RequestMapping controllerRequestMapping = beanType.getDeclaredAnnotation(RequestMapping.class);
            String classMapping = "";
            if (controllerRequestMapping != null) {
                classMapping = controllerRequestMapping.value()[0];
            }
            RequestMapping methodRequestMapping = handlerMethod.getMethodAnnotation(RequestMapping.class);
            String methodMapping = "";
            if (methodRequestMapping != null) {
                methodMapping = methodRequestMapping.value()[0];
            }
            if (!methodMapping.startsWith("/")) {
                methodMapping = "/" + methodMapping;
            }
            Logger logger = LoggerFactory.getLogger(beanType);
            logger.error("RequestMapping is:");
            logger.error(classMapping + methodMapping);
            logger.error("HandlerMethod is:");
            logger.error(beanType.getSimpleName() + "." + methodName + "()");
            logger.error("ParameterMap is:");
            logger.error(JsonUtils.toJson(parameterMap), exception);
        } catch (Exception e) {
            LOGGER.error(handler + " execute failed.", exception);
        }
    } else {
        LOGGER.error(handler + " execute failed.", exception);
    }
}
 
private void buildExceptionMetadata(ExceptionMetadata exceptionMetadata, Object handler,
                                    HttpServletRequest request) {
    if (handler != null && HandlerMethod.class.isAssignableFrom(handler.getClass())) {
        HandlerMethod handlerMethod = (HandlerMethod)handler;
        Class<?> beanType = handlerMethod.getBeanType();
        String methodName = handlerMethod.getMethod().getName();
        RequestMapping controllerRequestMapping = beanType.getDeclaredAnnotation(RequestMapping.class);
        String classMapping = "";
        if (controllerRequestMapping != null) {
            classMapping = controllerRequestMapping.value()[0];
        }
        RequestMapping methodRequestMapping = handlerMethod.getMethodAnnotation(RequestMapping.class);
        String methodMapping = "";
        if (methodRequestMapping != null) {
            methodMapping = methodRequestMapping.value()[0];
        }
        if (!methodMapping.startsWith("/")) {
            methodMapping = "/" + methodMapping;
        }
        exceptionMetadata.setHandlerMethod(true);
        exceptionMetadata.setBeanType(beanType);
        exceptionMetadata.setMethodName(methodName);
        exceptionMetadata.setClassMapping(classMapping);
        exceptionMetadata.setMethodMapping(methodMapping);
        exceptionMetadata.setParameterMap(request.getParameterMap());
    } else {
        exceptionMetadata.setHandlerMethod(false);
    }
}
 
源代码11 项目: zxl   文件: AbstractSpringmvcAction.java
@SuppressWarnings("unchecked")
public AbstractSpringmvcAction() {
	super();
	try {
		this.clazz = ((Class<T>) ReflectUtil.getParameterizedType(getClass()));
		RequestMapping mapping = getClass().getAnnotation(RequestMapping.class);
		this.mapping = mapping.value()[0];
	} catch (NullPointerException nullPointerException) {
		LogUtil.error(LOGGER, "Instantiation error", nullPointerException);
	}
}
 
/**
 * Register all handlers specified in the Portlet mode map for the corresponding modes.
 * @throws org.springframework.beans.BeansException if the handler couldn't be registered
 */
protected void detectHandlers() throws BeansException {
	ApplicationContext context = getApplicationContext();
	String[] beanNames = context.getBeanNamesForType(Object.class);
	for (String beanName : beanNames) {
		Class<?> handlerType = context.getType(beanName);
		RequestMapping mapping = context.findAnnotationOnBean(beanName, RequestMapping.class);
		if (mapping != null) {
			// @RequestMapping found at type level
			String[] modeKeys = mapping.value();
			String[] params = mapping.params();
			boolean registerHandlerType = true;
			if (modeKeys.length == 0 || params.length == 0) {
				registerHandlerType = !detectHandlerMethods(handlerType, beanName, mapping);
			}
			if (registerHandlerType) {
				AbstractParameterMappingPredicate predicate = new TypeLevelMappingPredicate(
						params, mapping.headers(), mapping.method());
				for (String modeKey : modeKeys) {
					registerHandler(new PortletMode(modeKey), beanName, predicate);
				}
			}
		}
		else if (AnnotationUtils.findAnnotation(handlerType, Controller.class) != null) {
			detectHandlerMethods(handlerType, beanName, mapping);
		}
	}
}
 
@Override
protected void processAnnotationOnMethod(MethodMetadata data, Annotation methodAnnotation, Method method) {
    if (!RequestMapping.class.isInstance(methodAnnotation)
        && !methodAnnotation.annotationType().isAnnotationPresent(RequestMapping.class)) {
        return;
    }

    RequestMapping methodMapping = findMergedAnnotation(method, RequestMapping.class);

    RequestMethod[] methods = methodMapping.method();
    if (methods.length == 0) {
        methods = new RequestMethod[] {RequestMethod.GET};
    }
    checkOne(method, methods, "method");
    data.template().method(methods[0].name());

    checkAtMostOne(method, methodMapping.value(), "value");
    if (methodMapping.value().length > 0) {
        String pathValue = emptyToNull(methodMapping.value()[0]);
        if (pathValue != null) {
            pathValue = resolve(pathValue);

            if (!pathValue.startsWith("/") && !data.template().toString().endsWith("/")) {
                pathValue = "/" + pathValue;
            }
            data.template().append(pathValue);
        }
    }

    parseProduces(data, method, methodMapping);

    parseConsumes(data, method, methodMapping);

    parseHeaders(data, method, methodMapping);

    data.indexToExpander(new LinkedHashMap<Integer, Param.Expander>());
}
 
private void logException(Object handler, Exception exception, Map<String, String[]> parameterMap) {
    if (handler != null && HandlerMethod.class.isAssignableFrom(handler.getClass())) {
        try {
            HandlerMethod handlerMethod = (HandlerMethod) handler;
            Class<?> beanType = handlerMethod.getBeanType();
            String methodName = handlerMethod.getMethod().getName();
            RequestMapping controllerRequestMapping = beanType.getDeclaredAnnotation(RequestMapping.class);
            String classMapping = "";
            if (controllerRequestMapping != null) {
                classMapping = controllerRequestMapping.value()[0];
            }
            RequestMapping methodRequestMapping = handlerMethod.getMethodAnnotation(RequestMapping.class);
            String methodMapping = "";
            if (methodRequestMapping != null) {
                methodMapping = methodRequestMapping.value()[0];
            }
            if (!methodMapping.startsWith("/")) {
                methodMapping = "/" + methodMapping;
            }
            Logger logger = LoggerFactory.getLogger(beanType);
            logger.error("RequestMapping is:");
            logger.error(classMapping + methodMapping);
            logger.error("HandlerMethod is:");
            logger.error(beanType.getSimpleName() + "." + methodName + "()");
            logger.error("ParameterMap is:");
            logger.error(JsonUtils.toJson(parameterMap), exception);
        } catch (Exception e) {
            LOGGER.error(handler + " execute failed.", exception);
        }
    } else {
        LOGGER.error(handler + " execute failed.", exception);
    }
}
 
源代码15 项目: disconf   文件: RoleResourceAspect.java
/**
 * 判断当前用户对访问的方法是否有权限
 *
 * @param pjp            方法
 * @param requestMapping 方法上的annotation
 *
 * @return
 *
 * @throws Throwable
 */
@Around("anyPublicMethod() && @annotation(requestMapping) && [email protected](com.baidu.dsp.common.annotation.NoAuth)")
public Object decideAccess(ProceedingJoinPoint pjp, RequestMapping requestMapping) throws Throwable {

    // 获取method上的url,若未标注value则默认为空字符串
    String[] values = requestMapping.value();
    String methodUrl = "";
    if (values.length != 0) {
        methodUrl = values[0];
    }

    String clsUrl = pjp.getTarget().getClass().getAnnotation(RequestMapping.class).value()[0];

    // 拼接method和class上标注的url
    if (!clsUrl.endsWith(RoleResourceConstant.URL_SPLITOR) &&
            !methodUrl.startsWith(RoleResourceConstant.URL_SPLITOR)) {
        clsUrl += RoleResourceConstant.URL_SPLITOR;
    }

    String urlPattarn = clsUrl + methodUrl;
    if (!urlPattarn.endsWith(RoleResourceConstant.URL_SPLITOR)) {
        urlPattarn += RoleResourceConstant.URL_SPLITOR;
    }

    if (noAuthCheckUrl != null && noAuthCheckUrl.contains(urlPattarn)) {

        LOG.info("don't need to check this url: " + urlPattarn);
    } else {

        // 获取method上标注的http method,若未标注method则默认为GET
        RequestMethod[] methods = requestMapping.method();
        RequestMethod methodType = RequestMethod.GET;
        if (methods.length != 0) {
            methodType = methods[0];
        }

        String urlInfo = urlPattarn + ", method:" + methodType.toString();

        // 获取用户角色
        Visitor visitor = ThreadContext.getSessionVisitor();
        if (visitor == null) {
            LOG.warn("No session visitor!");
            throw new AccessDeniedException("No session visitor! " + urlInfo);
        }
        Integer roleId = visitor.getRoleId();
        String visitorInfo = ", UserId:" + visitor.getId() + ", RoleId:" + roleId;

        Boolean isPriviledged = true;
        // 判断用户是否有权限访问方法
        if (!this.isMethodAccessible(urlPattarn, methodType, roleId)) {
            isPriviledged = false;
            throw new AccessDeniedException("Access Denied: " + urlInfo + visitorInfo);
        }
        LOG.info("Accessing URL:" + urlInfo + visitorInfo + ", Is priviledged:" + isPriviledged.toString());
    }

    Object rtnOb = null;

    try {
        // 执行方法
        rtnOb = pjp.proceed();
    } catch (Throwable t) {
        LOG.info(t.getMessage());
        throw t;
    }

    return rtnOb;
}
 
源代码16 项目: venus-cloud-feign   文件: VenusSpringMvcContract.java
@Override
protected void processAnnotationOnMethod(MethodMetadata data,
                                         Annotation methodAnnotation, Method method) {
    if (!RequestMapping.class.isInstance(methodAnnotation) && !methodAnnotation
            .annotationType().isAnnotationPresent(RequestMapping.class)) {
        return;
    }

    RequestMapping methodMapping = findMergedAnnotation(method, RequestMapping.class);
    // HTTP Method
    RequestMethod[] methods = methodMapping.method();
    if (methods.length == 0) {
        methods = new RequestMethod[] { RequestMethod.GET };
    }
    checkOne(method, methods, "method");
    data.template().method(methods[0].name());

    // path
    checkAtMostOne(method, methodMapping.value(), "value");
    if (methodMapping.value().length > 0) {
        String pathValue = emptyToNull(methodMapping.value()[0]);
        if (pathValue != null) {
            pathValue = resolve(pathValue);
            // Append path from @RequestMapping if value is present on method
            if (!pathValue.startsWith("/")
                    && !data.template().toString().endsWith("/")) {
                pathValue = "/" + pathValue;
            }
            data.template().append(pathValue);
        }
    }

    // produces
    parseProduces(data, method, methodMapping);

    // consumes
    parseConsumes(data, method, methodMapping);

    // headers
    parseHeaders(data, method, methodMapping);

    data.indexToExpander(new LinkedHashMap<Integer, Param.Expander>());
}
 
源代码17 项目: efo   文件: WebInterceptor.java
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws
        Exception {
    String url = request.getServletPath();
    InterceptorLevel level = InterceptorLevel.NONE;
    if (handler instanceof HandlerMethod) {
        AuthInterceptor interceptor = ((HandlerMethod) handler).getMethodAnnotation(AuthInterceptor.class);
        //注解到类上面的注解,无法直接获取,只能通过扫描
        if (Checker.isNull(interceptor)) {
            for (Class<?> type : EfoApplication.controllers) {
                RequestMapping mapping = type.getAnnotation(RequestMapping.class);
                if (Checker.isNotNull(mapping)) {
                    for (String path : mapping.value()) {
                        if (url.startsWith(path)) {
                            interceptor = type.getAnnotation(AuthInterceptor.class);
                            break;
                        }
                    }
                    break;
                }
            }
        }
        if (Checker.isNotNull(interceptor)) {
            level = interceptor.value();
        }
    }
    User user = (User) request.getSession().getAttribute(ValueConsts.USER_STRING);
    if (Checker.isNull(user)) {
        //读取token,自动登录
        Cookie cookie = HttpUtils.getCookie(ValueConsts.TOKEN_STRING, request.getCookies());
        if (Checker.isNotNull(cookie)) {
            user = userService.login(ValueConsts.EMPTY_STRING, ValueConsts.EMPTY_STRING, cookie.getValue(),
                    response);
            if (Checker.isNotNull(user)) {
                request.getSession().setAttribute(ValueConsts.USER_STRING, user);
            }
        }
    }
    if (level != InterceptorLevel.NONE) {
        boolean isRedirect = Checker.isNull(user) || (level == InterceptorLevel.ADMIN && user.getPermission() <
                2) || (level == InterceptorLevel.SYSTEM && user.getPermission() < 3);
        if (isRedirect) {
            response.sendRedirect(DefaultValues.SIGNIN_PAGE);
            return false;
        }
    }
    return true;
}
 
源代码18 项目: raptor   文件: SpringMvcContract.java
@Override
protected void processAnnotationOnMethod(MethodMetadata data,
                                         Annotation methodAnnotation, Method method) {
    if (!RequestMapping.class.isInstance(methodAnnotation) && !methodAnnotation
            .annotationType().isAnnotationPresent(RequestMapping.class)) {
        return;
    }

    RequestMapping methodMapping = findMergedAnnotation(method, RequestMapping.class);
    // HTTP Method
    RequestMethod[] methods = methodMapping.method();
    if (methods.length == 0) {
        methods = new RequestMethod[]{RequestMethod.GET};
    }
    checkOne(method, methods, "method");
    data.template().method(methods[0].name());

    // path
    checkAtMostOne(method, methodMapping.value(), "value");
    if (methodMapping.value().length > 0) {
        String pathValue = emptyToNull(methodMapping.value()[0]);
        if (pathValue != null) {
            pathValue = resolve(pathValue);
            // Append path from @RequestMapping if value is present on method
            if (!pathValue.startsWith("/")
                    && !data.template().toString().endsWith("/")) {
                pathValue = "/" + pathValue;
            }
            data.template().append(pathValue);
        }
    }

    // produces
    parseProduces(data, method, methodMapping);

    // consumes
    parseConsumes(data, method, methodMapping);

    // headers
    parseHeaders(data, method, methodMapping);

    data.indexToExpander(new LinkedHashMap<Integer, Param.Expander>());
}
 
源代码19 项目: GreenSummer   文件: LogOperationAspect.java
private String extractOperationName(
    Method method) {
  try {
    final String operationName;
    RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
    GetMapping getMapping = method.getAnnotation(GetMapping.class);
    PostMapping postMapping = method.getAnnotation(PostMapping.class);
    PutMapping putMapping = method.getAnnotation(PutMapping.class);
    DeleteMapping deleteMapping = method.getAnnotation(DeleteMapping.class);
    PatchMapping patchMapping = method.getAnnotation(PatchMapping.class);
    LogOperation logOperation = method.getAnnotation(LogOperation.class);
    RequestMapping classrequestMapping = method.getDeclaringClass().getAnnotation(RequestMapping.class);
    String basicName = null;
    if (logOperation != null && logOperation.value() != null && logOperation.value().trim().length() > 0) {
      operationName = logOperation.value();
    } else {
      if (requestMapping != null && requestMapping.value() != null && requestMapping.value().length > 0) {
        basicName = requestMapping.value()[0];
      } else if (getMapping != null && getMapping.value() != null && getMapping.value().length > 0) {
        basicName = getMapping.value()[0];
      } else if (postMapping != null && postMapping.value() != null && postMapping.value().length > 0) {
        basicName = postMapping.value()[0];
      } else if (putMapping != null && putMapping.value() != null && putMapping.value().length > 0) {
        basicName = putMapping.value()[0];
      } else if (deleteMapping != null && deleteMapping.value() != null && deleteMapping.value().length > 0) {
        basicName = deleteMapping.value()[0];
      } else if (patchMapping != null && patchMapping.value() != null && patchMapping.value().length > 0) {
        basicName = patchMapping.value()[0];
      }
      if (basicName != null) {
        if (classrequestMapping != null && classrequestMapping.value() != null && classrequestMapping.value().length > 0) {
          operationName = classrequestMapping.value()[0] + basicName;
        } else {
          operationName = basicName;
        }
      } else {
        operationName = null;
      }
    }
    return operationName;
  } catch (Exception e) {
    log.error("Error extracting arguments from method", e);
    return null;
  }
}
 
源代码20 项目: disconf   文件: RoleResourceAspect.java
/**
 * 判断当前用户对访问的方法是否有权限
 *
 * @param pjp            方法
 * @param requestMapping 方法上的annotation
 *
 * @return
 *
 * @throws Throwable
 */
@Around("anyPublicMethod() && @annotation(requestMapping) && [email protected](com.baidu.dsp.common.annotation.NoAuth)")
public Object decideAccess(ProceedingJoinPoint pjp, RequestMapping requestMapping) throws Throwable {

    // 获取method上的url,若未标注value则默认为空字符串
    String[] values = requestMapping.value();
    String methodUrl = "";
    if (values.length != 0) {
        methodUrl = values[0];
    }

    String clsUrl = pjp.getTarget().getClass().getAnnotation(RequestMapping.class).value()[0];

    // 拼接method和class上标注的url
    if (!clsUrl.endsWith(RoleResourceConstant.URL_SPLITOR) &&
            !methodUrl.startsWith(RoleResourceConstant.URL_SPLITOR)) {
        clsUrl += RoleResourceConstant.URL_SPLITOR;
    }

    String urlPattarn = clsUrl + methodUrl;
    if (!urlPattarn.endsWith(RoleResourceConstant.URL_SPLITOR)) {
        urlPattarn += RoleResourceConstant.URL_SPLITOR;
    }

    if (noAuthCheckUrl != null && noAuthCheckUrl.contains(urlPattarn)) {

        LOG.info("don't need to check this url: " + urlPattarn);
    } else {

        // 获取method上标注的http method,若未标注method则默认为GET
        RequestMethod[] methods = requestMapping.method();
        RequestMethod methodType = RequestMethod.GET;
        if (methods.length != 0) {
            methodType = methods[0];
        }

        String urlInfo = urlPattarn + ", method:" + methodType.toString();

        // 获取用户角色
        Visitor visitor = ThreadContext.getSessionVisitor();
        if (visitor == null) {
            LOG.warn("No session visitor!");
            throw new AccessDeniedException("No session visitor! " + urlInfo);
        }
        Integer roleId = visitor.getRoleId();
        String visitorInfo = ", UserId:" + visitor.getId() + ", RoleId:" + roleId;

        Boolean isPriviledged = true;
        // 判断用户是否有权限访问方法
        if (!this.isMethodAccessible(urlPattarn, methodType, roleId)) {
            isPriviledged = false;
            throw new AccessDeniedException("Access Denied: " + urlInfo + visitorInfo);
        }
        LOG.info("Accessing URL:" + urlInfo + visitorInfo + ", Is priviledged:" + isPriviledged.toString());
    }

    Object rtnOb = null;

    try {
        // 执行方法
        rtnOb = pjp.proceed();
    } catch (Throwable t) {
        LOG.info(t.getMessage());
        throw t;
    }

    return rtnOb;
}