Frage

Ich bin auf der Suche Parsen einer URL zu erhalten, eine Sammlung der querystring-Parameter in Java.Um klar zu sein, ich brauche das Parsen einer URL(oder string-Wert ein URL-Objekt), nicht die URL aus einem servlet-Anfrage.

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

Gibt es eine alternative Methode, die ich vermisse, oder ist er nur veraltet, ohne einen gleichwertigen Ersatz/erweiterte-Funktion?

War es hilfreich?

Lösung

Nun, wie Sie erwähnen, dass die URL nicht von einer Servlet-Anforderung kommt, die richtige Antwort ist, wie üblich, es hängt .

Das Problem mit Abfrage Teil einer URL ist, dass es keine klare Angabe darüber, wie Parameter Duplizierung zu behandeln.

Betrachten wir zum Beispiel eine URL wie diese:

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

Was möchten Sie als Wert für param1 erwarten? der erste Wert, der letzte, ein Array? Das Problem ist, dass nach den Spezifikationen, die alle diese Antworten sind gültig und Server-Hersteller sind frei, eine von diesen oder anderen zu unterstützen. Einige nutzen die param1 [] Notation, um anzuzeigen, dass es als Array behandelt werden muss, aber auch dies ist nicht eine einheitliche Lösung.

So ist die „beste“ Lösung ist, zu wissen, wie Sie Ihren Ziel-Handle-Parameter und das Verhalten mit einer selbstgemachten Utility-Klasse zu imitieren.

Andere Tipps

Ich denke, die Idee ist, die HttpServletRequest statt.Es ist die getParameterMap(), getParameterNames() und getParameterValues () - Methode zu starten.

Es ist auch das getParameter(String paramname) - Methode, um den Wert einer bestimmten Methode.

Diese machen keinen Unterschied zwischen querystring-Parameter, und die Parameter form, obwohl, so, wenn Ihre Absicht war, suchen Sie nach einem querystring in bestimmten dann denke ich, würde dies nicht helfen.

Soweit ich weiß, gibt es nicht ein.

Es sollte nicht allzu schwierig sein, einen zu schreiben, sich aber. Der schwierigste Teil, denke ich, wäre es, die Namen / Werte URL Decodierung (was wirklich nicht so schwer ist, wenn man darüber nachdenkt), und Sie können eine href verwenden <= "http://java.sun.com/ j2se / 1.4.2 / docs / api / java / net / URLDecoder.html # decode (java.lang.String,% 20java.lang.String)“rel = "nofollow noreferrer"> java.net.URLDecoder#decodeURL(String,String) dafür.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top