Sebagai pemula untuk J2EE, saya baru-baru ini mulai mengembangkan proyek saya sendiri dari awal menggunakan Core of J2EE: Servlets & Jsps.
Saya tidak dapat mengevaluasi apakah struktur folder proyek saya benar atau tidak. Ini adalah struktur folder proyek saya.
Sebelum mengajukan pertanyaan, saya akui bahwa saya tidak dapat menjawab atau tidak membenarkan jika seseorang bertanya kepada saya, mengapa jenis struktur folder ini. Pertanyaannya: Apakah ini pertanda baik untuk menempatkan jsps saya di luar web-inf. Jika tidak, mengapa demikian? Jika ya mengapa?
Apakah ada konvensi struktur folder standar untuk aplikasi web J2EE, saya tahu maven telah memunculkan beberapa standar tapi tetap saja, kita dapat menyesuaikan sesuai kebutuhan yang saya percaya.
Saya telah melakukan sedikit googling dan menemukan dua referensi 1 2
di mana dalam jawaban tidak pada halaman yang sama, dari mana saya tidak bisa menarik kesimpulan apa pun.
Apa poin yang harus dipertimbangkan ketika meletakkan struktur folder untuk aplikasi web J2EE, yang penting di mana seharusnya Jsps, konten statis harus masuk ke & mengapa?
Jawaban:
Struktur standar untuk file WAR adalah:
Maven membuat ini untuk Anda menggunakan src / main / java, sumber daya, webapp, dan dependensi Anda (menempatkannya di / lib) di maven-webapp-plugin , tetapi itulah implementasinya. Hal penting untuk disadari adalah bahwa apa pun yang Anda masukkan ke WEB-INF tidak dapat diakses secara eksternal , sedangkan semua yang ada di direktori root WAR adalah untuk publik.
Umumnya Anda tidak ingin memasukkan banyak ke dalam root, karena Anda ingin aplikasi Anda menangani semua akses menggunakan servlet dan filter yang Anda tentukan di web.xml. Adalah umum untuk melihat index.html (atau .jsp) di root yang dialihkan ke servlet, misalnya tindakan Struts .
Implementasi MVC khas seperti Stripes atau Struts merekomendasikan terhadap pengguna mengakses JSP secara langsung, lebih memilih bahwa JSP hanya untuk tampilan. Mereka merekomendasikan membuat pengendali yang meneruskan ke JSP setelah memproses permintaan, dan JSP hanya memberikan hasilnya. Misalnya, mengirimkan formulir untuk
/login
menjalankan tindakan yang memproses permintaan login, membuat sesi pengguna, dan meneruskan pengguna ke tampilan login dari halaman utama JSP.sumber
Jawaban yang biasa untuk "apa jalan yang benar?" atau "apakah ini jalan yang benar?" adalah ..... itu tergantung .
Yang bisa saya lakukan adalah memberi tahu Anda pro dan kontra untuk ide-ide spesifik. Yang berikut adalah 100% pendapat saya. Saya tidak tahu persyaratan atau aturan khusus. Saya yakin seseorang akan tidak setuju dengan saya.
JSP
Mari kita bekerja apakah akan menempatkan JSP di WEB-INF atau tidak.
Kelebihan menempatkan JSP di WEB-INF:
Kontra menempatkan JSP di WEB-INF:
File statis
Dalam hal file yang murni statis seperti HTML, gambar, stylesheet, javascript, dll. Letakkan di bawah root web (my_app dalam kasus Anda), tetapi BUKAN / WEB-INF (karena tidak dapat diakses).
Tata letak keseluruhan
Adapun tata letak direktori secara keseluruhan, itu agak tergantung pada proses build Anda. Saya suka menyimpan segala sesuatu di bawah "src" atau "sumber" karena itu membuat jelas file apa yang dihasilkan oleh bangunan dan mana yang merupakan file sumber murni.
main
memungkinkan Anda memisahkan kode tes seperti kelas junit dari kode sumber utama Anda, yang juga bagus. Tetapi jika Anda tidak memiliki tes unit (oh tidak!), Maka itu perbedaan yang tidak berarti.Di sisi lain, jika Anda tidak memanipulasi root web sama sekali selama membangun (seperti jika itu semua JSP dan file statis), maka mungkin Anda menyimpannya di tingkat atas, suka
/webroot
atau/deploy
dan salin file sesuai kebutuhan, seperti File .class atau .jar. Ini adalah kebiasaan manusia (terutama pengembang) untuk mengatur secara berlebihan. Pertanda pengorganisasian yang berlebihan adalah memiliki banyak folder dengan hanya satu folder.Apa yang Anda Tunjukkan
Anda telah mengindikasikan bahwa Anda mengikuti konvensi yang ditetapkan oleh pakar, jadi jika Anda sudah menggunakan pakar, tetap saja dengan tata letak itu. Sama sekali tidak ada yang salah dengan tata letak yang Anda uraikan.
sumber
Nah, src / main / webapp Anda pasti mengingatkan saya pada sebuah proyek pakar. Yang mana yang bagus.
Untuk my_app / jsps saya tidak yakin. Pengembang biasanya meninggalkan jsp mereka di folder webapp, atau jika Anda ingin melakukan sedikit pemetaan url, di direktori webapp / jsp.
!Peringatan! : Anda seharusnya tidak pernah menaruh file jsp di web-inf. WEB-INF Anda hanya boleh berisi file xml untuk mengonfigurasi situs web Anda. Ingat, jsp Anda adalah halaman web atau bagian dari halaman web.
Anda dapat menggunakan nama folder seperti templat, sebagian ... apa pun yang terasa baik untuk Anda. Seharusnya mudah ditemukan untuk orang asing. Hanya pisahkan berbagai jenis konten seperti halaman penuh, template, tampilan sebagian ...
sumber
Saya setuju dengan Brice . Saya pemula juga di J2EE, tapi saya pikir lebih baik bekerja dengan mudah dan jelas pada awalnya.
Folder root adalah WEBAPP, dan Anda harus membuat struktur web Anda berpikir bahwa sebagian besar halaman akan ditemukan di sana. Jika tidak, saat halaman berkomunikasi di antara mereka, Anda mungkin tidak dapat mengelola hubungan file tanpa kesalahan.
sumber
Sebenarnya aplikasi WAR dapat dibangun tanpa
WEB-INF/web.xml
. Dimungkinkan untuk membuat aplikasi WAR dengan hanya kelas Java di dalamnya.Sumber: Elemen Descriptor Penerapan web.xml
Jadi saat ini dimungkinkan untuk membangun PERANG daripada yang terlihat seperti JAR dengan
.war
ekstensi :)Menjawab pertanyaan Anda, struktur WAR tergantung pada kebutuhan Anda.
http://en.wikipedia.org/wiki/WAR_(Sun_file_format)
sumber