Звичайна відповідь "що це правильний шлях?" або "це правильний шлях?" це ..... це залежить .
Все, що я можу зробити, - це сказати вам плюси і мінуси конкретних ідей. Далі 100% моя думка. Я не знаю жодних конкретних вимог чи правил. Я впевнений, що хтось не погодиться зі мною.
Програми JSP
Давайте попрацюємо над тим, додавати JSP в WEB-INF чи ні.
Плюси розміщення JSP в WEB-INF:
- Ви керуєте тим, як виконуються програми JSP. Якщо ви хочете, щоб параметр JSP був параметризований і повторно використаний (що все-таки дуже важко з JSP), ви можете помістити їх у WEB-INF і використовувати сервлет або контролер дії Struts або інший передній контролер для попередньої обробки а потім передавати управління JSP, передаючи в потрібному контексті середовища (наприклад, атрибути запиту, будь-які перевірки безпеки, санація параметрів тощо)
- Ви можете програмно або навіть на рівні брандмауера або рівня IDS блокувати HTTP-запити до * .jsp, щоб зменшити ймовірність того, що хтось завантажить JSP у веб-корінь і потім зможе виконати код як веб-сервер. Їм доведеться переписати існуючий JSP. Не величезний приріст безпеки, але це робить компроміс трохи складніше.
- Застосовує хороші звички, такі як MVC, передній контролер, фільтри сервлетів, інжектор залежностей тощо, на відміну від великого жахливого JSP, який виконує всю роботу сам і важко читати / підтримувати.
Мінуси розміщення JSP в WEB-INF:
- Ви не можете отримати доступ до сторінки безпосередньо, навіть якщо це проста окрема сторінка, яка не потребує попередньої обробки. Це тому, що файли під / WEB-INF контейнером сервлетів не передаються.
Статичні файли
З точки зору чисто статичних файлів, таких як HTML, зображення, таблиця стилів, javascript тощо, покладіть їх під веб-корінь (my_app у вашому випадку), але НЕ / WEB-INF (тому що це недоступно).
Загальний макет
Що стосується загальної верстки каталогу, вона дещо залежить від вашого процесу збирання. Мені подобається зберігати все під "src" або "source", оскільки це дає зрозуміти, які файли створюються шляхом побудови та які є чистими вихідними файлами. main
дозволяє вам відокремити тестовий код, як класи Джуніт, від основного вихідного коду, що також добре. Але якщо у вас немає одиничних тестів (о, ні!), То це безглузда відмінність.
З іншого боку, якщо ви взагалі не маніпулюєте веб-корінцем під час збирання (наприклад, якщо це всі JSP та статичні файли), то, можливо, ви тримаєте його на найвищому рівні, як-от /webroot
або /deploy
копіюєте файли в міру необхідності, наприклад, файли .class або .jar. Це звичка людини (особливо розробників) надмірно організовуватись. Хорошим знаком переорганізації є наявність великої кількості папок із лише однією підпапкою.
Що ви показали
Ви вказали, що дотримуєтесь конвенції, встановленої maven, тому якщо ви вже використовуєте maven, просто дотримуйтесь цього макета. З описаним вами макетом абсолютно нічого поганого.