/**
   * controller方法参数注入
   *
   * @param request
   * @param response
   * @param mvcMetaInfo
   * @return
   */
  @SuppressWarnings("unchecked")
  private Object[] getParams(
      HttpServletRequest request,
      HttpServletResponse response,
      MvcMetaInfo mvcMetaInfo,
      Object controllerReturn) {
    byte[] methodParam = mvcMetaInfo.getMethodParam();
    ParamMetaInfo[] paramMetaInfos = mvcMetaInfo.getParamMetaInfos();
    Object[] p = new Object[methodParam.length];
    boolean firstString = true;
    for (int i = 0; i < p.length; i++) {
      switch (methodParam[i]) {
        case MethodParam.REQUEST:
          p[i] = request;
          break;
        case MethodParam.RESPONSE:
          p[i] = response;
          break;
        case MethodParam.HTTP_PARAM:
          // 请求参数封装到javabean
          Enumeration<String> enumeration = request.getParameterNames();
          ParamMetaInfo paramMetaInfo = paramMetaInfos[i];
          p[i] = paramMetaInfo.newParamInstance();

          // 把http参数赋值给参数对象
          while (enumeration.hasMoreElements()) {
            String httpParamName = enumeration.nextElement();
            String paramValue = request.getParameter(httpParamName);
            paramMetaInfo.setParam(p[i], httpParamName, paramValue);
          }
          if (VerifyUtils.isNotEmpty(paramMetaInfo.getAttribute())) {
            request.setAttribute(paramMetaInfo.getAttribute(), p[i]);
          }
          break;
        case MethodParam.CONTROLLER_RETURN:
          p[i] = firstString ? (String) controllerReturn : null;
          firstString = false;
          break;
      }
    }
    return p;
  }