Rumah  >  Artikel  >  Java  >  Bagaimana Mengeluarkan Nama Domain dengan Tepat daripada URL di Java?

Bagaimana Mengeluarkan Nama Domain dengan Tepat daripada URL di Java?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 22:00:03564semak imbas

How to Accurately Extract Domain Names from URLs in Java?

Pengeluaran Nama Domain daripada URL

Tugas mengekstrak nama domain daripada URL kerap timbul. Artikel ini membincangkan pelaksanaan Java biasa untuk tugasan ini dan meneroka pendekatan alternatif untuk meningkatkan ketepatan dan mengendalikan kes kelebihan yang berpotensi.

Pelaksanaan Awal

Kod Java yang disediakan bermula dengan menormalkan URL dengan menambahkan "http://" jika perlu. Ia kemudian menghuraikan URL menggunakan java.net.URL untuk mendapatkan rentetan hos. Akhir sekali, jika hos bermula dengan "www", subrentetan selepas "www." dikembalikan sebagai nama domain.

Pendekatan Alternatif

Walau bagaimanapun, pendekatan ini mempunyai had:

  • Ia gagal mengendalikan kes kelebihan tertentu , seperti URL relatif dengan laluan bermula dengan "http" atau "www".
  • Ia menganggap protokol sentiasa huruf kecil, yang bukan andaian yang sah.
  • Ia melakukan carian DNS yang tidak perlu semasa Semakan kesamaan URL, yang boleh membawa kepada penafian serangan perkhidmatan.

Pelaksanaan Yang Dipertingkat

Untuk menangani isu ini, kami mengesyorkan menggunakan java.net.URI untuk Penghuraian URL. URI menyediakan pendekatan yang lebih mantap dan boleh dipercayai:

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

Kod ini menukar URL kepada URI, mendapatkan rentetan hos dan mengalih keluar "www." awalan jika ada.

Pertimbangan Tambahan

Walaupun dengan pelaksanaan yang dipertingkatkan, mungkin masih terdapat beberapa kes kelebihan yang perlu diberi perhatian. RFC 3986 Lampiran B menyediakan ungkapan biasa yang boleh mengendalikan senario penghuraian URI yang lebih kompleks.

Kes Tepi

Berikut ialah beberapa kes kelebihan tambahan yang pelaksanaan awal mungkin gagal untuk mengendalikan:

  • URL dengan berbilang garis miring dalam laluan atau hos
  • URL dengan aksara yang dikodkan
  • URL dengan rentetan pertanyaan atau pengecam serpihan
  • URL yang menyelesaikan kepada nama domain bukan ASCII

Secara keseluruhan, menggunakan java.net.URI untuk penghuraian URL menyediakan cara yang lebih komprehensif dan tepat untuk mengekstrak nama domain daripada URL, terutamanya apabila berurusan dengan kompleks atau berpotensi URL tidak sah.

Atas ialah kandungan terperinci Bagaimana Mengeluarkan Nama Domain dengan Tepat daripada URL di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn