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}
+
+