Selesaikan masalah jalur di java web:
Jalur yang digunakan dalam Java dibagi menjadi dua jenis: jalur absolut dan jalur relatif. Pada akhirnya, Java hanya dapat menggunakan jalur absolut untuk menemukan sumber daya. Semua metode menemukan sumber daya di jalur relatif hanyalah beberapa metode yang nyaman. Tetapi API yang membantu kita membangun jalur absolut di bagian bawah untuk menemukan sumber daya!
Saat mengembangkan aplikasi web, Anda sering perlu mendapatkan jalur fisik webroot saat ini di server.
Jika itu adalah servlet, tindakan, pengontrol, atau filter, pendengar, pencegat dan kelas terkait lainnya, kita hanya perlu mendapatkan servletContext, dan kemudian menggunakan servletcontext.getRealpath ("/") untuk mendapatkan alamat fisik aplikasi saat ini di server.
Jika ServletContext tidak dapat diambil di kelas, ada dua cara untuk melakukannya:
1. Gunakan mekanisme pemuatan kelas Java untuk memanggil xxx.class.getClassLoader (). GetResource (""); Metode untuk mendapatkan classpath, dan kemudian memproses untuk mendapatkan direktori webroot. Metode ini hanya dapat berlaku di bawah webroot/web-inf/kelas. Jika kelas dikemas ke dalam file jar, metode ini tidak valid. Pada saat ini, metode berikut harus digunakan.
2. Gagasan kerangka kerja musim semi. Di web-inf/web.xml, buat param WebApprootKey, tentukan nilai (default adalah webapp.root) sebagai nilai kunci, dan kemudian jalankan string webapprootkey = getservercontext (). GetRealPath ("/"); melalui pendengar, atau filter, atau servlet. Kemudian tulis webapp.root yang sesuai dengan webapprootkey sebagai kunci dan nilai ke dalam properti sistem properti sistem. Kemudian, jalur fisik webroot diperoleh melalui system.getProperty ("webapp.root") dalam program.
Menurut ide kedua, kita dapat memperluasnya lebih lanjut. Namun, untuk aplikasi yang digunakan di server, jika bukan kebutuhan Anda, silakan baca.
Berikut adalah beberapa cara untuk mendapatkan Classpath dan jalur absolut ke kelas saat ini. Anda dapat menggunakan beberapa metode ini untuk mendapatkan jalur absolut ke sumber daya yang Anda butuhkan:
1.
Debitnoteaction.class.getResource ("")Apa yang Anda dapatkan adalah direktori URI dari file kelas saat ini filetest.class. Tidak termasuk diri Anda sendiri!
menyukai:
File:/D:/Eclipse/SpringTest/Webroot/Web-Inf/Kelas/
ATCARNET/SRC/COM/EVI/MODULES/ATACARNET/ACTION/
2.
Debitnoteaction.class.getResource ("/")Apa yang Anda dapatkan adalah jalur URI absolut dari classpath saat ini.
menyukai:
File:/D:/Eclipse/SpringTest/Webroot/Web-Inf/Kelas/
3.
Thread.currentThread (). GetContextClassLoader (). GetResource ("")Apa yang Anda dapatkan juga merupakan jalur URI absolut dari Classpath saat ini
menyukai:
File:/D:/Eclipse/SpringTest/Webroot/Web-Inf/Kelas/
4.
Debitnoteaction.class.getClassLoader (). GetResource ("")atau
Classloader.getsystemResource ("")Apa yang Anda dapatkan juga merupakan jalur URI absolut dari Classpath saat ini.
menyukai:
File:/D:/Eclipse/SpringTest/Webroot/Web-Inf/Kelas/
5. Dapatkan jalur relatif server
System.getProperty ("user.dir")Misalnya: E: /APACHE-TOMCAT-5.5.16/apache-tomcat-5.5.16/bin
Saya sarankan menggunakan thread.currentThread (). GetContextClassLoader (). GetResource ("") untuk mendapatkan notasi URI dari jalur absolut dari ClassPath saat ini
6. Dapatkan jalur absolut dalam proyek
Umumnya digunakan
request.getrealpath ("/")atau
request.getrealpath ("/config/")Tetapi tidak disarankan untuk menggunakan request.getRealPath ("/"). Anda dapat mencoba metode servletContext.getRealPath ("/") untuk mendapatkan jalur absolut ke direktori root aplikasi web
Sangat mudah untuk mendapatkan file SRC, karena SRC adalah direktori relatif default. Misalnya, jika Anda mengatakan Anda ingin mendapatkan file test.java di direktori com di bawah SRC, Anda hanya membutuhkan ini untuk menjadi cukup.
File f = file baru (com/test.java);
Tetapi jika saya ingin mendapatkan file yang tidak ada di direktori SRC atau direktori webroot, saya perlu mendapatkannya dari tingkat SRC atau Webroot yang sama, misalnya, dokumen
Metode keras saya diimplementasikan seperti ini:
String path = this.getSerVletContext (). GetRealPath ("/"); properti p = properties baru (); p.load (FileInputStream baru (file baru (path.substring (0, (path.LastIndexof ("// webroot") +)) + + "doc/db.properties"))); System.out.println (p.getProperty ("drivername"));Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!