У нас есть большое приложение с 13 модулями. В зависимости от требований заказчика мы можем развернуть базовый модуль + специальные модули заказчика. Мы планируем разбить приложение на несколько войн. Теперь проблема в том, что у нас есть некоторые общие jsp, такие как header.jsp, error.jsp и т. д. Есть ли способ, с помощью которого мы можем сохранить общие jsp в основной войне, и остальные войны смогут их использовать, или я должен скопировать эти jsp в отдельных войнах в процессе сборки. Я знаю, что файлы CSS и Javascript могут быть разделены между несколькими войнами в упаковке для ушей, но не уверен насчет jsp.
совместное использование общих JSP в нескольких войнах в EAR
Ответы (1)
Хороший вопрос. Вы будете рады услышать, что ответ «да», хотя это сильно зависит от того, как настроен ваш контейнер сервлетов.
Это делается с помощью тега JSTL <c:import>
, который имеет необязательный атрибут context
, который определяется как:
Имя контекста (начинающееся с символа /) другого локального веб-приложения, из которого нужно импортировать ресурс.
Допустим, у вас есть веб-приложение A, развернутое в корневом контексте /A
, и веб-приложение B, развернутое в /B
, тогда JSP в A может включать x.jsp
из B, используя:
<c:import context="/B" url="x.jsp"/>
Все это очень красиво и радужно, но это должно пройти через механизм безопасности контейнера сервлетов, и это может не разрешить операцию. Например, в Tomcat для атрибута crossContext
должно быть установлено значение true
а>.