Помощь в написании студенческих работ
Антистрессовый сервис

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

РефератПомощь в написанииУзнать стоимостьмоей работы

Отделить одинаковую (статичную) часть от всех страниц (одна из которых обязательно является меню) в отдельный HTML-файл. На выходе получаем текстовую строку, которая будет содержать примерно следующее: Здравствуйте, Иванов Иван Иванович! Данный пример позволяет нам не прописывать статично имя пользователя, а задать его через функцию шаблонизатора. Рассмотрим следующий пример. Есть шаблон… Читать ещё >

Лабораторная работа № 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.
  • 2.

3.

${u.getLastName ()}${u.getFirstName ()}
  • 7.
  • 8.

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

  • 1. HashMap context = new HashMap ();
  • 2. //Собираем всех пользователей, которых мы хотим получить
  • 3. //в таблице на экране — в вектор.
  • 4. Vector Users = new Vector ();
  • 5. Useru = new User («Иванов», «Иван», «Иванович»); Users. add (ul);
  • 6. User u2 = new User («Петров», «Петр», «Петрович»); Users. add
  • (u2);
  • 7. User u3 = new User («Николаев», «Николай», «Николаевич»); Users. add (u3);
  • 8. //Теперь в контекст в качестве именованной переменной помещаем сам вектор.
  • 9. context. put («Users», Users);

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

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

ИвановHBaH
ПетровneTp
НиколаевНиколай

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

  • 1) строк в таблице стало столько, сколько элементов в коллекции Users в контексте. Если их будет 100, значит, директива FreeMaker выполнится 100 раз, и получаем HTML с таблицей, состоящей из 100 строк;
  • 2) в качестве переменной, которая заменится шаблонизатором на реальное значение, не обязательно должно выступать именно значение. Это может быть и функция, которая вызовется автоматически, и в шаблон будет подставлен результат работы этой функции.

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

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

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

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

  • 1.1. Отделить одинаковую (статичную) часть от всех страниц (одна из которых обязательно является меню) в отдельный HTML-файл.
  • 1.2. Все созданные ранее страницы изменить в соответствии с требованиями работы с библиотекой FreeeMarker.
  • 2. При организации ответа нужно объединить страницы меню и запрашиваемую страницу с помощью FreeMarker.
Показать весь текст
Заполнить форму текущей работой