From 2c4ca9fec04dc227750a349c8bb40983b8a62d4e Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Tue, 26 Dec 2017 15:08:07 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A8=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=82=D0=BE=D1=80=20Thymeleaf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++ .../skeleton/springmvc/SpringConfigMVC.java | 55 +++++++++++++++++++ .../dmitriymx/skeleton/springmvc/WebApp.java | 12 ---- .../skeleton/springmvc/WebAppController.java | 10 ++-- src/main/resources/templates/index.html | 11 ++++ 5 files changed, 77 insertions(+), 17 deletions(-) create mode 100644 src/main/java/ru/dmitriymx/skeleton/springmvc/SpringConfigMVC.java create mode 100644 src/main/resources/templates/index.html diff --git a/pom.xml b/pom.xml index d799a93..74145ca 100644 --- a/pom.xml +++ b/pom.xml @@ -71,6 +71,12 @@ lombok 1.16.16 + + org.thymeleaf + thymeleaf-spring4 + 3.0.9.RELEASE + + diff --git a/src/main/java/ru/dmitriymx/skeleton/springmvc/SpringConfigMVC.java b/src/main/java/ru/dmitriymx/skeleton/springmvc/SpringConfigMVC.java new file mode 100644 index 0000000..1364d0c --- /dev/null +++ b/src/main/java/ru/dmitriymx/skeleton/springmvc/SpringConfigMVC.java @@ -0,0 +1,55 @@ +package ru.dmitriymx.skeleton.springmvc; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.ViewResolver; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.thymeleaf.TemplateEngine; +import org.thymeleaf.spring4.SpringTemplateEngine; +import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver; +import org.thymeleaf.spring4.view.ThymeleafViewResolver; +import org.thymeleaf.templatemode.TemplateMode; +import org.thymeleaf.templateresolver.ITemplateResolver; + +/** + * Данный класс является файлом настройки контекста для Spring + */ +@Configuration +@EnableWebMvc +public class SpringConfigMVC extends WebMvcConfigurerAdapter{ + @Autowired + private ApplicationContext applicationContext; + + private ITemplateResolver templateResolver(){ + SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); + resolver.setApplicationContext(applicationContext); + resolver.setPrefix("classpath:/templates/"); + resolver.setTemplateMode(TemplateMode.HTML); + resolver.setCacheable(true); + resolver.setSuffix(".html"); + return resolver; + } + + private TemplateEngine templateEngine(){ + SpringTemplateEngine engine = new SpringTemplateEngine(); + engine.setTemplateResolver(templateResolver()); + return engine; + } + + /** + * Компонент, отвечающий за отображение шаблонов + * + * @return {@link ViewResolver} + */ + @Bean + public ViewResolver viewResolver() { + ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); + viewResolver.setTemplateEngine(templateEngine()); + viewResolver.setContentType("text/html;charset=UTF-8"); + viewResolver.setCache(true); + return viewResolver; + } +} diff --git a/src/main/java/ru/dmitriymx/skeleton/springmvc/WebApp.java b/src/main/java/ru/dmitriymx/skeleton/springmvc/WebApp.java index 836e05e..80efcf6 100644 --- a/src/main/java/ru/dmitriymx/skeleton/springmvc/WebApp.java +++ b/src/main/java/ru/dmitriymx/skeleton/springmvc/WebApp.java @@ -7,13 +7,10 @@ import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Slf4jLog; -import org.springframework.context.annotation.Configuration; import org.springframework.web.context.ContextLoaderListener; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import java.net.InetSocketAddress; @@ -23,15 +20,6 @@ public class WebApp { private final String host; private final int port; - /** - * Данный класс является файлом настройки контекста для Spring - * однако, т.к. мы никакие бины не объявляем, то красс пустует - */ - @Configuration - @EnableWebMvc - public static class SpringConfigMVC extends WebMvcConfigurerAdapter { - } - /** * Создаем Spring-контекст * diff --git a/src/main/java/ru/dmitriymx/skeleton/springmvc/WebAppController.java b/src/main/java/ru/dmitriymx/skeleton/springmvc/WebAppController.java index 45b493a..1390e4c 100644 --- a/src/main/java/ru/dmitriymx/skeleton/springmvc/WebAppController.java +++ b/src/main/java/ru/dmitriymx/skeleton/springmvc/WebAppController.java @@ -1,8 +1,8 @@ package ru.dmitriymx.skeleton.springmvc; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; /** * Здесь описываются все пути, что начинаются с '/' @@ -14,11 +14,11 @@ public class WebAppController { /** * Обработка корневого запроса '/' * - * @return Сырое строковое значение + * @return Название шаблона */ @RequestMapping - @ResponseBody - public String index() { - return "Hello world!"; + public String index(Model model) { + model.addAttribute("message", "Hello world!"); + return "index"; } } diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html new file mode 100644 index 0000000..a827f85 --- /dev/null +++ b/src/main/resources/templates/index.html @@ -0,0 +1,11 @@ + + + + + Skeleton - SpringMVC + + +

Thymeleaf template engine

+

message

+ +