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