Рубрики
Без рубрики

Шаблонные двигатели для весны

Откройте для себя двигатели шаблонов, совместимые с Spring, и посмотрите простые примеры.

Автор оригинала: baeldung.

1. Обзор

Веб-структура Spring построена вокруг шаблона MVC (Model-View-Controller), что упрощает раздельные проблемы в приложении. Это позволяет использовать различные технологии представления, от хорошо затеянные технологии JSP до различных шаблонных двигателей.

В этой статье мы собираемся взглянуть на основные шаблонные двигатели, которые могут быть использованы с Spring, их конфигурацию и примеры использования.

2. Технологии весеннего просмотра

Учитывая, что проблемы в приложении Spring MVC полностью отделены от перехода от технологии одного представления к другой, это в первую очередь вопрос конфигурации.

Чтобы визуализировать каждый тип представления, необходимо определить ПосмотретьРесольвер фасоли, соответствующей каждой технологии. Это означает, что мы можем вернуть имена представлений из @Controller методы отображения таким же образом, как мы обычно возвращаем файлы JSP.

В следующих разделах мы будем использовать более традиционные технологии, такие как Страницы Java Server , а также основные шаблонные двигатели, которые могут быть использованы с Spring: Тимьян , Груви , ФриМаркер, Джейд.

Для каждого из них мы пройдите через конфигурацию, необходимую как в стандартном приложении Spring, так и в приложении, построенном с Весенняя загрузка .

3. Страницы Java-сервера

JSP является одной из самых популярных технологий представления java-приложений и поддерживается Spring out-of-the-box. Для рендеринга файлов JSP обычно используется тип ПосмотретьРесольвер фасоль ВнутреннийРесурсПросмотрРесольвер :

@EnableWebMvc
@Configuration
public class ApplicationConfiguration implements WebMvcConfigurer {
    @Bean
    public ViewResolver jspViewResolver() {
        InternalResourceViewResolver bean = new InternalResourceViewResolver();
        bean.setPrefix("/WEB-INF/views/");
        bean.setSuffix(".jsp");
        return bean;
    }
}

Далее мы можем начать создавать файлы JSP в /WEB-INF/просмотры местоположение:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

    
        
        User Registration
    
    
        
            Email: 
            
            Password: 
            
            
        
    

Если мы добавляем файлы в Весенняя загрузка приложения, то вместо того, чтобы в ПриложениеКонфигурация класса, мы можем определить следующие свойства в application.properts файл:

spring.mvc.view.prefix: /WEB-INF/views/
spring.mvc.view.suffix: .jsp

Основываясь на этих свойствах, Весенняя загрузка будет автоматически настроить необходимые ПосмотретьРесольвер .

4. Тимьян

Тимьян это движок шаблонов Java, который может обрабатывать HTML, XML, текст, JavaScript или CSS файлы. В отличие от других шаблонных двигателей, Тимьян позволяет использовать шаблоны в качестве прототипов, что означает, что они могут рассматриваться как статические файлы.

4.1. Зависимость от Maven

Интеграция Тимьян с весны, мы должны добавить тимьяновый и тимьян-весна4 Зависимости:


    org.thymeleaf
    thymeleaf
    3.0.11.RELEASE


    org.thymeleaf
    thymeleaf-spring5
    3.0.11.RELEASE

Если у нас есть проект Весна 4, то мы должны добавить тимьян-весна4 .

4.2. Весенняя конфигурация

Далее нам нужно добавить конфигурацию, которая требует СпрингТемплатеАнгин фасоли, а также ШаблонРесолвер боб, который определяет местоположение и тип файлов представления.

SpringResourceTemplateResolver интегрирован с механизмом разрешения ресурсов Spring:

@Configuration
@EnableWebMvc
public class ThymeleafConfiguration {
 
    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(thymeleafTemplateResolver());
        return templateEngine;
    }

    @Bean
    public SpringResourceTemplateResolver thymeleafTemplateResolver() {
        SpringResourceTemplateResolver templateResolver 
          = new SpringResourceTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/views/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");
        return templateResolver;
    }
}

Кроме того, нам нужна ПосмотретьРесольвер фасоль типа ТимолифВьюРесолвер :

@Bean
public ThymeleafViewResolver thymeleafViewResolver() {
    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
    viewResolver.setTemplateEngine(templateEngine());
    return viewResolver;
}

4.3. Шаблоны тимьяна

Теперь мы можем добавить HTML-файл в ВЕБ-INF/просмотры местоположение:


    
        
        User Registration
    
    
        
Email: Password:

Тимьян шаблоны очень похожи по синтаксису на HTML-шаблоны.

