Wprowadzenie do JSF
Transkrypt
Wprowadzenie do JSF
Java Server Faces wprowadzenie Java Server Faces (JSF) jest najpopularniejszą technologią opartą o język JAVA, służącą do tworzenia aplikacji webowych (dynamicznych stron WWW). pomimo że JSF i EJB wchodzą w skład specyfkacji JEE, do uruchomienia serwisów korzystających z JSF nie jest wymagany serwer aplikacji (kontener EJB). Najpopularniejszym serwerem, na którym uruchamia się takie aplikacje jest Tomcat. 1 Struktura aplikacji Aplikacja JSF jest dystrybuowana w postaci plików war (ewentualnie jar). Jego struktura wygląda następująco META-INF/ MANIFEST.MF WEB-INF/ classes/ - miejsce na kod w Javie lib/ - używane biblioteki (pliki jar) faces-confg.xml web.xml miejsce na skrypty (XML) generujące strony www. Przykład ilustrujący działanie JSF na niniejszym wykładzie pochodzi z książki Core: Java Server Faces wydawnictwa Helion. 2 Deskryptor aplikacji Plik web.xml zawiera podstawowe informacje o aplikacji: <?xml version="1.0"?> <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>*.faces</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app> 3 Konfguracja JSF Konfgurację aplikacji JSF zawiera plik faces-confg.xml. Najczęściej wykorzystywane sekcje to: <?xml version="1.0"?> <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_1_2.xsd" version="1.2"> <navigation-rule> </navigation-rule> <managed-bean> </managed-bean> <application> </application> </faces-config> 4 Sekcja application Sekcja application zawiera m.in. informację o zasobach, z których korzysta serwis. W poniższym przykładzie umieszczono tam informację o pliku z komunikatami: <application> <resource-bundle> <base-name>com.corejsf.messages</base-name> <var>msgs</var> </resource-bundle> </application> 5 Sekcja managed-bean Sekcja managed-bean specyfkuje beany wykorzystywanew serwisie. Specyfkacja ta zwykle zawiera: ● nazwę za pomocą której odwołujemy się do komponentu, ● klasę zawierającą implementację komponentu, ● zakres komponentu, tzn. kiedy jest on tworzony i jak długo żyje. <managed-bean> <managed-bean-name>quiz</managed-bean-name> <managed-bean-class>com.corejsf.QuizBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> 6 Sekcja navigation-rule Sekcja navigation-rule określa sposób w jaki serwis reaguje na akcje wykonywane przez użytkownika (nawigację): <navigation-rule> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/success.jsp</to-view-id> <redirect/> </navigation-case> </navigation-rule> przykładowo, jeśli wykonana akcja zwróci wartość success użytkownik zostanie przeniesiony na stronę success.jsp. 7 Przykładowa strona JSF Kod JSF jest osadzony w dokumencie HTML. Na wstępie mamy nagłówki określające używane przez nas rozszerzenia: <html> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> alternatywny sposób rozpoczęcia skryptu (zgodny z XHTML): <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE HTML> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> 8 Przykładowa strona JSF <f:view> <head> <title><h:outputText value="#{msgs.title}"/></title> </head> <body> <h:form> <p> <h:outputText value="#{quiz.question}"/> </p> <p> <h:commandButton value="#{msgs.answerButton}" action="#{quiz.answerAction}"/> </p> </h:form> </body> </f:view> </html> Tagi JSF są umieszczone w dokumencie HTML. Korzystając z wyrażeń EL (#{.....}) możemy korzystać z zasobów i komponentów zadeklarowanych w pliku facec-confg.xml. 9 Przykładowa strona JSF Przykładowo, poniższy kod wypisze wartość określoną w pliku zasobów: <h:outputText value="#{msgs.title}"/> Natomiast wyrażenie <h:outputText value="#{quiz.question}"/> przekaże do pliku html wartość zwróconą przez metodę getQuestion() wywołaną na rzecz komponentu quiz. 10 Przykładowa strona JSF Element <h:commandButton value="#{msgs.answerButton}" action="#{quiz.answerAction}"/> wyrenderuje przycisk, po naciśnięciu którego zostanie wywołana metoda quiz.getAnswerAction(). Wartość zwrócona przez metodę określa (w oparciu o wpis w faces-config.xml) stronę, na którą nastąpi przekierowanie. 11 Podsumowanie Technologia Java Server Faces w praktyce zastąpiła wcześniej używanie technologie takie jak servlety i jsp, wykorzystywane do tworzenia interfejsów użytkownika i stała się podsatwą współczesnych aplikacji webowych pisanych w języku Java. 12