package com.tiger.common;
import org.apache.commons.lang.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.regex.Pattern;
/**
* HttpRequest的转换类
*/
public class RequestUtil {
private static Pattern filePattern = Pattern.compile("[/./.\\\\/:,<>+\"^]");
/**
* 将HttpServletRequest转换为HashMap形式
* 重名参数只取第一个
*
* @param request
* @return
*/
public static HashMap<String, String> convert2Map(HttpServletRequest request) {
HashMap<String, String> map = new HashMap<String, String>();
Enumeration<String> names = request.getParameterNames();
while (names.hasMoreElements()) {
String key = names.nextElement();
String value = RequestUtil.replaceChar(request.getParameter(key));
if (StringUtils.isBlank(value)) {
continue;
}
map.put(key, value);
}
return map;
}
/**
* 校验参数中需要检查的key
*
* @param request
* @return 需要验证的key,但是在request中没有找到的
*/
public static String checkParamKey(HttpServletRequest request, String... keys) {
StringBuffer buffer = null;
if (keys.length > 0) {
Enumeration<String> names = request.getParameterNames();
ArrayList<String> paramKeyList = Collections.list(names);
for (String keyNeed : keys) {
if (!paramKeyList.contains(keyNeed)) {
if (null == buffer) {
buffer = new StringBuffer();
buffer.append(keyNeed);
continue;
}
buffer.append(", ").append(keyNeed);
}
}
}
return null == buffer ? null : buffer.toString();
}
public static String replaceChar(String value) {
if (null == value || "".equals(value)) {
return null;
}
if (value.indexOf("\r") != -1) {
value = value.replaceAll("\r", "");
}
if (value.indexOf("\n") != -1) {
value = value.replaceAll("\n", "");
}
if (value.indexOf("%0a") != -1) {
value = value.replaceAll("%0a", "");
}
if (value.indexOf("%0d") != -1) {
value = value.replaceAll("%0d", "");
}
return value;
}
/**
* 替换文件路径中的非法字符
* 如:/ \ + ^ : , .. 等
*
* @param value
* @return
*/
public static String replaceIllegalChar(String value) {
if (null == value || "".equals(value)) {
return null;
}
return filePattern.matcher(value).replaceAll("");
}
}