123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443 |
- package com.yvan.springmvc;
- import com.google.common.base.Strings;
- import com.google.common.collect.Maps;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import javax.servlet.http.HttpServletRequest;
- import java.math.BigDecimal;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * 用来分析 HttpServletRequest 参数
- * Created by luoyf on 2016/3/29.
- */
- public class HttpParameterParser {
- private static final Logger log = LoggerFactory.getLogger(HttpParameterParser.class);
- private static DateFormat DEFAULT_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
- public static void setDateFormat(String format) {
- DEFAULT_DATE_FORMAT = new SimpleDateFormat(format);
- }
- private Map<String, String[]> parameters;
- private String URI;
- @SuppressWarnings("unchecked")
- protected HttpParameterParser(HttpServletRequest request) {
- parameters = request.getParameterMap();
- URI = request.getRequestURI();
- }
- @SuppressWarnings("unchecked")
- private HttpParameterParser(Map<String, String[]> parameters) {
- this.parameters = parameters;
- }
- public static HttpParameterParser newInstance(HttpServletRequest request) {
- return new HttpParameterParser(request);
- }
- public static HttpParameterParser newInstance(Map<String, String[]> rm) {
- return new HttpParameterParser(rm);
- }
- public Map<String, String[]> getParameters() {
- return parameters;
- }
- public String[] getStringArray(String key) {
- List<String> values = new ArrayList<String>();
- String[] params = parameters.get(key);
- if (params == null || params.length == 0) return values.toArray(new String[]{});
- for (String param : params) {
- if (Strings.isNullOrEmpty(param)) continue;
- values.add(param);
- }
- return values.toArray(new String[]{});
- }
- public String[] getStringArray(String key, String split) {
- String string = getString(key);
- if (Strings.isNullOrEmpty(string)) return null;
- return string.split(split);
- }
- public List<String> getStringList(String key) {
- String[] stringArray = getStringArray(key);
- return getStringList(stringArray);
- }
- public List<String> getStringList(String key, String split) {
- String[] stringArray = getStringArray(key, split);
- return getStringList(stringArray);
- }
- private List<String> getStringList(String[] stringArray) {
- if (stringArray == null || stringArray.length == 0) return null;
- List<String> result = new ArrayList<String>();
- for (int i = 0; i < stringArray.length; i++)
- result.add(stringArray[i]);
- return result;
- }
- /**
- * 根据请求参数返回int类型数组 如果参数为 null,则返回null 如果某个参数值转换失败则该参数值返回0
- *
- * @param key
- * @return
- */
- public int[] getIntArray(String key) {
- String[] values = getStringArray(key);
- if (values == null || values.length == 0) return null;
- int[] results = new int[values.length];
- for (int i = 0; i < values.length; i++) {
- String string = values[i];
- try {
- results[i] = Integer.parseInt(string);
- } catch (Exception e) {
- results[i] = 0;
- log.info("parse int error : " + string, e);
- }
- }
- return results;
- }
- public String getString(String key, String defaultValue) {
- String[] values = getStringArray(key);
- if (values == null || values.length <= 0)
- return defaultValue;
- else
- return values[0].trim();
- }
- public boolean containsKey(String key) {
- return parameters.containsKey(key);
- }
- public String getString(String key) {
- String[] values = getStringArray(key);
- if (values != null && values.length > 0) return values[0].trim();
- return null;
- }
- /**
- * 当参数值为 :true、是、yes、1、ok 的时候返回True (不区分大小写)<br/>
- * 当参数值为空是返回null 否则返回false
- *
- * @param key
- * @return
- */
- public Boolean getBoolean(String key) {
- String str = getString(key);
- if (Strings.isNullOrEmpty(str)) return null;
- if (str.equalsIgnoreCase("true") || str.equals("1") || str.equals("是") || str.equalsIgnoreCase("yes")
- || str.equalsIgnoreCase("ok")) return Boolean.TRUE;
- return Boolean.FALSE;
- }
- /**
- * 当参数值为 :true、是、yes、1、ok 的时候返回True (不区分大小写)<br/>
- * 否则返回false 当参数值为空时 返回 false
- *
- * @param key
- * @return
- */
- public boolean getBooleanValue(String key) {
- Boolean value = getBoolean(key);
- if (value == null) return false;
- return value.booleanValue();
- }
- /**
- * 参数值转换为Integer 如果转换失败则返回null
- *
- * @param key
- * @return
- */
- public Integer getInteger(String key) {
- String str = getString(key);
- if (Strings.isNullOrEmpty(str)) return null;
- try {
- return Integer.valueOf(str);
- } catch (Exception e) {
- log.info("parse int error : " + str, e);
- return null;
- }
- }
- /**
- * 参数值转换为Integer数组 如果转换失败则返回null
- *
- * @param key
- * @return
- */
- public Integer[] getIntegerArray(String key) {
- String[] values = getStringArray(key);
- if (values == null || values.length == 0) return null;
- Integer[] results = new Integer[values.length];
- for (int i = 0; i < values.length; i++) {
- String string = values[i];
- try {
- results[i] = Integer.valueOf(string);
- } catch (Exception e) {
- log.info("parse int error : " + string, e);
- results[i] = null;
- }
- }
- return results;
- }
- /**
- * 参数值转换为 int 如果转换失败或参数值为 null则返回defaultValue
- *
- * @param key
- * @param defaultValue
- * @return
- */
- public int getIntValue(String key, int defaultValue) {
- Integer integer = getInteger(key);
- if (integer != null) return integer.intValue();
- return defaultValue;
- }
- /**
- * 参数值转换为 int 如果转换失败或参数值为 null则返回 0
- *
- * @param key
- * @return
- */
- public int getIntValue(String key) {
- return getIntValue(key, 0);
- }
- /**
- * 参数值转换为 Double 如果转换失败则返回 null
- *
- * @param key
- * @return
- */
- public Double getDouble(String key) {
- String str = getString(key);
- if (Strings.isNullOrEmpty(str)) return null;
- try {
- return Double.valueOf(str);
- } catch (Exception e) {
- log.info("parse double error : " + str, e);
- return null;
- }
- }
- public double getDoubleValue(String key, double defaultValue) {
- Double d = getDouble(key);
- if (d != null) return d.doubleValue();
- return defaultValue;
- }
- public double getDoubleValue(String key) {
- return getDoubleValue(key, 0d);
- }
- /**
- * 参数值转换为 Long 如果转换失败则返回 null
- *
- * @param key
- * @return
- */
- public Long getLong(String key) {
- String str = getString(key);
- if (Strings.isNullOrEmpty(str)) return null;
- try {
- return Long.valueOf(str);
- } catch (Exception e) {
- log.info("parse long error : " + str, e);
- return null;
- }
- }
- public long getLongValue(String key, long defaultValue) {
- Long l = getLong(key);
- if (l != null) return l.longValue();
- return defaultValue;
- }
- public long getLongValue(String key) {
- return getLongValue(key, 0);
- }
- /**
- * 参数值转换为Long数组 如果转换失败则返回null
- *
- * @param key
- * @return
- */
- public Long[] getLongWrapperArray(String key) {
- String[] values = getStringArray(key);
- if (values == null || values.length == 0) return null;
- Long[] results = new Long[values.length];
- for (int i = 0; i < values.length; i++) {
- String string = values[i];
- try {
- results[i] = Long.valueOf(string);
- } catch (Exception e) {
- log.info("parse int error : " + string, e);
- results[i] = null;
- }
- }
- return results;
- }
- /**
- * 根据请求参数返回long类型数组 如果参数为 null,则返回null 如果某个参数值转换失败则该参数值返回0
- *
- * @param key
- * @return
- */
- public long[] getLongArray(String key) {
- String[] values = getStringArray(key);
- if (values == null || values.length == 0) return null;
- long[] results = new long[values.length];
- for (int i = 0; i < values.length; i++) {
- String string = values[i];
- try {
- results[i] = Long.parseLong(string);
- } catch (Exception e) {
- results[i] = 0;
- log.info("parse int error : " + string, e);
- }
- }
- return results;
- }
- public Short getShort(String key) {
- String str = getString(key);
- if (Strings.isNullOrEmpty(str)) return null;
- try {
- return Short.valueOf(str);
- } catch (Exception e) {
- log.info("parse short error : " + str, e);
- return null;
- }
- }
- public Short[] getShortArray(String key) {
- String[] values = getStringArray(key);
- if (values == null || values.length == 0) return null;
- Short[] results = new Short[values.length];
- for (int i = 0; i < values.length; i++) {
- String string = values[i];
- try {
- results[i] = Short.valueOf(string);
- } catch (Exception e) {
- log.info("parse short error : " + string, e);
- results[i] = null;
- }
- }
- return results;
- }
- public short getShortValue(String key, short defaultValue) {
- Short s = getShort(key);
- if (s != null) return s.shortValue();
- return defaultValue;
- }
- public short getShortValue(String key) {
- return getShortValue(key, (short) 0);
- }
- /**
- * 参数值转换为日期
- *
- * @param key
- * @param format 日期格式:如果为null则采用默认的日期格式"yyyy-MM-dd"
- * @return
- */
- public Date getDate(String key, String format) {
- Date date = null;
- String str = getString(key);
- if (Strings.isNullOrEmpty(str)) return null;
- DateFormat dateFormat = format == null ? DEFAULT_DATE_FORMAT : new SimpleDateFormat(format);
- try {
- date = dateFormat.parse(str);
- } catch (Exception e) {
- log.info("parse date error : " + str, e);
- return null;
- }
- return date;
- }
- /**
- * 参数值转换为日期 (采用默认的日期格式"yyyy-MM-dd")
- *
- * @param key
- * @return
- */
- public Date getDate(String key) {
- return getDate(key, null);
- }
- public java.sql.Date getSqlDate(String key, String format) {
- Date date = getDate(key, format);
- if (date != null) return new java.sql.Date(date.getTime());
- else return null;
- }
- public java.sql.Date getSqlDate(String key) {
- return getSqlDate(key, null);
- }
- public BigDecimal getBigDecimal(String key) {
- String value = getString(key);
- if (Strings.isNullOrEmpty(value)) return null;
- try {
- return new BigDecimal(value);
- } catch (Exception e) {
- log.info("parse date error : " + value, e);
- return null;
- }
- }
- public Calendar getCalendar(String key) {
- Date date = getDate(key);
- if (date == null) return null;
- Calendar cal = Calendar.getInstance();
- cal.setTime(date);
- return cal;
- }
- /**
- * 得到请求参数的字符串表现形式
- *
- * @return
- */
- public String toParameterString() {
- StringBuilder sb = new StringBuilder(URI);
- if (parameters == null || parameters.size() == 0) return sb.toString();
- sb.append("?");
- for (String key : parameters.keySet()) {
- String[] values = getStringArray(key);
- for (String value : values) {
- sb.append(key).append("=").append(value).append("&");
- }
- }
- return sb.toString();
- }
- /**
- * 变成Map
- */
- public Map<String, Object> getMap() {
- Map<String, Object> map = Maps.newLinkedHashMap();
- for (String key : parameters.keySet()) {
- map.put(key, getString(key));
- }
- return map;
- }
- }
|