public static String generateSetCookie(Cookie cookie) {
    if (cookie == null) {
      throw new IllegalArgumentException("the cookie is null");
    } else {
      StringBuilder sb = new StringBuilder();

      sb.append(cookie.getName()).append('=').append(cookie.getValue());

      if (VerifyUtils.isNotEmpty(cookie.getComment())) {
        sb.append(";Comment=").append(cookie.getComment());
      }

      if (VerifyUtils.isNotEmpty(cookie.getDomain())) {
        sb.append(";Domain=").append(cookie.getDomain());
      }
      if (cookie.getMaxAge() >= 0) {
        sb.append(";Max-Age=").append(cookie.getMaxAge());
      }

      String path = VerifyUtils.isEmpty(cookie.getPath()) ? "/" : cookie.getPath();
      sb.append(";Path=").append(path);

      if (cookie.getSecure()) {
        sb.append(";Secure");
      }

      sb.append(";Version=").append(cookie.getVersion());

      return sb.toString();
    }
  }
  @Override
  public boolean isRequestedSessionIdFromURL() {
    if (requestedSessionId != null) return requestedSessionIdFromURL;

    String sessionId = getSessionId(requestURI, config.getSessionIdName());
    if (VerifyUtils.isNotEmpty(sessionId)) {
      requestedSessionId = sessionId;
      requestedSessionIdFromURL = true;
      return true;
    }
    return false;
  }
  private void loadParam(String str) throws UnsupportedEncodingException {
    if (VerifyUtils.isNotEmpty(str)) {
      String[] p = StringUtils.split(str, '&');
      for (String kv : p) {
        int i = kv.indexOf('=');
        if (i > 0) {
          String name = kv.substring(0, i);
          String value = kv.substring(i + 1);

          List<String> list = parameterMap.get(name);
          if (list == null) {
            list = new ArrayList<String>();
            parameterMap.put(name, list);
          }
          list.add(URLDecoder.decode(value, characterEncoding));
        }
      }
    }
  }
  /**
   * 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;
  }