Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2013_1 / КСТ / Разработка веб-приложений.pdf
Скачиваний:
246
Добавлен:
23.02.2015
Размер:
2.74 Mб
Скачать

2.Раскройте узлы Web страницы и WEB-INF проекта.

3.Сделайте двойной щелчок по faces-config.xml.

4.После открытия faces-config.xml в подокне редактора сделайте щелчок пра-

вой клавишей мыши в подокне редактора.

5.Выберите JavaServer Faces→Add Navigation Rule.

6.В диалоге Add Navigation Rule:

а) войдите на страницу, которая представляет запуск просмотра для этих

правил навигации;

б) сделайте щелчок по кнопке «Добавить».

7.Сделайте щелчок правой клавишей мыши в подокне редактора.

8.Выберите JavaServer Faces → Add Navigation Case.

9.В диалоговом окне Add Navigation Case:

а) из меню From View, выберите страницу, которая представляет стартовый

вид для правила навигации (из шага 6a);

б) (дополнительно) в поле From Action введите метод действия, вызывае-

мый при активизации компонента, который инициировал навигацию;

в) (дополнительно) в поле From Outcome введите логическую строку результата, на который ссылается активированный компонент из своего атрибу-

та action;

г) из меню To View выберите страницу, которая будет открыта, если этот случай обнаружен системой навигации;

д) сделайте щелчок по кнопке «Добавить».

Правила навигации по умолчанию

НачинаясJavaServer Faces 2.0,подразумевающиесяправиланавигациидоступ-

ны для приложений Facelets. Подразумевающиеся правила навигации используются, если никакие правила навигации не сконфигурированы в файлах конфигурации.

Когда вы добавляете UI-компонент, как например, commandButton, и назначаете страницу как значение для свойства action, обработчик навигации по умолчанию попытается найти соответствующую страницу в пределах приложения.

<h:commandButton value="submit" action="response">

В вышеуказанном примере обработчик навигации по умолчанию попытается найти страницу response.xhtml и перейти к ней.

9.8.Основные требования приложения JavaServer Faces

Дополнительно к выбору конфигурации приложения вы должны выполнить другие требования JavaServer Faces, включая правильную упаковку всех необходимых

файлов и обеспечение дескриптора развертывания. Ниже объяснено, как выполнять

эти административные задачи.

Приложения JavaServer Faces 2.0 должны удовлетворять спецификации Servlet

(по крайней мере версии 2.5) и спецификации JavaServer Pages (по крайней мере версии 2.1). Все приложения, согласованные с этой спецификацией, упакованы в WAR- файл, который должен соответствовать специфическим требованиям выполнения на

других контейнерах. Как минимум, файл WAR для приложения JavaServer Faces должен содержать следующее:

дескриптор развертывания веб-приложения web.xml;

файл конфигурации ресурсов приложения;

101

набор файлов JAR, содержащий существенные классы;

набор классов, страниц JSF и других необходимых ресурсов, как например, файлы рисунков.

Например, файл WAR приложения JSF, использующего Facelets, обычно имеет

следующую структуру папок:

$PROJECT_DIR [Web Pages] +-/[xhtml documents] +-/resources +-/WEB-INF

+- /classes +- /lib

+- /web.xml

+- /faces-config.xml +- /sun-web.xml

Файл web.xml (или дескриптор развертывания), файлы JAR и файлы приложе-

ния должны содержаться в директории WEB-INF архива WAR.

9.9.Конфигурирование приложений

вдескрипторе развертывания

Приложение конфигурируется, используя элементы, содержащиеся в дескрип-

торе развертывания. Дескриптор развертывания для JSF-приложения должен опреде-

лить конфигурации, которые включают следующее:

используемые сервлеты (servlet) для обработки запросов;

карта отображений servlet для их обработки;

путь в файл конфигурации ресурса, если он не расположен в позиции по умолчанию.

Дескриптор развертывания может также определить другие, дополнительные

конфигурации, включая:

определение, где сохраняется состояние компонент;

кодировку клиента;

сжатие сохраняемых состояний клиента;

ограничения доступа к страницам, содержащих теги JavaServer Faces;

включение проверок XML;