Некоторые функции, доступные при использовании Тимьян в весеннем приложении:

    • поддержка определения поведения форм
    • привязка входных данных к моделям данных
    • проверка входов формы
    • отображение значений из источников сообщений
    • рендеринг фрагментов шаблонов

Вы можете прочитать больше об использовании Тимьян шаблоны в нашей статье Тимьян весной MVC .

4.4. Тимьян в весенней загрузке

Весенняя загрузка обеспечит автоматическую конфигурацию для Тимьян добавив весна-загрузка-стартер-тимьян- зависимость:


    org.springframework.boot
    spring-boot-starter-thymeleaf
    2.3.3.RELEASE

Нет необходимости в явной конфигурации. По умолчанию HTML-файлы должны быть помещены в ресурсы/шаблоны местоположение.

5. ФриМаркер

ФриМаркер — движок шаблонов на основе Java, построенный Фонд программного обеспечения Apache . Он может быть использован для создания веб-страниц, а также исходный код, XML файлы, файлы конфигурации, электронные письма и другие текстовые форматы.

Поколение делается на основе файлов шаблонов, написанных с помощью FreeMarker Шаблон Язык .

5.1. Зависимость от Maven

Чтобы начать использовать шаблоны в нашем проекте, нам нужна фримаркер зависимость:


    org.freemarker
    freemarker
    2.3.23

Для весенней интеграции нам также нужна весна-контекст-поддержка зависимость:


    org.springframework
    spring-context-support
    5.2.8.RELEASE

5.2. Весенняя конфигурация

Интеграция ФриМаркер с Spring MVC требует определения FreemarkerConfigurer фасоль, которая определяет местоположение файлов шаблона:

@Configuration
@EnableWebMvc
public class FreemarkerConfiguration {
 
    @Bean 
    public FreeMarkerConfigurer freemarkerConfig() { 
        FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); 
        freeMarkerConfigurer.setTemplateLoaderPath("/WEB-INF/views/");
        return freeMarkerConfigurer; 
    }
}

Далее нам необходимо определить соответствующий ПосмотретьРесольвер фасоль типа FreeMarkerViewРесольвер :

@Bean 
public FreeMarkerViewResolver freemarkerViewResolver() { 
    FreeMarkerViewResolver resolver = new FreeMarkerViewResolver(); 
    resolver.setCache(true); 
    resolver.setPrefix(""); 
    resolver.setSuffix(".ftl"); 
    return resolver; 
}

5.3. Шаблоны FreeMarker

Мы можем создать HTML-шаблон с помощью ФриМаркер в ВЕБ-INF/просмотры местоположение:

<#import "/spring.ftl" as spring/>

    
        
        User Registration
    
    
        
<@spring.bind path="user" /> Email: <@spring.formInput "user.email"/> Password: <@spring.formPasswordInput "user.password"/>

В приведенной выше примере мы импортировали набор макросов, определенных Весной для работы с формами в ФриМаркер , включая обязательные входные данные к моделям данных.

Кроме того, FreeMarker Шаблон Язык содержит большое количество тегов, директив и выражений для работы с коллекциями, структурами управления потоками, логическими операторами, строками форматирования и разбора, числами и многими другими функциями.

5.4. FreeMarker в весенней загрузке

В Весенняя загрузка приложения, мы можем упростить необходимую конфигурацию с помощью весна-загрузка-стартер-freemarker зависимость:


    org.springframework.boot
    spring-boot-starter-freemarker
    2.3.3.RELEASE

Этот стартер добавляет необходимую автоматическую конфигурацию. Все, что нам нужно сделать, это начать размещение наших файлов шаблонов в ресурсы/шаблоны папка.

6. Груви

Весенние представления MVC также могут быть сгенерированы с помощью Groovy Markup шаблон двигателя . Этот движок основан на синтаксисе строителя и может быть использован для генерации любого текстового формата.

6.1. Зависимость от Maven

groovy-шаблоны зависимость должна быть добавлена к нашей пом.xml :


    org.codehaus.groovy
    groovy-templates
    2.4.12

6.2. Весенняя конфигурация

Интеграция Разметка шаблон двигателя с Spring MVC требует определения GroovyMarkupConfigurer фасоль и ПосмотретьРесольвер типа GroovyMarkupViewResolver :

@Configuration
@EnableWebMvc
public class GroovyConfiguration {
 
    @Bean
    public GroovyMarkupConfigurer groovyMarkupConfigurer() {
        GroovyMarkupConfigurer configurer = new GroovyMarkupConfigurer();
        configurer.setResourceLoaderPath("/WEB-INF/views/");
        return configurer;
    }
    
    @Bean
    public GroovyMarkupViewResolver thymeleafViewResolver() {
        GroovyMarkupViewResolver viewResolver = new GroovyMarkupViewResolver();
        viewResolver.setSuffix(".tpl");
        return viewResolver;
    }
}

