Я собираюсь выбрать способ организации своего представления (с помощью spring -mvc, но это не должно иметь большого значения)
Насколько я понимаю, есть 6 вариантов (хотя они не исключают друг друга):
- Плитки
- Sitemesh
- Freemarker
- Скорость
<jsp:include>
<%@ include file="..">
Плитки и Sitemesh можно группировать; так же можно Freemarker и Velocity. Какой из них использовать в каждой группе, не обсуждается, по этому поводу достаточно вопросов и дискуссий.
Это интересное чтение, но можно Я вполне убедил меня использовать плитку.
У меня вопрос - что дают эти фреймворки, чего нельзя правильно сделать с <@ include file="..">
и JSTL. Основные моменты (некоторые взяты из статьи):
Включая части страниц, такие как верхний и нижний колонтитулы - нет разницы между:
<%@ include file="header.jsp" %>
и
<tiles:insert page="header.jsp" />
Определение параметров в заголовке, таких как заголовок, метатеги и т. д. Это очень важно, особенно с точки зрения SEO. С помощью параметров шаблонов вы можете просто определить заполнитель, который должна определять каждая страница. Но вы можете использовать jsp с JSTL, используя
<c:set>
(на включенной странице) и<c:out>
(на включенной странице)Реорганизация макета - если вы хотите переместить строку навигации над меню или поле входа над другой боковой панелью. Если включения страниц (с jsp) не организованы должным образом, вам может потребоваться изменить каждую страницу в таких случаях. Но если ваш макет не слишком сложен, и вы помещаете общие элементы в верхний / нижний колонтитулы, вам не о чем беспокоиться.
Связь между общими компонентами и конкретным содержанием - я не вижу в этом проблемы. Если вы хотите повторно использовать какой-либо фрагмент, переместите его на страницу, на которой нет верхнего / нижнего колонтитула, и включите его везде, где это необходимо.
Эффективность -
<%@ include file="file.jsp" %>
более эффективен, чем что-либо еще, потому что он компилируется один раз. Все остальные параметры анализируются / выполняются много раз.Сложность - для всех решений, отличных от jsp, требуются дополнительные XML-файлы, дополнительные включения, конфигурации препроцессора и т. д. Это как кривая обучения, так и введение большего количества потенциальных точек отказа. Кроме того, это делает поддержку и изменение более утомительными - вам нужно проверить несколько файлов / конфигураций, чтобы понять, что происходит.
Заполнители - дают ли скорость / freemarker что-нибудь большее, чем JSTL? В JSTL вы помещаете заполнитель и используете модель (помещенную в область запроса или сеанса контроллерами) для заполнения этих заполнителей.
Итак, убедите меня, что я должен использовать любую из вышеперечисленных структур вместо / в дополнение к обычному JSP.