Соглашение об организации файла Webapp (структура разработки)
Для webapps, которые я разрабатываю, я обычно использую следующую организацию файлов, так как я считаю, что она соблюдает соглашение:
src
|-- main
|-- resources
| |-- *.properties
| |-- *.xml
| |-- spring
| |-- applicationContext.xml (main application context config file)
|-- webapp
|-- WEB-INF
|-- spring
| |-- spring-mvc.xml (web application context config file, delegated to manage only the web part)
| |-- spring-security-http.xml (web security config)
|-- static
| |-- *.css
| |-- *.js
|-- views
| |-- *.jsp
|-- web.xml (deployment configuration)
Что я хотел бы попробовать, так это организовать мои файлы в соответствии со следующей структурой:
src
|-- main
|-- resources
| |-- *.properties
| |-- *.xml
| |-- web.xml
| |-- spring
| |-- applicationContext.xml
| |-- spring-mvc.xml
| |-- spring-security-http.xml
|-- webapp
|-- WEB-INF
|-- static
| |-- *.css
| |-- *.js
|-- views
|-- *.jsp
Конечно, при упаковке webapp файлы будут перемещены там, где они есть (например, файл web.xml в папке WEB-INF). Причина, по которой я хотел бы реорганизовать мои webapps, как указано выше, заключается в том, что мне удобнее иметь все файлы конфигурации *.xml в одном месте, вместо того, чтобы иметь здесь и некоторые там. Разве это плохая идея, по вашему мнению, нарушить мою первоначальную структуру? Если да, то почему? Почему так важно иметь все файлы веб-конфигурации в папке WEB-INF?
PS: технически я знаю, как хорошо соединить все файлы в пути класса Webapp. Вопрос касается скорее соглашения и отзывов от личного/профессионального опыта.
Ответы
Ответ 1
Вы можете создать веб-проект Java - это некоторая популярная среда IDE, например Eclipse, NetBeans, IntelliJ IDEA, чтобы увидеть типичную структуру веб-приложений Java.
И существует разница между структурой разработки и структурой упаковки.
При разработке приложения вы можете в значительной степени использовать любую структуру, которая вам нравится. Но вы должны упаковывать веб-приложение Java EE в соответствии с конкретными правилами.
Посмотрите официальное учебное пособие по Java EE:
Java EE 7 Tutorial: Packaging
Java EE 6 Tutorial: Приложения для упаковки
Учебник Java EE 6: Пример структуры каталогов (здесь просто игнорируйте информацию, связанную с NetBeans)
Также здесь рекомендуются соглашения для структурирования приложений, разработанных с использованием платформы Java 2, Enterprise Edition (хотя датированы, но могут быть полезны):
Руководства Java Blueprints.
Соглашения по проектам для корпоративных приложений
И вот пример из приведенной выше Java BluePrints:
![Web Applications: Recommended Directory Structure]()
ОБНОВЛЕНИЕ
Вот пример из одного из моих проектов веб-приложений Java с Spring.
Например, я сохранил все связанные файлы конфигурации Spring в специально созданной папке Spring внутри WEB-INF. И в папке Spring я создал больше папок, чтобы лучше организовать мое приложение. Опять же, это всего лишь один из возможных вариантов, т.е. вопрос личных предпочтений.
![Spring project structure example]()
Ответ 2
Веб файл должен находиться в каталоге WEB-INF. Это единственное место, где будут работать серверы приложений. Кроме того, spring xml файлы могут быть в ресурсах (которые попадают в путь к классам).