6.3. Шаблоны Groovy Markup

Шаблоны написаны на языке Groovy и имеют несколько характеристик:

    • они компилируются в bytecode
    • они содержат поддержку фрагментов и макетов
    • они оказывают поддержку интернационализации
    • рендеринг быстр

Давайте создадим шаблон Groovy для нашей формы “Регистрация пользователей”, которая включает в себя привязки данных:

yieldUnescaped '
'                                                    
html(lang:'en') {                                                                   
    head {                                                                          
        meta('http-equiv':'"Content-Type" ' +
          'content="text/html; charset=utf-8"')      
        title('User Registration')                                                            
    }                                                                               
    body {                                                                          
        form (id:'userForm', action:'register', method:'post') {
            label (for:'email', 'Email')
            input (name:'email', type:'text', value:user.email?:'')
            label (for:'password', 'Password')
            input (name:'password', type:'password', value:user.password?:'')
            div (class:'form-actions') {
                input (type:'submit', value:'Submit')
            }                             
        }
    }                                                                               
}

6.4. Groovy шаблон двигателя в весенней загрузки

Весенняя загрузка содержит автоматическую конфигурацию для Groovy шаблон двигателя , который добавляется путем включения весна-загрузка-стартер-groovy-шаблоны зависимость:


    org.springframework.boot
    spring-boot-starter-groovy-templates
    2.3.3.RELEASE

Местоположение шаблонов по умолчанию /ресурсы/шаблоны .

7. Jade4j

Jade4j является реализация Java Мопс шаблон двигателя (первоначально известный как Джейд ) для Javascript. Jade4j шаблоны могут быть использованы для генерации HTML файлов.

7.1. Зависимость от Maven

Для весенней интеграции нам нужна весна-jade4j зависимость:


    de.neuland-bfi
    spring-jade4j
    1.2.5

7.2. Весенняя конфигурация

Использовать Jade4j с весны, мы должны определить SpringTemplateLoader фасоль, которая настраивает расположение шаблонов, а также ДжейдКонфигурация боб:

@Configuration
@EnableWebMvc
public class JadeTemplateConfiguration {
 
    @Bean
    public SpringTemplateLoader templateLoader() {
        SpringTemplateLoader templateLoader 
          = new SpringTemplateLoader();
        templateLoader.setBasePath("/WEB-INF/views/");
        templateLoader.setSuffix(".jade");
        return templateLoader;
    }
 
    @Bean
    public JadeConfiguration jadeConfiguration() {
        JadeConfiguration configuration 
          = new JadeConfiguration();
        configuration.setCaching(false);
        configuration.setTemplateLoader(templateLoader());
        return configuration;
    }
}

Далее нам нужен обычный ПосмотретьРесольвер фасоли, в данном случае типа ДжейдВьюРесолвер :

@Bean
public ViewResolver viewResolver() {
    JadeViewResolver viewResolver = new JadeViewResolver();
    viewResolver.setConfiguration(jadeConfiguration());
    return viewResolver;
}

7.3. Шаблоны Jade4j

Jade4j шаблоны характеризуются простым в использовании синтаксисом, чувствительным к белому пространству:

doctype html
html
  head
    title User Registration
  body
    form(action="register" method="post" )
      label(for="email") Email:
      input(type="text" name="email")
      label(for="password") Password:
      input(type="password" name="password")
      input(type="submit" value="Submit")

Проект также предоставляет очень полезную интерактивная документация , где вы можете просмотреть выход вашего шаблона, как вы пишете его.

Весенняя загрузка не предоставляет Jade4j стартер, так что в Загрузка проекта, мы должны были бы добавить ту же конфигурацию весны, как определено выше.

8. Другие шаблонные двигатели

Кроме того, шаблон двигателей, описанных до сих пор, Есть довольно много доступных, которые могут быть использованы.

Давайте рассмотрим некоторые из них кратко.

Скорость является более старым шаблоном двигателя, который является очень сложным, но имеет недостаток, что весна deprecated его использование с версии 4.3 и удалены полностью весной 5.0.1.

JMustache это шаблонный движок, который может быть легко интегрирован в приложение Spring Boot с помощью весна-загрузка-стартер-усы зависимость.

Пеббл содержит поддержку весны и Весенняя загрузка в своих библиотеках.

Другие шаблонные библиотеки, такие как Руль или Реагировать , работает на вершине JSR-223 скриптовый движок, такой как Насхорн , также могут быть использованы.

9. Заключение

В этой статье мы прошли через некоторые из самых популярных шаблонов двигателей для весенних веб-приложений.

И, как всегда, полный исходный код примеров можно найти более на GitHub .