From 87e0ffe0deaed7354d2bd8139a76c78b6135c5a7 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Tue, 26 Dec 2017 14:15:23 +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=20Freemarker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 10 +++++ .../skeleton/springmvc/SpringConfigMVC.java | 42 +++++++++++++++++++ .../dmitriymx/skeleton/springmvc/WebApp.java | 12 ------ .../skeleton/springmvc/WebAppController.java | 10 ++--- src/main/resources/templates/index.ftl | 12 ++++++ 5 files changed, 69 insertions(+), 17 deletions(-) create mode 100644 src/main/java/ru/dmitriymx/skeleton/springmvc/SpringConfigMVC.java create mode 100644 src/main/resources/templates/index.ftl diff --git a/pom.xml b/pom.xml index d799a93..d9fa758 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,11 @@ spring-webmvc ${spring.version} + + org.springframework + spring-context-support + ${spring.version} + @@ -71,6 +76,11 @@ lombok 1.16.16 + + org.freemarker + freemarker + 2.3.23 + 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..1f20de9 --- /dev/null +++ b/src/main/java/ru/dmitriymx/skeleton/springmvc/SpringConfigMVC.java @@ -0,0 +1,42 @@ +package ru.dmitriymx.skeleton.springmvc; + +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.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; +import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver; + +/** + * Данный класс является файлом настройки контекста для Spring + */ +@Configuration +@EnableWebMvc +public class SpringConfigMVC extends WebMvcConfigurerAdapter { + /** + * Компонент, отвечающий за отображение шаблонов + * + * @return {@link ViewResolver} + */ + @Bean + public ViewResolver viewResolver() { + FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver(); + viewResolver.setContentType("text/html;charset=UTF-8"); + viewResolver.setCache(true); + viewResolver.setSuffix(".ftl"); + return viewResolver; + } + + /** + * Настройки для Freemarker + * + * @return {@link FreeMarkerConfigurer} + */ + @Bean + public FreeMarkerConfigurer freemarkerConfig() { + FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); + freeMarkerConfigurer.setTemplateLoaderPath("classpath:/templates/"); + return freeMarkerConfigurer; + } +} 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.ftl b/src/main/resources/templates/index.ftl new file mode 100644 index 0000000..79bc730 --- /dev/null +++ b/src/main/resources/templates/index.ftl @@ -0,0 +1,12 @@ +[#ftl] + + + + + Skeleton - SpringMVC + + +

Freemarker template engine

+

${message}

+ +