проверки заказными объектами.

9.9.1. Идентификация сервлетов при обработке жизненного цикла

Все запросы к приложению, которые ссылаются на хранимые JSF-компоненты,

должны пройти через обработку FacesServlet. Экземпляр подсистемы FacesServlet

управляет запросом, обрабатывает цикл жизни для веб-приложения и инициализи-

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

звать экземпляр FacesServlet для того, чтобы запустить процесс жизненного цикла приложения.

Пример определения FacesServlet:

<servlet> <servlet-name>FacesServlet</servlet-name>

102

<servlet-class>javax.faces.webapp.FacesServlet</servlet-

class>

</servlet>

Чтобы гарантировать, что экземпляр FacesServlet будет вызван, нужно обе-

спечить ему карту соответствий. Соответствие для FacesServlet может быть задано

префиксом распределения, как например, /guess/*, или расширениями, как например, *.faces. Соответствие используется, чтобы идентифицировать JSP-страницу как име-

ющую содержимое JavaServer Faces. Поэтому URL первой страницы JSP-приложения

должен включать соответствие.

В случае префиксного распределения есть два пути выполнить это:

автор страницы может включить простую страницу HTML, как например, файл index.html в приложении, который обеспечивает URL для вызова пер-

вой страницы. Этот URL должен включить путь в FacesServlet, как показано

этим тегом, который использует соответствие, определённое в приложении guessNumber:

<a href="guess/greeting.xhtml">

пользователи приложения могут включить путь к FacesServlet в URL на первую страницу, когда они вводят его в своем окне просмотра, например: http://localhost:8080/guessNumber/guess/greeting.xhtml

Второй метод позволяет запускать приложение с требуемой первой страницей. Этот метод требует знания имени первой страницы.

При использовании первого метода пользователям нужно ввести только сле-

дующее: http://localhost:8080/guessNumber

В случае задания соответствия расширением, если запрос приходит на сервер для страницы с расширением .faces, контейнер пошлет запрос в экземпляр

FacesServlet, который ожидает, что соответствующая страница с тем же самым име-

нем существует.

При использовании NetBeans IDE, момент, когда можно задать соответствие для FacesServlet — это создание вашего проекта JavaServer Faces:

1.В NetBeans IDE выбрать File>New Project.

2.В диалоге создания проекта выбрать Web из дерева категорий.

3.Выбрать «Приложение Web» в панели проектов.

4.Щелкнуть по кнопке «Далее».

5.Заполнить информацию на экране Name and Location.

6.Щелкнуть «Далее».

7.Установить переключатель JavaServer Faces на экране Framewoks.

8.Ввести соответствие, например, *.faces, в экземпляр FacesServlet в поле

Servlet URL Mapping.

9. Щелкнуть по кнопке «Конец».

После того как ваш проект будет открыт в NetBeans IDE, вы можете изменить

соответствие в FacesServlet следующим образом:

1.Расширьте узел вашего проекта в подокне проектов.

2.Расширьте узлы «Страницы Web» и WEB-INF в узле проекта.

3.Сделайте двойной щелчок по web.xml.

103

4.После того как файл web.xml появится в редакторе, щелкните по кнопке

Servlets на верху окна редактора. Конфигурация FacesServlet появляется

в редакторе.

Если вы предпочитаете редактировать файл web.xml непосредственно, выпол-

ните следующие шаги, чтобы конфигурировать соответствие в FacesServlet.

1.Вставьте элемент servlet в дескриптор развертывания.

2.В элементе servlet вставьте элемент display-name и установите его в

FacesServlet.

3.Также в элементе servlet добавьте элемент servlet-name и установите его в

FacesServlet.

4.Добавьте третий элемент servlet-class в элемент servlet и установите его в javax.faces.webapp.FacesServlet — полное имя класса FacesServlet.

5.После элемента servlet добавьте элемент servlet-mapping.

6.В элементе servlet-mapping добавьте элемент servlet-name и установите его

вFacesServlet. Это должно соответствовать имени, заданному элементом servlet-name, описанным на шаге 3.

7.В элементе servlet-mapping добавьте элемент url-pattern и установите путь

вFacesServlet независимо от того, какое соответствие вы предпочитаете. Пользователи приложения включат этот путь в URL, когда они получают доступ к приложению. Для приложения guessNumber это путь /guess/*.

9.9.2. Спецификация пути до файла конфигурации

Приложение может иметь много файлов конфигурации. Если эти файлы не расположены в директориях по умолчанию или файлы названы не faces-config.xml, то вам

нужно определять пути в эти файлы.

Чтобы определять эти пути в NetBeans IDE, сделайте следующее:

1.Расширьте узел вашего проекта в подокне проектов.

2.Расширьте узлы «Страницы Web» и WEB-INF в узле проекта.

3.Сделайте двойной щелчок по web.xml.

4.После того как файл web.xml появится в редакторе, щелкните по закладке

General подокна редактора.

5.Расширьте узел Context Parameters.

6.Сделайте щелчок по кнопке «Добавить».

7.В диалоге Add Context Parameter:

a)введите javax.faces.CONFIG_FILES в поле ParamName;

б) введите путь в ваш файл конфигурации в поле Param Value.

в) сделайте щелчок по кнопке OK.

8. Повторите шаги с 1 по 7 для каждого файла конфигурации.

Чтобы определять непосредственно пути в файлы, редактируя дескриптор раз-

вертывания, следуйте за этими шагами:

1.Добавьте элемент context-param к дескриптору развертывания.

2.Добавьте элемент param-value в элемент context-param и введите javax. faces.CONFIG_FILES.

3.Добавьте элемент param-value в элемент context-param и задайте путь

вваш файл конфигурации. Например, для конфигурации guessNumber

/WEB-INF/faces-config.xml.

Повторите шаги 2 и 3 для каждого файла конфигурации вашего приложения.

104

9.9.3. Спецификация места сохранения состояний

При выполнении методов, сохраняющих состояние, вы определяете в вашем дескрипторе развертывания, где нужно сохранять состояние: на машине клиента или

на сервере. Вы делаете это с помощью установки контекстного параметра в вашем

дескрипторе развертывания.

Чтобы определить, где сохраняется состояние, с использованием NetBeans IDE,

сделайте следующее:

1.Расширьте узел вашего проекта в подокне проектов.

2.Расширьте узлы «Страницы Web» и WEB-INF в узле проекта.

3.Сделайте двойной щелчок web.xml.

4.После того как файл web.xml появится в редакторе, щелкните по кнопке

General на верху подокна редактора.

5.Расширьте узел контекстных параметров.

6.Сделайте щелчок по кнопке «Добавить».

7.В диалоге Add Context Parameter :

а) введите javax.faces.STATE_SAVING_METHOD в поле ParamName;

б) введите client или server в поле Param Value;

в) сделайте щелчок по кнопке OK.

Чтобы задать место хранения состояния непосредственным редактированием дескриптора развертывания, выполните следующие шаги:

1.Добавьте элемент context-param к дескриптору развертывания.

2.Добавьте элемент param-name в элемент context-param и задайте javax.faces.STATE_SAVING_METHOD.

3.Добавьте элемент param-value к элементу context-param и задайте это зна-

чение client или server.

Если состояние сохраняется на машине клиента, то оно представляется в скры-

той области на странице. Сервер JavaServer Faces по умолчанию сохраняет состоя-

ние на машине клиента.

9.9.4. Спецификация классов, страниц и других ресурсов

Когда упаковщик приложения использует сценарий построения, он упаковывает

ресурсы следующим способом:

Все страницы размещаются на верхнем уровне файла WAR.

Файл faces-config.xml и web.xml упакованы в директорию WEB-INF.

Все пакеты загружены в директорию WEB-INF/classes/ .

Все прикладные файлы JAR упакованы в директорию WEB-INF/lib/.

Все

файлы ресурсов

находятся в директории /resources кор-

ня

веб-приложения

или в директории classpath приложения

META-INF/resources/<resourceIdentifier>

При пакетировании ваших собственных приложений вы можете воспользовать-

ся NetBeans IDE или использовать сценарии построения. Вы можете модифицировать

сценарии построения, чтобы учесть вашу ситуацию.

105

Соседние файлы в папке КСТ