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

Podobne dokumenty