Различные макеты и i18n в приложении JSP
-
02-07-2019 - |
Вопрос
У меня есть куча файлов JSP и серверная часть в Tomcat.У меня есть 3 разные версии JSP с одинаковой логикой внутри, но с разными макетами.Итак, если я изменю какую-то логику, мне придется исправить три файла JSP.
Каково правильное решение для такого сценария?Я подумал о стеке XML и XSLT:Серверная часть предоставляет только данные в формате XML, а для каждого макета у меня есть XSLT, который творит чудеса.
Представьте себе, что вам нужно обеспечить в JSP stackoverflow на разных языках.Логика та же, но схема другая.
Не могли бы вы указать мне какое-нибудь направление?
Решение
Узнайте о MVC (Model View Controller) и идее о том, что JSP должен быть его частью View и не должен содержать никакой логики.Логика принадлежит классу модели.
Другие советы
Обычно это решается использованием какого-либо шаблонизатора — вы создаете более мелкие фрагменты страниц, а затем объявляете шаблонизатору, что определенные представления должны состоять из этих частей, соединенных определенным образом.
Плитки Struts — классический пример в мире Java, но они действительно устарели и неудобны по сравнению с более современными платформами на Java и других языках.Гобелен и Калитка — два более современных (правда, ими не пользовался).
Хотя для всего лишь 3 страниц применение целого веб-фреймворка, вероятно, будет излишним, но если ваш сайт будет расти...
С простым старым JSP без каких-либо знаменитостей:
1) Используйте контроллеры для выполнения обработки и используйте JSP только для отображения данных
2) Использование JSP включает директивы для включения заголовка, навигации, меню, нижнего колонтитула и других необходимых общих/общих элементов для всех этих макетов.
Или/и:
Используйте следующее в web.xml
<jsp-property-group>
<url-pattern>/customers/*</url-pattern>
<include-prelude>/shared/layout/_layout_customers_top.jsp</include-prelude>
<include-coda>/shared/layout/_layout_customers_bottom.jsp</include-coda>
</jsp-property-group>
Шаблон URL-адреса определяет, какие jsps получают какие фрагменты jsp (части в Ruby on Rails), прикрепленные сверху/снизу.
Взгляните на Тайлс.
Это очень классическая проблемная область, и существует множество концепций и фреймворков, которые пытаются решить эту проблему (фреймворки MVC, такие как Struts и JSF, а также SessionBeans).Поскольку я подозреваю, что вы на самом деле не являетесь «евангелистом Java» в сфере предпринимательства, я дам вам два простых совета.
Очевидно, в ваших JSP много избыточного кода.Извлеките этот код в «настоящие» Java-классы и используйте их во всех своих JSP.Таким образом, вы сможете изменять бизнес-логику в одном месте, и избыточность станет меньшей проблемой.
Взгляните на каскадные таблицы стилей (CSS).Это современный способ макетирования веб-страниц.Возможно, вам даже не понадобятся разные JSP для разных макетов, если у вас хорошо спроектирован html + CSS.
С уважением