Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
web-programmirovanie_uchebnoe_posobie.pdf
Скачиваний:
95
Добавлен:
09.02.2015
Размер:
4.9 Mб
Скачать

Учебное пособие по web-программированию (2013)

Рисунок 12.3.

Дополнительную информацию можно найти по адресу: http://www.tutorialspoint.com/servlets/servlets-internationalization.htm http://www.tutorialspoint.com/jsp/jsp_internationalization.htm

Тема 13. Настраиваемые теги JSP

Основы реализации настраиваемых тегов, обеспечивающих повторное использование бизнес-логики на различных веб-страницах. Подход к построению пользовательской библиотеки настраиваемых тегов.

Схема работы настраиваемых тегов приведена на рисунке 13.1.

Рисунок 13.1.

Пользователь обращается к настраиваемому тегу на JSP-странице, соответствующий тег находится в библиотеке тегов, затем в библиотеке тегов находится ссылка на соответствующий обработчик.

Соответственно, для работы настраиваемых тегов необходимо описать тег в библиотеке тегов и реализовать соответствующий java-класс. Подключение библиотеки тегов осуществляется с использованием тех же методов, что были описаны в 10 теме (директива <%@ taglib %>):

<%@ taglib prefix="mine" uri="WEB-INF/tlds/mytaglib.tld"%>

Общая структура библиотеки тегов:

<taglib> <tlib-version>2.0</tlib-version>

-58-

Учебное пособие по web-программированию (2013)

<jsp-version>2.0</jsp-version> <short-name>имя_библиотеки</short-name> <uri>путь_библиотеки</uri> <description>описание</description>

<tag>

<name>имя_тега</name> <tag-class>имя_класса</tag-class> <body-content>empty|scriptless</body-content> <atribute>

<name>имя_атрибута</name> </atribute>

</tag>

</taglib>

В теге «tag» описан обработчик тега, при этом возможны следующие варианты:

пустой тег без атрибутов

пустой тег с атрибутами

не пустой тег без атрибутов

не пустой тег с атрибутами

При создании обработчика тега средствами NetBeans информация в библиотеку тегов может записываться автоматически с использованием «мастера».

Обработчик тега должен наследоваться от класса javax.servlet.jsp.tagext.SimpleTagSupport.

Пример не пустого тега с одним строковым атрибутом, сгенерированным с использованием NetBeans приведены на рисунках 13.2 (обработчик тега), 13.3 (библиотека тегов), 13.4 (пример использования).

Рисунок 13.2.

-59-

Учебное пособие по web-программированию (2013)

Рисунок 13.3.

Рисунок 13.4.

Для работы с «телом тега» в JSP можно воспользоваться методом getJspBody() класса javax.servlet.jsp.tagext.SimpleTagSupport. В результате будет получен экземпляр класса JspFragment, использование метода invoke(StringWriter writer) позволяет получить в переменную writer «тело тега» (рисунок 13.5).

-60-

Учебное пособие по web-программированию (2013)

Рисунок 13.5.

Дополнительную информацию можно найти по адресу: http://www.tutorialspoint.com/jsp/jsp_custom_tags.htm

Тема 14. Взаимодействие с БД в веб-приложениях

Возможности создания in-memory баз данных с использованием HyperSQLDB и построения приложений с выделенным слоем взаимодействия с БД на основе Hibernate. Настройка слоя Hibernate и выборка данных из одной таблицы.

Существуют различные средства создания Data Layer — слоёв доступа к данным (начало 1 темы). В общем случае в качестве слоя доступа к данным используется ORM (object-relational mapping), который выступает в качестве прослойки между приложением и реляционной базой данных и с одной стороны обеспечивает приложению переносимость от одной БД на другую, с другой стороны упрощает разработчику работу с данными в БД, т. к. у разработчика появляется возможность взаимодействовать с данными в БД как с обычными объектами.

-61-

Учебное пособие по web-программированию (2013)

Рисунок 14.1.

В сети интернет существует большое количество описаний ORM. Мы будем рассматривать ORM Hibernate. Пример описания:

http://www.tutorialspoint.com/hibernate/hibernate_quick_guide.htm

Преимущества Hibernate (http://www.hibernate.org/):

Маппинг java-объектов на БД

Простое API для сохранения и получения объектов из БД

При изменении структуры БД нужно только изменить XML-описание, чтобы связка заработала

Скрытие от разработчика SQL-запросов

Не нужен сервер для выполнения операций

Управляет сложными связями объектов между собой

Предоставляет простой интерфейс получения данных

Вкачестве БД для приложения будем использовать Hyper SQL DB (http://hsqldb.org). Основные преимущества данной БД:

Маленький объём (всего 1.4М)

Возможность работы напрямую с файлами

Возможность запуска в виде полноценного сервера

Возможность подключения DataLayer

Написана на Java и может быть запущена без инсталляции на компьютере

Ключевым файлом в Hyper SQL DB является hsqldb.jar. Запуск визуального средства по работе с БД:

> java -classpath ./lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

В учебных целях создадим таблицу и добавим данные (рисунок 14.2):

CREATE TABLE TEST

(ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR(60),

AMOUNT DOUBLE)

INSERT INTO TEST VALUES(1,'serge',12.3) INSERT INTO TEST VALUES(2,'michael',14.3)

-62-

Учебное пособие по web-программированию (2013)

Рисунок 14.2.

С использованием «мастеров» NetBeans создаём проект, поддерживающий

Hibernate (рисунок 14.3).

Рисунок 14.3.

С использованием «мастеров» NetBeans создаём «Классы сущностей из базы данных...» (рисунок 14.4).

-63-

Учебное пособие по web-программированию (2013)

Рисунок 14.4.

В результате для доступа к таблице test будет создан класс (рисунок 14.5). Обратите внимание, что большая часть информации по работе с БД описывается с использованием Java-аннотаций, а доступ к полям осуществляется стандартными get и set методами.

Рисунок 14.5.

Сопоставление сгенерированных классов и таблиц может быть выполнено с использованием hdm.xml файла, который создаётся «мастером» (мастер называется «Мастер сопоставления Hibernate»), на который достаточно сделать ссылку в cfg.xmlфайле (рисунок 14.6). Обратите внимание, что в сгенерированном файле сопоставления есть ссылки только на названия таблиц, а сопоставление полей придётся описывать вручную.

-64-

Учебное пособие по web-программированию (2013)

Рисунок 14.6.

Пример доработки hibernate.hbm.xml файла, в котором кроме таблиц описано сопоставление атрибутов классов и полей БД приведено на рисунке 14.7.

Рисунок 14.7.

Создание фабрики доступа к Hibernate удобно делать с помощью класса

HibernateUtil.java (рисунок 14.8).

-65-

Учебное пособие по web-программированию (2013)

Рисунок 14.7.

Пример класса доступа к БД с использованием Hibernate и результата доступа приведён на рисунке 14.8. В данном примере доступ к БД помещается в конструкцию try-catch-finally, в которой в части finally выполняется закрытие сессии. Сессия создаётся с использованием фабрики в HibernateUtil, открывается транзакция и выполняется выборка всех объектов Test из БД. При успешном окончании транзакции она помечается как выполненная успешно комадной commit().

Дополнительную информацию можно найти по адресу: http://www.tutorialspoint.com/hibernate/hibernate_quick_guide.htm http://www.tutorialspoint.com/hibernate/hibernate_query_language.htm http://www.tutorialspoint.com/hibernate/hibernate_criteria_queries.htm http://www.tutorialspoint.com/hibernate/hibernate_annotations.htm

-66-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]