Heim  >  Artikel  >  Java  >  Wie extrahiere ich Domänennamen zuverlässig aus URLs in Java?

Wie extrahiere ich Domänennamen zuverlässig aus URLs in Java?

Linda Hamilton
Linda HamiltonOriginal
2024-11-03 04:21:31699Durchsuche

How to Reliably Extract Domain Names from URLs in Java?

Domänennamen aus URLs extrahieren

Domänennamen aus URLs zu extrahieren ist eine häufige Aufgabe in der Webentwicklung und -programmierung. Für diese Aufgabe gibt es mehrere Ansätze, aber die einfachste und robusteste Methode ist die Verwendung der Klasse java.net.URI.

Original-Java-Code

Der bereitgestellte Java Der Code verwendet die Klasse java.net.URL, um den Domänennamen zu extrahieren. Obwohl dieser Ansatz in den meisten Fällen funktionieren mag, weist er Einschränkungen und potenzielle Nachteile auf.

Einschränkungen des Originalcodes:

  • Es wird davon ausgegangen, dass die URL mit beginnt „http“ oder „https“, was möglicherweise nicht immer der Fall ist (z. B. relative URLs).
  • Es führt eine DNS-Suche durch, wenn URLs mit der Methode „equals“ verglichen werden, was es anfällig für Denial-of-Service macht Angriffe.

Alternativer Ansatz mit URI

Der bevorzugte Ansatz ist die Verwendung der Klasse java.net.URI, die eine standardisierte und zuverlässige Möglichkeit zum Parsen bietet und URLs manipulieren. Der folgende Codeausschnitt demonstriert diesen Ansatz:

<code class="java">public static String getDomainName(String url) throws URISyntaxException {
    URI uri = new URI(url);
    String domain = uri.getHost();
    return domain.startsWith("www.") ? domain.substring(4) : domain;
}</code>

Dieser Code analysiert zunächst die URL in ein URI-Objekt mithilfe des neuen URI(url)-Konstruktors. Anschließend wird der Domänenname mit der Methode getHost() abgerufen, die die Hostkomponente des URI zurückgibt. Wenn die Host-Komponente mit „www.“ beginnt, wird das Präfix „.www“ mit der Substring-Methode entfernt.

Zu berücksichtigende Randfälle

Auch bei der Verbesserung URI-basierter Ansatz, einige Randfälle können immer noch Probleme verursachen:

  • URLs mit relativen Pfaden (z. B. „httpfoo/bar“)
  • Protokolle, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird (z. B. „HTTP ://example.com/")
  • Protokollrelative URLs (z. B. „//example.com/")
  • Relative URLs mit Pfadkomponenten, die mit „www“ beginnen (z. B. "www/foo")

Um diese Randfälle zu handhaben, ist möglicherweise ein umfassenderer Parsing-Mechanismus erforderlich, wie z. B. der in RFC 3986 Anhang B bereitgestellte reguläre Ausdruck.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich Domänennamen zuverlässig aus URLs in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn