воскресенье, 15 апреля 2012 г.

Введение в JSF


Введение

JSF - Java Server Faces это Java вэб фреймворк построенный на идее переиспользуемых ui компонентов. JSF - это стандардизированная Java технология. На моем опыте JSF очень облегчил работу если сравнивать его с JSP. Смысл JSF это переиспользуемые компоненты которые очень облегают разработку.

Основные элементы JSF которые вам нужно помнить:

1. Управляемые бины
2. Сильная система шаблонов
3. Большой спектр библиотек тегов на основе XML
4. Встроенная поддержка AJAX - <f:ajax /> (советую попробовать такие фреймворки как Richfaces, PrimeFaces и IceFaces)
5. Expression Language (EL) - методика по средствам которой вы имеете доступ к своим управляемым бинам в JSF странице.

Это были ключевые элементы JSF 2.

Примеры JSF:

Simple "Hello World" JSF Application

Для данного урока требуется пройти предыдущие уроке по установке рабочей среды. Откройте Eclipse.

1. File >> New >> Other >> Web >> Dynamic Web Project
2. Project name: helloworld
3. Choose your Jboss runtime
4. Dynamic web module version: 3.0
5. Configuration: Default for your targeted runtime
6. Next
7. Now you have to choose your folders on the build path. I use the following structure:
    src/main/java (For your java classes)
    src/main/resources (For some of your configuration files)
8. In the next window tick on "Generate web.xml"
8.1 Now the wizard will ask if you prefer Java EE perspective. Personally me, I prefer Web Development perspective.


Теперь у вас есть структура стандартного веб проекта. Далее вам нужно изменить некоторые вещи.
В web.xml который находится в WebContent/WEB-INF поместите следующий код (вместо того который там есть):

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>Helloworld</display-name>

<context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param>
<session-config> <session-timeout>6</session-timeout> </session-config>

<servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping>
<!-- Use Seam Catch for these --> </web-app>


В WebContent/WEB-INF создайте файл faces-config.xml и вставьте в н:его следующий код:


<?xml version="1.0" encoding="UTF-8"?><faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"> <name>Helloworld1</name>
<application> <resource-bundle> <base-name>resources</base-name> <var>resources</var> </resource-bundle> </application></faces-config>
Создайте index.html в корне вашего вэб приложения (WebContent) со следующим контентом:


<html><head><meta http-equiv="Refresh" content="0; URL=home.xhtml"/></head></html>
Создайте home.xhtml в той же дериктории:

 <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">



<h:outputText value="Hello World!" />
</ui:composition>
Project >> Clean >> Your project
Внизу у вас есть вкладка Server. Добавьте в ней нужный сервер и добавьте ваше приложение. Full Publish.

Включаем сервер и заходим через браузер на localhost:8080/helloworld. Если у вас возникли какие-либо вопросы то пишите их в комментариях.

С уважением,
Netlink community member



2 комментария:

  1. Прочел, жалко что автор никак не комментирует зависиомсти между файлами и параметрвами в них. Труно на начальном этапе все понять. Сделал все как написано- получаю ошибку :
    /home.xhtml Not Found in ExternalContext as a Resource
    При запуске сервера вижу :JBAS018559: Deployed "helloworld.war"

    ОтветитьУдалить
  2. Проверьте структуру проекта. Если index.html и home.xhtml находятся в разных папках, то указывайте "/home.xhtml". Извиняюсь за поздний ответ. Пишите ещё.

    ОтветитьУдалить