import javax.servlet.http.HttpServletRequest; import java.util.Map; import java.util.StringTokenizer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; /** * * @author liuxingxing * * 2017年4月17日 */ public class QueryStringParser { Map paramMap; HttpServletRequest request; List<Map> list=new ArrayList<Map>(); /** * 给request * @param request */ public QueryStringParser(HttpServletRequest request) { String queryString=null; try { queryString = URLDecoder.decode(request.getQueryString(),"utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (queryString == null) { paramMap = null; this.request = request; return; } else paramMap = new HashMap(); StringTokenizer st = new StringTokenizer(queryString, "&"); while (st.hasMoreTokens()) { String pairs = st.nextToken(); String key = pairs.substring(0, pairs.indexOf('=')); String value = pairs.substring(pairs.indexOf('=') + 1); paramMap.put(key, value); } } /** * 直接给URL的getQueryString * @param QueryString */ public QueryStringParser(String QueryString) { String queryString=null; try { queryString = URLDecoder.decode(QueryString,"utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (queryString == null) { paramMap = null; return; } else paramMap = new HashMap(); StringTokenizer st = new StringTokenizer(queryString, "&"); String keys=""; String keyss=""; String values=""; String temp=""; int num=0; while (st.hasMoreTokens()) { Map map=new HashMap(); String pairs = st.nextToken(); String key = pairs.substring(0, pairs.indexOf('=')); String value = pairs.substring(pairs.indexOf('=') + 1); paramMap.put(key, value); map.put(key, value); list.add(map); } } public String getParameter(String key) { if(paramMap==null) return request.getParameter(key); else{ return URLDecoder.decode((String) paramMap.get(key)); } } public String[] getParameterValues(String key){ String str=""; for (Map map : list) { if(map.get(key)!=null){ str+=map.get(key).toString()+","; } } str=str.substring(0, str.length()-1); return str.split(","); } public static void main(String[] args) { QueryStringParser parser = new QueryStringParser("table=name&table=name1&Test=adc&table=name2"); String curPath = parser.getParameter("Test"); System.out.println(curPath); String[] s=parser.getParameterValues("table"); for (String string : s) { System.out.println(string); } } }
解决getQueryString乱码 代替request.getParameter("...")的方法
最新推荐文章于 2023-03-02 10:36:30 发布