#java #web-applications #netbeans
#java #веб-приложения #netbeans
Вопрос:
Я относительно новичок в Java EE и только что познакомился с традиционной структурой каталогов приложений (которая включает в себя папки BUILD, DIST, NBPROJECT, SRC и WEB). Мне было интересно: если моему приложению требуется использовать некоторые ресурсы / assets (такие как изображения или PDF-файлы) на сервере, в какую из 5 папок, перечисленных выше, мне следует разместить эти ресурсы? Я думаю, что технически я могу разместить их где угодно, если я правильно ссылаюсь на файлы, но не уверен, какова общая наилучшая практика для этого.
Ответ №1:
Обычно вы включаете статический контент, например, изображения или PDF-файлы, которые должны быть прочитаны http-запросами в WebContent, например, если my-web является вашим проектом WAR:
my-web/WebContent/images
my-web/WebContent/scripts
my-web/WebContent/misc
Это означает, что вы можете получить доступ, используя, например:
/my-web/images/bob.jpg
/my-web/scripts/bob.js
/my-web/misc/bob.pdf
Хранение файлов здесь обеспечивает общедоступный доступ. Я процитирую это со страниц справки Eclipse:
Папка веб-содержимого представляет содержимое файла WAR, который будет развернут на сервере. Любые файлы, не находящиеся в папке Web content, считаются ресурсами времени разработки (например, .java-файлы, .sql-файлы и .mif-файлы) и не развертываются при модульном тестировании или публикации проекта.
Комментарии:
1. Я использую Netbeans и не вижу папки WebContent. Нужно ли мне его создавать?? Все, что я вижу внутри веб-каталога, — это META-INF, WEB-INF и index.jsp
2. Я не пользователь NetBeans. Но я полагаю, что вы добавляете папки и статическое содержимое в папку Web Pages. Итак, у вас может быть MyWebProject / WEB-INF. Добавьте ваши файлы в MyWebProject / изображения, MyWebProject / скрипты, MyWebProject / разное. NetBeans может отображать папку с именем «Веб-страницы», поэтому поместите туда свои папки и содержимое.
3. Попался! Спасибо.. Из любопытства только что понял, что внутри каталогов DIST и WEB содержимое, которое в настоящее время находится там, идентично. В чем причина этого?
4. Я не уверен на 100% — является ли каталог DIST именно тем местом, куда копируются выходные файлы (таким образом, WEB содержит master, а DIST — это просто копия). Может быть, вы могли бы взглянуть на файловую систему, чтобы разобраться в этом.
Ответ №2:
Вам нужно подумать о том, как активы доставляются клиенту, прежде чем решать, куда их поместить. Такие ресурсы, как ccs и статические html-страницы, извлекаются клиентом с помощью отдельных HTTP-вызовов, поэтому они должны находиться в доступном месте. В вашем случае я бы сказал, что они должны быть на уровне index.jsp или в подкаталогах на этом уровне. Если вы поместите их в WEB-INF, они будут недоступны из внешнего мира. Возможно, вы могли бы поместить их в META-INF, но это было бы необычным использованием этого каталога.