>Java >java지도 시간 >Java의 URL에서 도메인 이름을 어떻게 안정적으로 추출할 수 있습니까?

Java의 URL에서 도메인 이름을 어떻게 안정적으로 추출할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-02 01:52:30940검색

How Can You Reliably Extract Domain Names from URLs in Java?

URL에서 도메인 이름 추출

URL이 주어지면 도메인 이름을 추출하는 것은 웹 개발 및 데이터 처리에서 일반적인 작업입니다. 그러나 URL 구문의 복잡성과 잠재적인 극단적인 사례로 인해 어려울 수 있습니다.

이 토론에서는 URL에서 도메인 이름을 추출하고 잠재적인 함정과 극단적인 사례를 해결하는 Java 솔루션을 제공합니다.

향상된 Java 솔루션

제공된 솔루션은 URL 구문 분석에 java.net.URL 대신 java.net.URI를 사용합니다.

<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>

이 접근 방식은 java.net과 관련된 여러 문제를 방지합니다. .URL(예: 서비스 거부 공격에 대한 취약성 및 상대 URL에 대한 지원 부족)

가장자리 사례 처리

다음을 포함한 여러 가지 극단적인 경우에 대해 원래 솔루션이 실패합니다.

  • 상대 URL: 스키마가 없는 URL(예: "http://google.com").
  • 대소문자를 구분하지 않는 프로토콜: 프로토콜이 소문자가 아닌 URL(예: "HTTP://example.com").
  • 프로토콜 상대 URL: "//"로 시작하는 구성표가 없는 URL.
  • "www" 경로 구성 요소가 있는 상대 URL: "www"로 시작하는 상대 경로가 있는 URL.
  • "www"로 시작하는 도메인 이름 단, "www"는 제외: "www" 앞에 선행 문자가 있는 도메인 이름이 있는 URL.

정규 표현식 솔루션

복잡하고 잠재적으로 유효하지 않은 형식의 URL인 경우, RFC 3986의 부록 B를 기반으로 하는 정규식을 사용할 수 있습니다. 그러나 이 접근 방식은 더 복잡하며 모든 극단적인 경우를 올바르게 처리하지 못할 수도 있습니다.

결론

URL에서 도메인 이름을 추출하려면 주의가 필요합니다. URL 구문과 잠재적인 극단적인 경우를 고려합니다. 제공된 Java 솔루션은 이러한 많은 문제를 해결하고 안정적인 도메인 이름 추출을 보장합니다. 더 복잡한 URL이나 유효하지 않은 입력을 처리할 때는 정규식 기반 파서가 필요할 수 있습니다.

위 내용은 Java의 URL에서 도메인 이름을 어떻게 안정적으로 추출할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.