Rumah > Java > javaTutorial > Apakah yang `ServletContext.getRealPath('/')` lakukan, dan mengapa saya harus mengelak daripada menggunakannya dalam aplikasi Java EE moden?

Apakah yang `ServletContext.getRealPath('/')` lakukan, dan mengapa saya harus mengelak daripada menggunakannya dalam aplikasi Java EE moden?

Patricia Arquette
Lepaskan: 2024-12-22 13:11:10
asal
655 orang telah melayarinya

What does `ServletContext.getRealPath(

Apakah maksud servletcontext.getRealPath("/") dan bilakah saya harus menggunakannya?

Pengenalan

Dalam aplikasi servlet Java, the Kaedah ServletContext#getRealPath() digunakan untuk menukar laluan kandungan web relatif kepada laluan sistem fail cakera mutlak. Laluan yang ditentukan boleh sama ada fail atau direktori dalam kandungan web. Walau bagaimanapun, kaedah ini harus digunakan dengan berhati-hati dan secara amnya tidak digalakkan dalam pembangunan Java EE moden.

Penggunaan getRealPath("/")

The / dalam getRealPath("/") mewakili akar direktori kandungan web. Ia ialah laluan sistem fail mutlak ke direktori yang mengandungi fail web.xml aplikasi web. Contohnya, dalam struktur projek berikut:

YourWebProject/
    src/
    :
    web/
        META-INF/
        WEB-INF/
        index.jsp
        login.jsp
        :
Salin selepas log masuk

Jika anda melaksanakan getRealPath("/"), ia akan mengembalikan laluan sistem fail ke direktori web, seperti /path/to/server/work /folder/some.war/web.

Berhati-hati dan Had

Walaupun getRealPath() boleh berguna dalam situasi tertentu, ia mempunyai beberapa had dan biasanya tidak digalakkan atas sebab berikut:

  • Tulisan tidak berterusan: Perubahan yang dibuat pada fail yang ditulis menggunakan getRealPath() akan hilang semasa penempatan semula Fail WAR.
  • Pergantungan pengembangan: Kebolehpercayaan getRealPath() bergantung pada konfigurasi pelayan untuk mengembangkan fail WAR. Jika WAR tidak dikembangkan kepada sistem fail cakera, getRealPath() mungkin mengembalikan laluan yang salah atau batal.
  • Tiada kes penggunaan mudah alih: Biasanya terdapat alternatif yang lebih mudah alih dan boleh dipercayai untuk menggunakan getRealPath ().

Alternatif kepada getRealPath()

Daripada menggunakan getRealPath(), pertimbangkan alternatif ini:

  • Gunakan ServletContext#getResourceAsStream() untuk mendapatkan InputStream untuk sumber dalam web kandungan.
  • Gunakan ServletContext#getResourcePaths() untuk mendapatkan semula senarai laluan sumber yang tersedia.
  • Gunakan ServletContext#getResource() untuk mendapatkan URL bagi sumber.
  • Untuk muat naik fail atau penciptaan fail sementara, rujuk pautan "Lihat juga". di bawah.

Lihat Juga

  • [getResourceAsStream() vs FileInputStream](https://stackoverflow.com/questions/4212943/resource-as-inputstream-in-java-best-practice)
  • [Cara yang disyorkan untuk simpan fail yang dimuat naik dalam servlet aplikasi](https://stackoverflow.com/questions/5797716/recommended-way-to-save-uploaded-files-in-a-servlet-application)
  • [Cara mudah untuk menyimpan data mengenai penempatan semula web Java EE 7 application](https://stackoverflow.com/questions/11736935/simple-ways-to-keep-data-on-redeployment-of-java-ee-7-web-application)

Atas ialah kandungan terperinci Apakah yang `ServletContext.getRealPath('/')` lakukan, dan mengapa saya harus mengelak daripada menggunakannya dalam aplikasi Java EE moden?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan