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:
- Anda mengontrol bagaimana JSP dijalankan. Jika Anda ingin JSP menjadi parameter dan dapat digunakan kembali (yang benar-benar sulit dengan JSP), Anda dapat memasukkannya ke WEB-INF dan menggunakan servlet atau pengontrol aksi Struts atau pengontrol depan lainnya untuk melakukan pra-pemrosesan dan kemudian memberikan kontrol ke JSP, meneruskan dalam konteks lingkungan yang tepat (seperti atribut permintaan, pemeriksaan keamanan, sanitasi parameter, dll.)
- Anda dapat secara terprogram atau bahkan pada tingkat firewall atau IDS memblokir permintaan HTTP ke * .jsp untuk mengurangi kemungkinan seseorang mengunggah JSP ke root web dan kemudian dapat menjalankan kode sebagai server web. Mereka harus menulis JSP yang sudah ada secara berlebihan. Bukan keuntungan keamanan yang besar, tetapi itu membuat kompromi sedikit lebih sulit.
- Menegakkan kebiasaan baik, seperti MVC, pengontrol depan, filter servlet, injeksi dependensi, dll. Sebagai kebalikan dari JSP besar yang melakukan semua pekerjaan itu sendiri dan sulit untuk dibaca / dipelihara.
Kontra menempatkan JSP di WEB-INF:
- Anda tidak dapat mengakses halaman secara langsung, bahkan jika itu adalah halaman mandiri sederhana yang tidak memerlukan pemrosesan di muka. Ini karena file di bawah / WEB-INF tidak dapat ditampung oleh wadah servlet.
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.