package org.framework.helper; //~--- non-JDK imports -------------------------------------------------------- import org.framework.bean.FormParam; import org.framework.bean.Param; import org.framework.util.ArrayUtil; import org.framework.util.CodeUtil; import org.framework.util.StreamUtil; import org.framework.util.StringUtil; //~--- JDK imports ------------------------------------------------------------ import java.io.IOException; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import javax.servlet.http.HttpServletRequest; /** * 请求助手类 * Created by lizhaoz on 2015/12/31. */ public class RequestHelper { /** * 创建请求对象 * author:Lizhao * Date:15/12/31 * version:1.0 * * @param request * * @return * * @throws IOException */ public static Param createParam(HttpServletRequest request) throws IOException { List<FormParam> formParamList = new ArrayList<FormParam>(); formParamList.addAll(parseParameterNames(request)); formParamList.addAll(parseInputStream(request)); return new Param(formParamList); } /** * 解析表单中的参数 * author:Lizhao * Date:15/12/31 * version:1.0 * * @param request * * @return */ private static List<FormParam> parseParameterNames(HttpServletRequest request) { List<FormParam> formParamList = new ArrayList<FormParam>(); Enumeration<String> paramNames = request.getParameterNames(); while (paramNames.hasMoreElements()) { String fieldName = paramNames.nextElement(); String[] fieldValues = request.getParameterValues(fieldName); if (ArrayUtil.isNotEmpty(fieldValues)) { Object fieldValue; if (fieldValues.length == 1) { fieldValue = fieldValues[0]; } else { StringBuilder sb = new StringBuilder(""); for (int i = 0; i < fieldValues.length; i++) { sb.append(fieldValues[i]); if (i != fieldValues.length - 1) { sb.append(StringUtil.SEPARATOR); } } fieldValue = sb.toString(); } formParamList.add(new FormParam(fieldName, fieldValue)); } } return formParamList; } /** * 解析地址后面带的参数 * author:Lizhao * Date:15/12/31 * version:1.0 * * @param request * * @return * * @throws IOException */ private static List<FormParam> parseInputStream(HttpServletRequest request) throws IOException { List<FormParam> formParamList = new ArrayList<FormParam>(); String body = CodeUtil.decodeURL(StreamUtil.getString(request.getInputStream())); if (StringUtil.isNotEmpty(body)) { String[] kvs = StringUtil.splitString(body, "&"); if (ArrayUtil.isNotEmpty(kvs)) { for (String kv : kvs) { String[] array = StringUtil.splitString(kv, "="); if (ArrayUtil.isNotEmpty(array) && (array.length == 2)) { String fieldName = array[0]; String fieldValue = array[1]; formParamList.add(new FormParam(fieldName, fieldValue)); } } } } return formParamList; } } //~ Formatted by Jindent --- http://www.jindent.com