java split string to map parse



Alternative zu veraltetem javax.servlet.http.HttpUtils.parseQueryString? (3)

Ich denke, die Idee ist, die HttpServletRequest stattdessen zu verwenden. Es gibt die Methoden getParameterMap (), getParameterNames () und getParameterValues ​​() zum Starten.

Es gibt auch die getParameter (String paramname) -Methode, um den Wert einer bestimmten Methode zu erhalten.

Diese machen keinen Unterschied zwischen Querystring-Parametern und Form-Parametern. Wenn Sie also vor allem nach einer Querystring suchen, dann würde das vermutlich nicht helfen.

https://ffff65535.com

Ich suche, eine URL zu analysieren, um eine Sammlung der querystring Parameter in Java zu erhalten. Um klar zu sein, muss ich eine gegebene URL (oder einen String-Wert eines URL-Objekts) analysieren, nicht die URL einer Servlet-Anfrage.

Es sieht so aus, als ob die javax.servlet.http.HttpUtils.parseQueryString Methode die offensichtliche Wahl wäre, aber sie ist veraltet.

Gibt es eine alternative Methode, die ich vermisse, oder wurde sie einfach ohne eine äquivalente Ersetzung / erweiterte Funktion veraltet?


Nun, wie Sie erwähnen, dass die URL nicht von einer Servlet-Anfrage kommt, ist die richtige Antwort, wie üblich, davon abhängig .

Das Problem mit dem Abfrageteil einer URL besteht darin, dass es keine klare Spezifikation darüber gibt, wie die Parameterduplizierung gehandhabt werden soll.

Betrachten Sie zum Beispiel eine URL wie diese:

http://www.example.com?param1=value1&param2=value2&param1=value3

Was erwartest du als Wert für param1? der erste Wert, der letzte, ein Array? Das Problem ist, dass laut den Spezifikationen alle diese Antworten gültig sind und der Serveranbieter frei ist, eines dieser oder eines anderen zu unterstützen. Einige verwenden die Param1 [] -Notation, um anzugeben, dass sie als ein Array behandelt werden muss, aber auch dies ist keine einheitliche Lösung.

Die beste Lösung besteht also darin, zu wissen, wie die Zielparameter gehandhabt werden, und das Verhalten mit einer selbst erstellten Dienstprogrammklasse nachzuahmen.






query-string