JSF пример welcomeВ данной статье рассматривается создание простейшего WEB-приложения с использованием фреймворка JSF. Для разработки jsf примера будем использовать JDK 1.7, apache-tomcat-7.xx и среду разработки Eclipse. В качестве среды разработки можно использовать любую другую IDE (Integrated Development Enviroment). Последовательность действий не изменится. Разработка jsf примера welcomeВ jsf примере Welcome будет представлена авторизация. Структура jsf example будет включать 3 страницы и JavaBean компонент. На первой странице main.xhtml будет выполняться авторизация пользователя. Проверка логина и пароля будет выполняться в компоненте MainBean.java. При удачной авторизации будет выполняться переход на страницу приветствия пользователя loginsuccess.xhtml. При неудачной - на страницу ошибки loginfailed.xhtml. 1-ый шагНа первом шаге создаем проект Dynamic Web Project. и определяем его наименование Welcome. В настройках проекта подключаем фреймворк JSF. 2-ой шагДобавляем в каталог WEB-INF файлы web.xml и faces-config.xml. Можно было бы не добавлять файл конфигурации faces-config.xml. Ведь с выходом JSF 2.0 конфигурирование намного упростилось и параметры Managed Bean компонента (наименование и время жизни) можно определить в виде аннотации в коде. В файле web.xml указываем управляющий сервлет и открываемую страницу по умолчанию в теге welcome-list для нашего jsf примера. <!--?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"> <welcome-file-list> <welcome-file>main.xhtml</welcome-file> </welcome-file-list> <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> </web-app> При подключении фреймворка JSF в директории WEB-INF автоматически должен был создаться файл 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-ий шагВ директорию WEB-INF/lib копируем библиотеку javax.faces-2.ХХХ.jar. Данная библиотека необходима для создания Managed Bean компонентов в IDE. 4-ый шагДобавляем в проект компонент MainBean.java. Предварительно в проекте определяем package (jsf.common) для компонента. package jsf.common; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; // Аннотации managed bean компонента @ManagedBean (name="Main") // определение managed bean и его наименования @SessionScoped // определение времени жизни - сессия public class MainBean { private String login; private String password; public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } /* Метод простейшей авторизации. * Выполняется проверка имени и пароля пользователя. * Результат проверки - наименование страницы перехода */ public String checkLogin(){ if (login.equalsIgnoreCase("alex") && password.equalsIgnoreCase("qwerty")){ return "loginsuccess?faces-redirect=true"; } else { return "loginfailed?faces-redirect=true"; } } } Метод checkLogin определяет навигацию по страницам. Возвращаемое значение - jsf страница, на которую должен быть выполнен переход. В предыдущей версии JSF правила навигации надо было описывать в faces-config.xml. Для действительного перенаправления на страницу с изменением URL в коде к наименованию страницы добавляется ?faces-redirect=true. О динамической навигации и перенаправлении подробно сказано на странице "Навигация и перенаправление". На 5-ом шаге создаем страницы JSF.JSF страница ошибки 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:ui="http://java.sun.com/jsf/facelets"> <h:head> <title>Страница ошибки</title> </h:head> <h:body> <h:outputText value="Ошибка авторизации. Проверьте логин и пароль" /> </h:body> </html> Компонент outputText выводит указанный текст. Для подключения к странице JSF соответствующих тегов необходимо указать следующие строки : xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" JSF страница успешной авторизации loginsuccess.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:ui="http://java.sun.com/jsf/facelets"> <h:head> <title>Успешная авторизация</title> </h:head> <h:body> <h:outputText value="Добро пожаловать: #{Main.login}!" /> </h:body> </html> main jsf страница авторизации 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:ui="http://java.sun.com/jsf/facelets"> <h:head> <title>Страница авторизации</title> </h:head> <h:body> <h:form> <h:panelGrid columns="2" border="0"> <h:outputText value="Логин"/> <h:inputText value="#{Main.login}" /> <h:outputText value="Пароль"/> <h:inputSecret value="#{Main.password}" /> </h:panelGrid> <h:commandButton value="Вход" action="#{Main.checkLogin}" /> </h:form> </h:body> </html> Структура проекта jsf примера Welcome в среде Eclipse представлена на следующем скриншоте. Старт приложенияДля запуска приложения из среды Eclipse необходимо выбрать пункт меню "Run As/Run on Server". Eclipse автоматически стартует Tomcat и откроет в браузере по умолчанию страницу "http://localhost:8080/Welcome". Можно Tomcat в среде Eclipse стартовать отдельно и открыть страницу авторизации (main.xhtml) в любом браузере, набирая ту же строку URL. Исходный код JSF примера Welcome, рассмотренного в тексте страницы, можно скачать здесь. |