private static boolean isActionMethod(Method m) throws ActionAnnotationConfigException{
		Action action = m.getAnnotation(Action.class);
		if(action == null)
			return false;
		//action configuration is wrong
		if(!action.value().matches("(\\/\\w+)+(\\/\\$\\w+)*")){
			throw new ActionAnnotationConfigException(m + "'s Action annotation configration is wrong format!!");
		}
		//method is static
		if(Modifier.isStatic(m.getModifiers())){
			logger.warn(m + " is a satatic method!");
			return false;
		}
		//Does not match the number of parameters
		Class<?>[] paramTypes = m.getParameterTypes();
		if(paramTypes.length != getParamCount(action.value())){
			throw new IllegalArgumentException(m + "'s param count and url's param count do not match!!");
		}
		//parameter's type can not be converted
		for(Class<?> clazz : paramTypes){
			if(!canConvert(clazz)){
				throw new IllegalArgumentException(m + "'s param type can not be converted!!");
			}
		}
		return true;
	}