Alternative zu veraltet javax.- servlet.http.HttpUtils.parseQueryString?
Ich bin auf der Suche zum analysieren einer URL zu erhalten, eine Sammlung der querystring-Parameter in Java. Klar, ich muss zum analysieren einer URL(oder string-Wert eines URL-Objekts), nicht den URL ein servlet Anfrage.
Sieht es aus, als wenn die javax.servlet.http.HttpUtils.parseQueryString
Methode wäre die offensichtliche Wahl, aber es wurde abgelehnt.
Gibt es eine alternative Methode, die mir fehlen, oder hat es einfach nur veraltet, ohne einen gleichwertigen Ersatz/verbesserte Funktion?
- Mangel an Lösungen für solch einfache Aufgaben ist das, was abstößt Menschen aus Java. (Und das kommt von einen Java-Typ.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, wie Sie erwähnen, dass die URL nicht von einem servlet Anfrage die richtige Antwort ist, wie gewohnt, es hängt davon ab,.
Das problem mit query-Teil einer url ist, dass es keine klare Angabe darüber, wie handle Parameter der Vervielfältigung.
Betrachten Sie zum Beispiel eine url wie diese:
Was erwarten Sie als Wert für param1? der erste Wert, der Letzte, ein array? Das Problem ist, dass, entsprechend den Angaben, alle diese Antworten sind gültig und server-Anbieter sind frei, die Unterstützung von einem von diesen oder einem anderen. Einige nutzen die param1 [] - notation, um zu zeigen, dass Sie behandelt werden wie ein array, aber nochmals, dies ist nicht eine einheitliche Lösung.
Also die "beste" Lösung ist, um zu wissen, wie Sie Ihre Ziel-handle Parameter, und imitieren das Verhalten mit einem self-made-utility-Klasse.
Ich denke, die Idee ist es, den HttpServletRequest statt. Es ist die getParameterMap () getParameterNames() und getParameterValues () - Methoden zu beginnen.
Gibt es auch die getParameter(String Parametername) - Methode, um den Wert einer bestimmten Methode.
Diese machen keinen Unterschied zwischen den querystring-Parameter und die Parameter form, obwohl, so dass, wenn Ihre Absicht war für einen querystring in bestimmten dann denke ich, dass das nicht hilft.
Verwenden org.apache.http.client.utils.URLEncodedUtils.html#parse(org.apache.http.HttpEntity)
Soweit ich weiß, gibt es nicht.
Sollte es nicht allzu schwierig sein, zu schreiben, selbst eines zu aber. Der schwierigste Teil, ich kann mir vorstellen, wäre die Decodierung der URL-name/Werte (die ist wirklich nicht schwer, wenn man darüber nachdenkt), und Sie können
java.net.URLDecoder#decodeURL(String,String)
für, die.