Автор работы: Пользователь скрыл имя, 12 Октября 2010 в 00:07, Не определен
1. Технология JavaServer Faces
2. Понятие Managed Bean и конфигурация JSF-проекта
3. Демонстрационная задача и реализация
ЙА КУРСАВИГ
Содержание
Введение
В настоящее время развитие web-технологий крайне интенсивно. Десять лет назад в процессе разработки интернет-приложений программистам приходилось буквально вручную формировать HTML-поток с помощью CGI, но уже через несколько лет были созданы более удобные средства (такие, как JSP, ASP, PHP), которые позволили разделить дизайн страниц и бизнес-логику. Однако и эти средства не так легки (например, смесь программного кода и HTML-разметки в PHP-приложениях).
В связи с выше описанным возникла необходимость создания технологии разработки web-приложений с приминением объектно-ориентированной парадигмы. Корпорация Microsoft создала технолгию ASP.NET, а Sun Microsystems — бесплатную альтернативную технологию под названием JavaServer Faces.
Целью настоящей работы является изучение базового уровня JSF и построение простого демонстрационного web-приложения.
1. Технология JavaServer Faces
JSP (JavaServer Pages) — технология, позволяющая веб-разработчикам динамически генерировать HTML, XML и другие веб-страницы. Является составной частью единой технологии создания бизнес-приложений J2EE1. Технология позволяет внедрять Java-код, а также EL (expression language) в статичное содержимое страницы. Также могут использоваться библиотеки JSP тегов для внедрения их в JSP-cтраницы. Страницы компилируются JSP-компилятором в сервлеты, представляющие собой Java-классы, которые выполняются на сервере. Сервлеты также могут быть написаны разработчиком, не используя JSP-страницы. Эти технологии могут дополнять друг друга.
JSP — одна из высокопроизводительных технологий, так как весь код страницы транслируется в java-код сервлета с помощью компилятора JSP страниц Jasper, и затем компилируется в байт-код виртуальной машины java (JVM). Сервлет-контейнеры (Tomcat), способные исполнять JSP страницы, написаны на платформонезависимом языке Java, который может работать под различными операционными системами и платформами. Сервлет-контейнеры могут работать как полноценные самостоятельные веб-серверы, работать поставщиком страниц для другого веб-сервера или интегрироваться в J2EE сервер приложений. Web-контейнер обеспечивает обмен данными между сервлетом и клиентами, берет на себя выполнение таких функций, как создание программной среды для функционирующего сервлета, идентификацию и авторизацию клиентов, организацию сессии для каждого из них.
JavaServer Faces (JSF) — это MVC2 фреймворк для веб-приложений, основанный на JSP и написанный на Java. Он служит для того, чтобы облегчать разработку пользовательских интерфейсов для Java EE приложений.
Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента (рис. 1):
Рисунок
1. Схема «модель-представление-
В отличие от прочих MVC фреймворков, которые управляются запросами, подход JSF основывается на использовании компонент. Состояние компонентов пользовательского интерфейса сохраняется, когда пользователь запрашивает новую страницу и затем восстанавливается, если запрос повторяется.
Технология JavaServer Faces включает:
Разработанная
быть гибкой, технология JavaServer Faces усиливает
существующие, стандартные концепции
пользовательского интерфейса (UI) и концепции
Web-уровня без привязки разработчика к
конкретному языку разметки, протоколу
или клиентскому устройству. Классы компонент
пользовательского интерфейса, поставляемые
вместе с технологией JavaServer Faces, содержат
функциональность компонент, а не специфичное
для клиента отображение, открывая тем
самым возможность рендеринга JSF-компонент
на различных клиентских устройствах.
Совмещая функциональность компонент
интерфейса пользователя со специальными
рендерерами, разработчики могут конструировать
специальные теги для заданного клиентского
устройства. В качестве удобства технология
JSF предоставляет специфичный рендерер
и специальную библиотеку JSP-тегов для
рендеринга на HTML-клиенте, позволяя разработчикам
приложений на J2EE платформе использовать
технологию JSF в своих приложениях.
2. Понятие Managed Bean и конфигурация JSF-проекта
JavaBeans — классы в языке Java, написанные по определённым правилам. Они используются для объединения нескольких объектов в один (bean) для удобной передачи данных.
Спецификация Sun Microsystems определяет JavaBeans, как «универсальные программные компоненты, которые могут управляться с помощью графического интерфейса». JavaBeans обеспечивают основу для многократно используемых, встраиваемых и модульных компонентов ПО. Компоненты JavaBeans могут принимать различные формы, но наиболее широко они применяются в элементах графического пользовательского интерфейса. Одна из целей создания JavaBeans — взаимодействие с похожими компонентными структурами.
Managed Bean — это особый вид JavaBean, созданный с использованием Dependency Injection, который представляет некоторый запущенный ресурс в виртуальной java-машине (например, исполнимое приложение или какой-либо сервис).
В парадигме JSF managed beans можно использовать для представления состояния web-приложения, для хранения информации о текущем пользователе, для взаимодействия с бизнес-логикой (в т.ч. работа с БД) и т.д.
Для конфигурации JSF-приложения используются два XML-файла: web.xml и faces-config.xml.
Пример
faces-config.xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
"http://java.sun.com/dtd/web-
<faces-config>
<managed-bean>
<managed-bean-name>test</
<managed-bean-class>testpack.
<managed-bean-scope>session</
</managed-bean>
<navigation-rule>
<navigation-case>
<from-outcome>result</from-
<to-view-id>/result.jsp</to-
</navigation-case>
</navigation-rule>
</faces-config>
В данном примере определён managed bean, соответствующий классу MyTest пакета testpack, с жизненным циклом, равным одной сессии, а также правило навигации, согласно которому при исходе «result» пользователь будет автоматически перенаправлен к представлению, соответствующему адресу: /result.jsp.
Обращение
к полям класса MyTest из jsp-страниц
происходит, как можно видеть из их исходного
кода, с помощью конструкций вида #{test.ИмяПоля}.
3. Демонстрационная задача и реализация
Необходимо разработать web-приложение, позволяющее проводить тестирование пользователей с последующим выводом результатов.
В качестве интегрированной среды разработки программного обеспечения используется NetBeans IDE 5.5.1 со встроенным web-сервером Tomcat 5.5.17.
Структура проекта представлена на рисунке 2.
Рисунок
2. Структура проекта
Во всех jsp-страницах для улучшения дизайна используется CSS, определённая в файле .\css\public.css. Таким образом, есть возможность быстро и легко менять вид отображаемых страниц заменой css-файла на подходящий.
Конфигурационный файл web.xml определяет главной страницей файл index.jsp, а страницей вывода ошибки — файл error.jsp. Файл faces-config.xml определяет managed bean и одно правило навигации, как и в выше приведенном примере.
Класс MyTest соответствует managed bean с названием test, представляющему текущего пользователя и его ответы, и содержит статические массивы, хранящие вопросы теста и варианты ответов. Цикл жизни test определён как session, что значит, что при каждой новой сессии будет создан новый экземпляр класса MyTest.
Файл
index.jsp описывает приветственную страницу
проекта, отображающую единственную ссылку
на страницу тестирования (рис. 3).
Рисунок
3. Отображение index.jsp
Файл
test.jsp соответствует странице тестирования
(рис. 4, 5), на которой отображается номер
вопроса, текст вопроса, возможные варианты
ответа и три кнопки: «Назад» (активна,
если текущий вопрос не первый), «Вперёд»
(активная, если текущий вопрос не последний)
и «Результат» (отображается, если текущий
вопрос последний; при нажатии даёт исход
«result», который описан в faces-config.xml: переход
к result.jsp).
Рисунок
4. Отображение test.jsp
Рисунок
5. Отображение test.jsp
Файл
result.jsp соответствует странице отображения
результатов тестирования (рис. 6), на которой
отображается количество правильно данных
ответов и общее количество вопросов.
Рисунок
6. Отображение result.jsp
В случае попытки обратиться к несуществующей странице, web-приложение переадресует пользователя на страницу error.jsp (рис. 7).
Рисунок
7. Отображение error.jsp
В
настоящей работе опущено рассмотрение
jsp- и jsf-тегов, используемых в jsp-страницах.
4. Исходный код
Ниже
приведены исходные коды файлов демонстрационного
проекта, описанного в предыдущем разделе.
4.1. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/
<context-param>
<param-name>com.sun.faces.
<param-value>false</param-
</context-param>
<context-param>
<param-name>com.sun.faces.
<param-value>true</param-