Топ контрибуторов
loading
loading
Знаете ли Вы, что

Список полученных сертификатов находится на странице Вашего профиля. Сертификаты можно распечатать или разместить на Вашем сайте.

Лента обновлений
ссылка 01:54:53
Комментарий от Apleuxa:
Абстрактный класс определят структуру, а интерфейс - пов...
ссылка Feb 26 01:30
Добавлен вопрос в тест jQuery - Основы
ссылка Feb 24 09:31
Комментарий от sabogdanov:
Написано же в вопросе, как называется объект? Триггер...
ссылка Feb 23 04:06
Добавлен вопрос в тест C# - Средний уровень
ссылка Feb 21 02:05
Добавлен вопрос в тест Базы данных (теория)
Статистика

Тестов: 153, вопросов: 8596. Пройдено: 477978 / 2332219.

Простое приложение JSF 2.0 использующее компоненты PrimeFaces

head tail Статья
категория
Java EE
дата13.11.2011
авторpvito
голосов20

JavaServer Faces (JSF) — это фреймворк для веб-приложений, написанный на Java. JSF 2 предоставляет разработчику огромное количество возможностей, таких например как поддержка AJAX, стандартный движок для шаблонизации страниц (библиотека facelets), большое количество готовых компонентов. Все это можно использовать при построении web приложений любой сложности.

В данной статье будет описано создание простейшего JSF 2.0 приложения, вместе с библиотекой primefaces версии 2.2.1. В нашем проекте мы ознакомимся с упрощенным механизмом навигации, появившемся стандарте JSF 2.0, а также использованием AJAX.

Для этого нам понадобятся следующие программы: JDK 1.6, apache-tomcat-7.xx и любая среда разработки на Java по вашему вкусу.

Далее по шагам:

1) Шаг

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

+---build - папка для скомпилированных java - классов
+---lib – папка для библиотек
+---src – папка для java - классов
    L---web – папка для содержимого веб-приложения
         +---pages – папка для фейслетов.

          L---WEB-INF – настройки нашего приложения

2) Шаг

В каталог WEB-INF добавляем 2 файла: web.xml и faces-config.xml. С выходом JSF 2.0 конфигурирование намного упростилось. В файле web.xml необходимо указать только управляющий сервлет, и указать welcome-list – перечень страниц по умолчанию для нашего приложения. В самом простом виде он будет иметь следующий вид:

Файл web.xml

<!--?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_2_5.xsd"
version="2.5">
   
<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>
*.jsf</url-pattern>
       
