解决getQueryString乱码 代替request.getParameter("...")的方法
来源:互联网 发布:阿里云系统怎么root 编辑:程序博客网 时间:2024/06/04 18:43
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 blocke.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 blocke.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);}}}
1 0