请求参数
通常前端通过form表格的形式向后台发送数据,需要一个类封装从HttpServletRequest请求对象中获取所有的参数,然后传递给处理方法。首先解析请求参数(form表单数据),将其封装成Param类中,传递给Controller的方法处理。
通过request.getParameterNames()将发送请求页面中form表单所具有name属性的表单对象获取,request.getParameterValues(name)获取其值,生成FormParam保存在Param中。
/**
* 解析请求参数,form表单数据
*/
public class ParameterUtil {
public static Param createParam(HttpServletRequest request) throws IOException {
return new Param(parseParameterNames(request));
}
private static Map<String,Object> parseParameterNames(HttpServletRequest request) {
Map<String,Object> formParams = new HashMap<>();
//将发送请求页面中form表单所具有name属性的表单对象获取
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();
}
formParams.put(fieldName,fieldValue);
}
}
return formParams;
}
}
Param请求参数对象,封装了前端提交的form表格数据。
/**
* 请求参数对象
*/
public class Param {
private Map<String,Object> formParams;
public Param(Map<String,Object> formParams) {
this.formParams = formParams;
}
/**
* 判断参数是否为空
*
* @return boolean
*/
public boolean isEmpty() {
return CollectionUtil.isEmpty(formParams);
}
public Map<String, Object> getFormParams() {
return formParams;
}
/**
* 根据参数名取String型参数值
*
* @param name
* @return
*/
public String getString(String name) {
return CastUtil.castString(formParams.get(name));
}
public double getDouble(String name) {
return CastUtil.castDouble(formParams.get(name));
}
public long getLong(String name) {
return CastUtil.castLong(formParams.get(name));
}
public int getInt(String name) {
return CastUtil.castInt(formParams.get(name));
}
public Boolean getBoolean(String name) {
return CastUtil.castBoolean(formParams.get(name));
}
}