<url-pattern>
/faces/*</url-pattern>
   
</servlet-mapping>
    <welcome-file-list>
       
<welcome-file>
index.html</welcome-file>
   
</welcome-file-list>
</web-app>

faces-config.xml можем оставить вовсе без настроек. Все необходимое мы сможем сделать с помощью аннотаций.

Файл faces-config.xml

<!--?xml version='1.0' encoding='UTF-8'?-->
<faces-config
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-facesconfig_2_0.xsd"
version="2.0">
</faces-config>

3) Шаг

В директорию lib копируем следующие библиотеки:

jsf-api.jar
jsf-impl.jar
jstl-1.1.0.jar

их нужно предварительно скачать, например здесь : http://www.java2s.com/Code/Jar/CatalogJar.htm

primefaces-2.2.1.jar – стабильная на данный момент версия – скачать можно здесь http://primefaces.org/downloads.html

4) Шаг

В каталоге source создаем managed bean c именем MainBean.java в пакете ru.jsf.

Файл MainBean.java


package ru.jsf;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean  // аннотация указывающая что это managed bean и поэтому мы его не описываем в faces-config.xml
@SessionScoped // аннотация указывающая что это managed bean является сессионным

public class MainBean {
    private String user;
    private String password;
    private String text;
    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }


    public String getPassword() {
        return password;
    }


    public void setPassword(String password) {
        this.password = password;
    }

 
   //Метод используемый нами в качестве простейшей авторизации, проверяет имя и пароль пользователя и возвращает имя страницы на которую произойдет переход
    public String checkUser(){
        if(this.user.equals("user") && this.password.equals("123")){
            return "success";
        }else{
            return "loginfailed";
        }
    }


    public String getText() {
        return text;
    }


    public void setText(String text) {
        this.text = text;
    }
}



 

Метод checkUser собственно и показывает использование навигации по страницам, возвращаемое значение автоматически мапится на соответствующий фейслет. В версии JSF 1.2 правила навигации надо было описывать в faces-config.xml.

5) Шаг

В каталог веб добавляем файл index.html в котором делаем редирект на страницу входа в приложение, пусть она будет называться main.

Файл index.html содержит единственную строку
<meta http-equiv="Refresh" content="0; URL=pages/main.jsf">

6) Шаг

В каталоге pages создаем 3 файла:
main.xhtml – страница для входа на сайт (на которую мы делаем редирект со страницы index.html)
success.xhtml – страница на которую мы попадем в случае удачной авторизации.
loginfailed.xhtml – страница на которую мы попадем в случае неудачной авторизации.

Сперва разберемся с содержимым страницы loginfailed.xhtml – она самая простая, на ней мы просто сообщаем пользователю что он ввел неправильный логин и пароль.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"

      xmlns:h="http://java.sun.com/jsf/html"

      xmlns:p="http://primefaces.prime.com.tr/ui">

<h:head>

</h:head>

 

<h:body>

  <p:panel>

          <h:outputtextvalue="Не правильный логин или пароль" />

</p:panel>

</h:body>

</html>

 

Строки
xmlns:h="http://java.sun.com/jsf/html"

xmlns:p=http://primefaces.prime.com.tr/ui

это подключение соответствующих библиотек тегов

<h:outputtextvalue="Не правильный логин или пароль"> - использование тега outputText который просто выведет нам указанный текст.

В файле main.xhtml мы создадим простейшую форму для авторизации. Связывание атрибутов элементов документа и полей и методов осуществляется с помощью JSF EL (Expression Language) и выглядит следующим образом:

<h:inputtext value="#{mainBean.user}">

Файл main.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html
xmlns="http://www.w3.org/1999/xhtml"
     
xmlns:h
="http://java.sun.com/jsf/html"
   
 
xmlns:p="http://primefaces.prime.com.tr/ui"> 
<h:head></h:head>
 <h:body>
   
<h:form>
       
<p:panel>
           
<h:panelgrid
columns="2">
               
<h:outputtext
value="Логин"/>
               
<h:inputtext
value="#{mainBean.user}"/>
               
<h:outputtext
value="Пароль"/>
               
<h:inputsecret
value="#{mainBean.password}"/>
           
</h:panelgrid>
           
<h:commandbutton
value="Вход" action="#{mainBean.checkUser}"/>
       
</p:panel>
   
</h:form>
</
h:body>
</
html>

В файле success.xhtml мы используем тег p:ajax для добавления функций AJAX к нашему приложению. При возбуждении события keyup компонента p:inputText будет происходить обновление компонента с идентификатором out1.

Файл success.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html  
xmlns="http://www.w3.org/1999/xhtml"
      
xmlns:h
="http://java.sun.com/jsf/html"
     
 
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head></h:head>
<h:body>
 
<p:panel>

         
<h:outputtext
value="Добро пожаловать: #{mainBean.user}!">
 
</h:outputtext>

</p:panel>

   
<h:form>

       
<h:panelgrid
columns="3" cellpadding="5">
           
<h:outputtext
value="Текст: "/>
           
<p:inputtext
value="#{mainBean.text}">
               
<p:ajax
event="keyup" update="out1"/>
           
</p:inputtext>

           
<h:outputtext
id="out1" value="#{mainBean.text}"/>
       
</h:panelgrid>

   
</h:form>

</h:body>

</html>
 

В итоге мы получаем приложение, поведение которого можно описать следующим образом. При обращении к приложению мы попадаем на страницу авторизации, на которой мы должны ввести логин и пароль, после чего, по результатам авторизации мы будем перенаправлены на соответствующую страницу (success или loginfailed). На странице success мы будем видеть приветствие и поле ввода, при заполнении которого его содержимое будет дублироваться рядом с ним.

Теперь соберем наше приложение и развернем на сервере Tomcat.

7) Шаг

Компилируем наш java-код.

8) Шаг

Создаем war-файл (назовем его jsf2demo.war), который по сути является обычным zip-архивом с расширением war. Внутри него должна быть следующая структура.

+---pages\
¦       L---success.xhtml
¦       L---main.xhtml
¦       L---loginfailed.xhtml
L---WEB-INF\
        +---classes\
¦              L---ru\
¦                  L---jsf\
¦                     L--MainBean.class
+---lib\
¦       L---primefaces-2.2.1.jar
¦       L---jstl-1.1.0.jar
¦       L---jsf-impl.jar
¦       L---jsf-api.jar
L-index.html

Можно просто создать такую структуру папок на диске, скопировать в них соответствующие файлы, сделать zip-архив и поменять его расширение на war.

9) Шаг

Запускаем Tomcat. Для этого заходим в папку bin в home–директории Tomcat (у меня она располагается здесь c:\apache-tomcat-7.0.22\bin\) и запускаем файл startup.bat для windows или startup.sh для linux. Если мы увидим в консоли строки:


INFO: Server startup in 938 ms
Connected to server

 

Значит сервер успешно стартовал, и мы можем проверить это набрав в строке браузера следующее: http://localhost:8080/. Мы попадем на страницу приветствия.

Теперь развернем наше веб-приложение. Для этого просто скопируем jsf2demo.war в папку webapps в home–директории Tomcat. В консоли мы должны увидеть нечто подобное:

ноя 13, 2011 7:36:22 PM org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive jsf2demo.war
ноя 13, 2011 7:36:22 PM com.sun.faces.config.ConfigureListener contextInitialized INFO: Initializing Mojarra 2.0.1 (FCS b02) for context '/jsf2demo'
ноя 13, 2011 7:36:23 PM com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: PostConstruct/PreDestroy annotations present. ManagedBeans methods marked with these annotations will have said annotations processed.

 

Это означает что мы успешно развернули наше приложение.

Наберем в строке браузера : http://localhost:8080/jsf2demo и попадем на страницу ввода логина и пароля нашего приложения.
Можете его протестировать!

Если Вам понравилась статья, проголосуйте за нее

Голосов: 20  loading...
pvito   art   javadev75   stim_alex   sergeygi   Applesin   Akvel   gvsuakh   t1oo1   Tiger78   aleks1989   hahik2001   ololo_pupkin   SuperHuman   Alibek7000   randriyanov   un1acker   octavian007   Icarus   login212312