当前位置:   article > 正文

关于通过spring-web的ServletRequestUtils工具类对获取getParameter传参的默认转换基本数据类型的学习...

request.getparameter long

基于spring-web(4.1.4)包的org.springframework.web.bind.ServletRequestUtils工具类对HttpServletRequest获取的传递入参获取request.getParameter进行常见默认数据类型(整型IntParser、长整型LongParser、浮点数类型FloatParser、双精度浮点数、布尔型类型DoubleParser、字符串类型StringParser)的转换,源码如下所示

  1. package org.springframework.web.bind;
  2. import javax.servlet.ServletRequest;
  3. public abstract class ServletRequestUtils
  4. {
  5.   private static final IntParser INT_PARSER = new IntParser(null);
  6.   private static final LongParser LONG_PARSER = new LongParser(null);
  7.   private static final FloatParser FLOAT_PARSER = new FloatParser(null);
  8.   private static final DoubleParser DOUBLE_PARSER = new DoubleParser(null);
  9.   private static final BooleanParser BOOLEAN_PARSER = new BooleanParser(null);
  10.   private static final StringParser STRING_PARSER = new StringParser(null);
  11.   public static Integer getIntParameter(ServletRequest request, String name)
  12.     throws ServletRequestBindingException
  13.   {
  14.     if (request.getParameter(name) == null)
  15.       return null;
  16.     return Integer.valueOf(getRequiredIntParameter(request, name));
  17.   }
  18.   public static int getIntParameter(ServletRequest request, String name, int defaultVal)
  19.   {
  20.     if (request.getParameter(name) == null)
  21.       return defaultVal;
  22.     try
  23.     {
  24.       return getRequiredIntParameter(request, name);
  25.     } catch (ServletRequestBindingException ex) {
  26.     }
  27.     return defaultVal;
  28.   }
  29.   public static int[] getIntParameters(ServletRequest request, String name)
  30.   {
  31.     try
  32.     {
  33.       return getRequiredIntParameters(request, name);
  34.     } catch (ServletRequestBindingException ex) {
  35.     }
  36.     return new int[0];
  37.   }
  38.   public static int getRequiredIntParameter(ServletRequest request, String name)
  39.     throws ServletRequestBindingException
  40.   {
  41.     return INT_PARSER.parseInt(name, request.getParameter(name));
  42.   }
  43.   public static int[] getRequiredIntParameters(ServletRequest request, String name)
  44.     throws ServletRequestBindingException
  45.   {
  46.     return INT_PARSER.parseInts(name, request.getParameterValues(name));
  47.   }
  48.   public static Long getLongParameter(ServletRequest request, String name)
  49.     throws ServletRequestBindingException
  50.   {
  51.     if (request.getParameter(name) == null)
  52.       return null;
  53.     return Long.valueOf(getRequiredLongParameter(request, name));
  54.   }
  55.   public static long getLongParameter(ServletRequest request, String name, long defaultVal)
  56.   {
  57.     if (request.getParameter(name) == null)
  58.       return defaultVal;
  59.     try
  60.     {
  61.       return getRequiredLongParameter(request, name);
  62.     } catch (ServletRequestBindingException ex) {
  63.     }
  64.     return defaultVal;
  65.   }
  66.   public static long[] getLongParameters(ServletRequest request, String name)
  67.   {
  68.     try
  69.     {
  70.       return getRequiredLongParameters(request, name);
  71.     } catch (ServletRequestBindingException ex) {
  72.     }
  73.     return new long[0];
  74.   }
  75.   public static long getRequiredLongParameter(ServletRequest request, String name)
  76.     throws ServletRequestBindingException
  77.   {
  78.     return LONG_PARSER.parseLong(name, request.getParameter(name));
  79.   }
  80.   public static long[] getRequiredLongParameters(ServletRequest request, String name)
  81.     throws ServletRequestBindingException
  82.   {
  83.     return LONG_PARSER.parseLongs(name, request.getParameterValues(name));
  84.   }
  85.   public static Float getFloatParameter(ServletRequest request, String name)
  86.     throws ServletRequestBindingException
  87.   {
  88.     if (request.getParameter(name) == null)
  89.       return null;
  90.     return Float.valueOf(getRequiredFloatParameter(request, name));
  91.   }
  92.   public static float getFloatParameter(ServletRequest request, String name, float defaultVal)
  93.   {
  94.     if (request.getParameter(name) == null)
  95.       return defaultVal;
  96.     try
  97.     {
  98.       return getRequiredFloatParameter(request, name);
  99.     } catch (ServletRequestBindingException ex) {
  100.     }
  101.     return defaultVal;
  102.   }
  103.   public static float[] getFloatParameters(ServletRequest request, String name)
  104.   {
  105.     try
  106.     {
  107.       return getRequiredFloatParameters(request, name);
  108.     } catch (ServletRequestBindingException ex) {
  109.     }
  110.     return new float[0];
  111.   }
  112.   public static float getRequiredFloatParameter(ServletRequest request, String name)
  113.     throws ServletRequestBindingException
  114.   {
  115.     return FLOAT_PARSER.parseFloat(name, request.getParameter(name));
  116.   }
  117.   public static float[] getRequiredFloatParameters(ServletRequest request, String name)
  118.     throws ServletRequestBindingException
  119.   {
  120.     return FLOAT_PARSER.parseFloats(name, request.getParameterValues(name));
  121.   }
  122.   public static Double getDoubleParameter(ServletRequest request, String name)
  123.     throws ServletRequestBindingException
  124.   {
  125.     if (request.getParameter(name) == null)
  126.       return null;
  127.     return Double.valueOf(getRequiredDoubleParameter(request, name));
  128.   }
  129.   public static double getDoubleParameter(ServletRequest request, String name, double defaultVal)
  130.   {
  131.     if (request.getParameter(name) == null)
  132.       return defaultVal;
  133.     try
  134.     {
  135.       return getRequiredDoubleParameter(request, name);
  136.     } catch (ServletRequestBindingException ex) {
  137.     }
  138.     return defaultVal;
  139.   }
  140.   public static double[] getDoubleParameters(ServletRequest request, String name)
  141.   {
  142.     try
  143.     {
  144.       return getRequiredDoubleParameters(request, name);
  145.     } catch (ServletRequestBindingException ex) {
  146.     }
  147.     return new double[0];
  148.   }
  149.   public static double getRequiredDoubleParameter(ServletRequest request, String name)
  150.     throws ServletRequestBindingException
  151.   {
  152.     return DOUBLE_PARSER.parseDouble(name, request.getParameter(name));
  153.   }
  154.   public static double[] getRequiredDoubleParameters(ServletRequest request, String name)
  155.     throws ServletRequestBindingException
  156.   {
  157.     return DOUBLE_PARSER.parseDoubles(name, request.getParameterValues(name));
  158.   }
  159.   public static Boolean getBooleanParameter(ServletRequest request, String name)
  160.     throws ServletRequestBindingException
  161.   {
  162.     if (request.getParameter(name) == null)
  163.       return null;
  164.     return Boolean.valueOf(getRequiredBooleanParameter(request, name));
  165.   }
  166.   public static boolean getBooleanParameter(ServletRequest request, String name, boolean defaultVal)
  167.   {
  168.     if (request.getParameter(name) == null)
  169.       return defaultVal;
  170.     try
  171.     {
  172.       return getRequiredBooleanParameter(request, name);
  173.     } catch (ServletRequestBindingException ex) {
  174.     }
  175.     return defaultVal;
  176.   }
  177.   public static boolean[] getBooleanParameters(ServletRequest request, String name)
  178.   {
  179.     try
  180.     {
  181.       return getRequiredBooleanParameters(request, name);
  182.     } catch (ServletRequestBindingException ex) {
  183.     }
  184.     return new boolean[0];
  185.   }
  186.   public static boolean getRequiredBooleanParameter(ServletRequest request, String name)
  187.     throws ServletRequestBindingException
  188.   {
  189.     return BOOLEAN_PARSER.parseBoolean(name, request.getParameter(name));
  190.   }
  191.   public static boolean[] getRequiredBooleanParameters(ServletRequest request, String name)
  192.     throws ServletRequestBindingException
  193.   {
  194.     return BOOLEAN_PARSER.parseBooleans(name, request.getParameterValues(name));
  195.   }
  196.   public static String getStringParameter(ServletRequest request, String name)
  197.     throws ServletRequestBindingException
  198.   {
  199.     if (request.getParameter(name) == null)
  200.       return null;
  201.     return getRequiredStringParameter(request, name);
  202.   }
  203.   public static String getStringParameter(ServletRequest request, String name, String defaultVal)
  204.   {
  205.     String val = request.getParameter(name);
  206.     return ((val != null) ? val : defaultVal);
  207.   }
  208.   public static String[] getStringParameters(ServletRequest request, String name)
  209.   {
  210.     try
  211.     {
  212.       return getRequiredStringParameters(request, name);
  213.     } catch (ServletRequestBindingException ex) {
  214.     }
  215.     return new String[0];
  216.   }
  217.   public static String getRequiredStringParameter(ServletRequest request, String name)
  218.     throws ServletRequestBindingException
  219.   {
  220.     return STRING_PARSER.validateRequiredString(name, request.getParameter(name));
  221.   }
  222.   public static String[] getRequiredStringParameters(ServletRequest request, String name)
  223.     throws ServletRequestBindingException
  224.   {
  225.     return STRING_PARSER.validateRequiredStrings(name, request.getParameterValues(name));
  226.   }
  227.   private static class StringParser extends ServletRequestUtils.ParameterParser<String>
  228.   {
  229.     private StringParser()
  230.     {
  231.       super(null);
  232.     }
  233.     protected String getType() {
  234.       return "string";
  235.     }
  236.     protected String doParse(String parameter) throws NumberFormatException
  237.     {
  238.       return parameter;
  239.     }
  240.     public String validateRequiredString(String name, String value) throws ServletRequestBindingException {
  241.       validateRequiredParameter(name, value);
  242.       return value;
  243.     }
  244.     public String[] validateRequiredStrings(String name, String[] values) throws ServletRequestBindingException {
  245.       validateRequiredParameter(name, values);
  246.       String[] arrayOfString = values; int i = arrayOfString.length; for (int j = 0; j < i; ++j) { String value = arrayOfString[j];
  247.         validateRequiredParameter(name, value);
  248.       }
  249.       return values;
  250.     }
  251.   }
  252.   private static class BooleanParser extends ServletRequestUtils.ParameterParser<Boolean>
  253.   {
  254.     private BooleanParser()
  255.     {
  256.       super(null);
  257.     }
  258.     protected String getType() {
  259.       return "boolean";
  260.     }
  261.     protected Boolean doParse(String parameter) throws NumberFormatException
  262.     {
  263.       return Boolean.valueOf((parameter.equalsIgnoreCase("true")) || (parameter.equalsIgnoreCase("on")) || 
  264.         (parameter
  265.         .equalsIgnoreCase("yes")) || 
  266.         (parameter.equals("1")));
  267.     }
  268.     public boolean parseBoolean(String name, String parameter) throws ServletRequestBindingException {
  269.       return ((Boolean)parse(name, parameter)).booleanValue();
  270.     }
  271.     public boolean[] parseBooleans(String name, String[] values) throws ServletRequestBindingException {
  272.       validateRequiredParameter(name, values);
  273.       boolean[] parameters = new boolean[values.length];
  274.       for (int i = 0; i < values.length; ++i)
  275.         parameters[i] = parseBoolean(name, values[i]);
  276.       return parameters;
  277.     }
  278.   }
  279.   private static class DoubleParser extends ServletRequestUtils.ParameterParser<Double>
  280.   {
  281.     private DoubleParser()
  282.     {
  283.       super(null);
  284.     }
  285.     protected String getType() {
  286.       return "double";
  287.     }
  288.     protected Double doParse(String parameter) throws NumberFormatException
  289.     {
  290.       return Double.valueOf(parameter);
  291.     }
  292.     public double parseDouble(String name, String parameter) throws ServletRequestBindingException {
  293.       return ((Double)parse(name, parameter)).doubleValue();
  294.     }
  295.     public double[] parseDoubles(String name, String[] values) throws ServletRequestBindingException {
  296.       validateRequiredParameter(name, values);
  297.       double[] parameters = new double[values.length];
  298.       for (int i = 0; i < values.length; ++i)
  299.         parameters[i] = parseDouble(name, values[i]);
  300.       return parameters;
  301.     }
  302.   }
  303.   private static class FloatParser extends ServletRequestUtils.ParameterParser<Float>
  304.   {
  305.     private FloatParser()
  306.     {
  307.       super(null);
  308.     }
  309.     protected String getType() {
  310.       return "float";
  311.     }
  312.     protected Float doParse(String parameter) throws NumberFormatException
  313.     {
  314.       return Float.valueOf(parameter);
  315.     }
  316.     public float parseFloat(String name, String parameter) throws ServletRequestBindingException {
  317.       return ((Float)parse(name, parameter)).floatValue();
  318.     }
  319.     public float[] parseFloats(String name, String[] values) throws ServletRequestBindingException {
  320.       validateRequiredParameter(name, values);
  321.       float[] parameters = new float[values.length];
  322.       for (int i = 0; i < values.length; ++i)
  323.         parameters[i] = parseFloat(name, values[i]);
  324.       return parameters;
  325.     }
  326.   }
  327.   private static class LongParser extends ServletRequestUtils.ParameterParser<Long>
  328.   {
  329.     private LongParser()
  330.     {
  331.       super(null);
  332.     }
  333.     protected String getType() {
  334.       return "long";
  335.     }
  336.     protected Long doParse(String parameter) throws NumberFormatException
  337.     {
  338.       return Long.valueOf(parameter);
  339.     }
  340.     public long parseLong(String name, String parameter) throws ServletRequestBindingException {
  341.       return ((Long)parse(name, parameter)).longValue();
  342.     }
  343.     public long[] parseLongs(String name, String[] values) throws ServletRequestBindingException {
  344.       validateRequiredParameter(name, values);
  345.       long[] parameters = new long[values.length];
  346.       for (int i = 0; i < values.length; ++i)
  347.         parameters[i] = parseLong(name, values[i]);
  348.       return parameters;
  349.     }
  350.   }
  351.   private static class IntParser extends ServletRequestUtils.ParameterParser<Integer>
  352.   {
  353.     private IntParser()
  354.     {
  355.       super(null);
  356.     }
  357.     protected String getType() {
  358.       return "int";
  359.     }
  360.     protected Integer doParse(String s) throws NumberFormatException
  361.     {
  362.       return Integer.valueOf(s);
  363.     }
  364.     public int parseInt(String name, String parameter) throws ServletRequestBindingException {
  365.       return ((Integer)parse(name, parameter)).intValue();
  366.     }
  367.     public int[] parseInts(String name, String[] values) throws ServletRequestBindingException {
  368.       validateRequiredParameter(name, values);
  369.       int[] parameters = new int[values.length];
  370.       for (int i = 0; i < values.length; ++i)
  371.         parameters[i] = parseInt(name, values[i]);
  372.       return parameters;
  373.     }
  374.   }
  375.   private static abstract class ParameterParser<T>
  376.   {
  377.     protected final T parse(String name, String parameter)
  378.       throws ServletRequestBindingException
  379.     {
  380.       validateRequiredParameter(name, parameter);
  381.       try {
  382.         return doParse(parameter);
  383.       }
  384.       catch (NumberFormatException ex)
  385.       {
  386.         throw new ServletRequestBindingException("Required " + 
  387.           getType() + " parameter '" + name + "' with value of '" + parameter + "' is not a valid number", ex);
  388.       }
  389.     }
  390.     protected final void validateRequiredParameter(String name, Object parameter)
  391.       throws ServletRequestBindingException
  392.     {
  393.       if (parameter == null)
  394.         throw new MissingServletRequestParameterException(name, getType());
  395.     }
  396.     protected abstract String getType();
  397.     protected abstract T doParse(String paramString)
  398.       throws NumberFormatException;
  399.   }
  400. }

转载于:https://www.cnblogs.com/sharysea/p/10818021.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/309880
推荐阅读
相关标签
  

闽ICP备14008679号