4.

5.

6.

Лабораторная работа № 5

ЦЕЛЬ РАБОТЫ

Целью данной лабораторной работы является ознакомление с технологией MVC, а также разработка веб-сайта с использованием «ша- блонизатора» на основе предыдущей лабораторной работы.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Про технологии MVC было подробно рассказано в теоретической части учебно-методического пособия. А сейчас мы подробно рассмотрим тему библиотеки FreeMarker.

FreeMaker — это написанная на Java библиотека, предназначенная для реализации механизма шаблонов. Шаблоны работают с текстом, подставляя в текст значения переменных. Цепочка следующая. Есть исходный текст, он представляет собой HTML с особыми тэгами (выражениями — не HTML, а именно шаблонизатора; язык FreeMaker называется FTL, FreeMaker Template Language). Далее этот текст проходит через некоторый процесс, называемый рендерингом. Выходом является текст. Но в нем воспринимаемые шаблонизатором тэги уже заменены на конкретные значения. На этом этапе обычно остается «чистый» HTML — страница в том виде, в каком она будет передана клиенту.

Структура работы библиотеки FreeMarker хорошо видна на рис. 2.4.

Структура работы библиотеки FreeMarker

Рис. 2.4. Структура работы библиотеки FreeMarker

Наиболее часто шаблонизатор применяется следующим образом. Создается класс, в котором собирается вся необходимая для отображения информация (изъятая из model MVC). И этот класс используется в качестве основы (контекста) для работы шаблонизатора, для получения HTML из заготовки (шаблона).

Рассмотрим следующий пример. Есть шаблон, текстовый файл с именем ourTemplate.html, содержащий следующую строку.

Здравствуйте, ${userName}!

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

В Java-классе необходимо выполнить следующие действия.

  • 1. HashMap renderContext = new HashMap ();
  • 2. renderContext.put ("userName", getCurrentUser O.getName ());
  • 3. Template template = fmConfig.getTemplate ("ourTemplate.html");
  • 4. StringWriter writer = new StringWriter ();
  • 5. template.process (renderContext, writer);
  • 6. String html = writer.toString ();
  • 7. sendToClient (html);

Создается словарь (HashMap). В элемент с именем userName помещается ФИО текущего пользователя, полученное вызовом функций getCurrentUser O.getName (). Дальше создается объект-шаблон (template) основанный на ранее сформированной конфигурации (fmConfig) из файла outTemplate.html, и к нему применяем операцию process.

На выходе получаем текстовую строку, которая будет содержать примерно следующее: <Ы>Здравствуйте, Иванов Иван Иванович!

Мы оживили страницу, заменив шаблон на реальное значение переменной. Такую HTML-строку можно отправлять.

FreeMaker способен заменять шаблоны на реальное значение переменных — это значит сильно упрощать ситуацию. FreeMaker имеет достаточно развитый язык, позволяющий создавать списки, производить условные переходы и т.д. Кроме того, если чего-то не хватило в самом FTL, можно определить и свои собственные директивы (практически это вряд ли понадобится, но такая возможность есть).

Пример списка, сделанного при помощи механизма шаблонов. Пример шаблона:

  • 1. < table >
  • 2. <#list Users as u >

3.

${u.getLastName ()} ${u.getFirstName ()}

Строка в таблице фигурирует один раз. Класс контекста мог бы выглядеть следующим образом:

Полученный после рендеринга HTML будет выглядеть примерно следующим образом:

1. < table >

2.

3. Иванов

4. HBaH

5.

6.

7. Петров

8. neTp

9.

10.

11. Николаев

12. Николай

13.

14. < /table>

Отметим две вещи:

FreeMaker работает с текстом. У него текст на входе и текст на выходе. HTML — это частный случай применения механизма шаблонов. Это может быть и JavaScript, и CSS, и вообще все что угодно. В случае с рендерингом через шаблонизатор JavaScript появляется удобный механизм начального заполнения переменных на клиенте значениями из серверной части.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Постановка задачи:

1. Разобраться с технологией MVC и библиотекой FreeMarker. Используя библиотеку FreeMarker, изменить структуру вашего

сайта, результата предыдущей лабораторной работы.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >