Я собираюсь выбрать способ организации своего представления (с помощью 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.