Wie in den anderen Antworten angegeben, gibt es keine Möglichkeit, Abfragezeichenfolgenparameter mithilfe der Servlet-API abzurufen.
Ich denke, der beste Weg, um Abfrageparameter zu erhalten, besteht darin, die Abfragezeichenfolge selbst zu analysieren. (Es ist komplizierter, Parameter zu durchlaufen und zu überprüfen, ob die Abfragezeichenfolge den Parameter enthält.)
Ich habe unten Code geschrieben, um Abfragezeichenfolgenparameter zu erhalten. Verwenden von Apache StringUtils und ArrayUtils, die auch CSV-getrennte Abfrageparameterwerte unterstützen.
Beispiel: username=james&username=smith&password=pwd1,pwd2
wird zurückkehren
password : [pwd1, pwd2]
(Länge = 2)
username : [james, smith]
(Länge = 2)
public static Map<String, String[]> getQueryParameters(HttpServletRequest request) throws UnsupportedEncodingException {
Map<String, String[]> queryParameters = new HashMap<>();
String queryString = request.getQueryString();
if (StringUtils.isNotEmpty(queryString)) {
queryString = URLDecoder.decode(queryString, StandardCharsets.UTF_8.toString());
String[] parameters = queryString.split("&");
for (String parameter : parameters) {
String[] keyValuePair = parameter.split("=");
String[] values = queryParameters.get(keyValuePair[0]);
values = keyValuePair.length == 1 ? ArrayUtils.add(values, "") :
ArrayUtils.addAll(values, keyValuePair[1].split(","));
queryParameters.put(keyValuePair[0], values);
}
}
return queryParameters;
}