Zadanie 8

Transkrypt

Zadanie 8
PB, 2011-2012
Programowanie aplikacji WWW
Lista zadań nr 8
Język EL (Expression Language)
Stwórz prostą aplikację, która pozwoli na przechowywanie informacji na temat osoby oraz
jej psa. Dane na temat osoby (imię, nazwisko, wiek w latach) oraz psa (imię, płeć) powinny być
przechowywane w obiektach.
1. Stwórz formularz index.jsp zawierający pola pozwalające na podanie podstawowych danych
odnośnie osoby oraz psa (patrz – nagłówek zadania). Formularz powinien przekierować
żądanie do servletu PersonServlet.
2. Stwórz stronę view.jsp, na której wypisane zostaną informacje na temat osoby i jej psa
z wykorzystaniem języka EL. Dodatkowo, za pomocą EL, należy wywołać funkcję
calculateMonths() (i wypisać wynik jej działania). Rolą funkcji jest zwrócenie wieku danej
osoby w miesiącach.
3. Stwórz klasy Person i Dog wraz z odpowiednimi getterami i setterami zgodnymi
z
JavaBeans.
Dodatkowo,
klasa
Person
powinna
zawierać
statyczną
funkcję
calculateMonths() pobierającą pojedynczy parametr (wiek w latach). Klasy Person i Dog
połączone za pomocą kompozycji. Klasy powinny być umieszczone w pakiecie data.
4. Napisz servlet PersonServlet tworzący obiekty klas Person oraz Dog na podstawie danych
otrzymanych z formularza index.jsp. Servlet powinien przekazać sterowanie do pliku
view.jsp.
5. Do projektu dodaj plik Tag Library Descriptor (TLD) opisujący mapowanie pomiędzy
nazwą funkcji EL i nazwą funkcji w klasie Person.
Uwaga: W plikach jsp nie mogą być użyte scriptlety!
1
Operatory . oraz [ ] w EL
Do wypisywania danych zawartych w różnych zakresach (np. sesji, aplikacji czy żądania) na
stronach jsp służą operatory . oraz []:
${person.name} lub ${person[”name”]} - wypisanie właściwości name dla obiektu lub wartości
spod klucza name dla map (w sensie struktury danych!).
Operatory mogą być zagnieżdżone:
${person.dog.name} lub ${person[„dog”][„name”]}
Obiekty predefiniowane
W języku EL występuje kilka obiektów predefiniowanych:
•
jako mapy:
◦ pageScope – zakres strony,
◦ requestScope – zakres żądania,
◦ sessionScope – zakres sesji,
◦ applicationScope – zakres aplikacji,
◦ param oraz paramValues – lista parametrów obiektu żądania,
◦ header oraz headerValues – lista wartości nagłówka żądania (np. nazwa przeglądarki
klienta),
◦ cookie – zakres ciasteczek,
◦ initParam – parametry inicjalizacyjne aplikacji,
•
jako referencje:
◦ pageContext – referencja do kontekstu strony.
Wywoływanie funkcji za pomocą EL
W celu wywołania funkcji z wykorzystaniem języka EL z wybranej klasy należy:
•
zadeklarować funkcję jako publiczną i statyczną,
•
stworzyć plik TLD (opis w dalszej części),
•
załadować bibliotekę na stronie jsp: <%@taglib prefix="mojPrefix" uri="adresURI" %>
•
wywołać funkcję: ${mojPrefix:nazwaFunkcji()}
2
Plik TLD
Aby dodać plik TLD do projektu, należy:
1. Kliknąć prawym klawiszem myszy na nazwę projektu, następnie wybrać Other, gałąź Web
i pole Tag Library Descriptor. Wcisnąć przycisk Next.
2. Po podaniu nazwy dla pliku konfiguracji, wcisnąć Next.
Plik powinien zostać uzupełniony treścią opisującą połączenie pomiędzy nazwą URI i nazwą
funkcji. Przykładowa treść:
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" 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/webjsptaglibrary_2_1.xsd">
<tlib-version>1.0</tlib-version>
<short-name>taglib</short-name>
<uri>adresURI</uri>
<function>
<name>nazwaFunkcji</name>
<function-class>nazwaPakietu.NazwaKlasy</function-class>
<function-signature>
typDanych nazwaFunkcji(listaArgumentówJakoTypy)
</function-signature>
</function>
</taglib>
3

Podobne dokumenty