解决表单重复参数名提交的办法
参考servlet 和 java API手册
方法一:枚举法
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Enumeration e = req.getParameterNames(); while(e.hasMoreElements()){ String paraName = (String) e.nextElement(); //将得到的参数传入到 getParameterValues()方法中,返回的是一个字符型数组 String[] paraValues = req.getParameterValues(paraName) ; if(paraValues.length == 1){ String str = paraValues[0]; System.out.println(str); }else{ for(int i=0;i<paraValues.length;i++){ System.out.println(paraValues[i]); } } } }
方法二:map转换set
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 方法二 用getParameterMap ,map转换城set,map 没有 iterator 这个接口 Map<String, String[]> map = req.getParameterMap(); // 将map 转换城set Entry<key,value> 是map 中的一个接口可以通过 Map.Entry<key,value> 来调用 Set<Map.Entry<String, String[]>> set = map.entrySet(); for (Iterator<Map.Entry<String, String[]>> it = set.iterator(); it .hasNext();) { Map.Entry<String, String[]> entry = it.next(); String paraName = entry.getKey(); paraName = new String(paraName.getBytes("ISO8859-1"), "UTF-8"); System.out.println(paraName); String[] paraValues = entry.getValue(); if (paraValues.length == 1) { paraValues[0] = new String(paraValues[0].getBytes("iso8859-1"), "utf-8"); System.out.println(paraValues[0]); } else { for (int i = 0; i < paraValues.length; i++) { paraValues[i] = new String( paraValues[i].getBytes("iso8859-1"), "utf-8"); System.out.println(paraValues[i]); } } } }
将 map 元素转换成 set 集合 , 用Iterator 遍历