Dyrektywy i deklaracje w JSP

Transkrypt

Dyrektywy i deklaracje w JSP
Programowanie w Sieci Internet
— Java - zaczynamy (JSP)
Kraków, 7 grudnia 2012 r.
mgr Piotr Rytko
Wydział Matematyki i Informatyki
Co dziś będziemy robić
• Zaczynamy od serwera,
• a następnie piszemy prosty kod jsp,
• dyrektywy i deklaracje w JSP,
• sesje i parametry zapytania,
• Java Beans,
• budowa Beana,
• Bean scopes.
Serwery JSP
Aby klient mógł się cieszyć tym co tam naklepiemy w kodzie JSP, wpierw musimy
umieścić nasze wypociny na kompatybilnym serwerze, który będzie potrafił obsłużyć
nasz kod.
Serwery obsługujące JSP:
• Blazix,
• TomCat,
• WebLogix,
• WebSphere.
Istnieje jeszcze z pewnością cała masa innych.
Pamiętaj, nie otwieraj swoich stron jsp poprzez file:// a przez http:// (to znaczy, że pliki
z rozszerzeniem .jsp powinny się znajdować w odpowiednim katalogu.
Pisanie kodu JSP
Instrukcje JSP piszemy wewnątrz kodu html, podobnie jak w przypadku PHP, z tym, że
tym razem blok kodu (scriptlet) zaczyna się od <% a kończy %>
Wstawienie ewaluowanej wartości JSP zaczyna się od <%=
Przykład:
<HTML>
<BODY>
Hello World! The time is now <%= new java.util.Date() %>
</BODY>
</HTML>
lub z użyciem scriptlet’u:
<HTML>
<BODY>
<% java.util.Date date = new java.util.Date(); %>
Hello World! The time is now <%= date %>
</BODY>
</HTML>
Pisanie kodu JSP
Pisząc w Scriptlet’cie możemy wypisywać do logu serwera (konsoli) lub na wyjście
HTML (dzięki predefiniowanej zmiennej out).
System.out.println(“wypisze ten tekst w logu”);
out.println(“wypisze ten tekst w HTMLu”);
Kod scriptlet można także mieszać z kodem HTML bez użycia out.println();
<% for(int i = 0; i < 100; ++i) %>
liczba <%= i %><br>
Wypisze 100 linijek od liczba 0<br> do liczba 99<br>
Innymi przydatnymi zmiennymi predefiniowanymi są request i response. Dają one nam
dostęp do zapytań i odpowiedzi HTMLowych. Dzięki zmiennej request możemy się
dostać chociażby do takich pól jak IP adres klienta:
out.println(request.getRemoteHost());
a dzięki response możemy modyfikować wysyłaną odpowiedź do klienta. Na przykład
wysłanie prośby o przekierowanie:
response.sendRedirect(adresPrzekierowania);
Dyrektywy i deklaracje w JSP
Dyrektywy używamy aby zaimportować paczki kodu. Dyrektywa zaczyna się od
znacznika <%@
istnieją dyrektywy strony <%@ page import=”java.util.*” %> lub zwykłe
dyrektywy impotujące, które wstrzykują kod danego pliku, np.:
<%@ import=”tam_oj_tam_oj.jsp” %>
Wiele importów można umieścić po przecinkach np.:
<%@ page import=”java.util.*,java.math.*” %>
Deklaracje w JSP rozpoczynają się od <%!
<%!
Date getCzas(){
return new Date();
}
%>
a następnie możemy użyć funkcji przez zapis:
Hello World! The time is now <%= getCzas() %>
Sesje i parametry zapytania
Sesje w JSP możemy tworzyć i odczytywać poprzez predefiniowany zmienną session.
session.setAttribute(“attrName”,attrVar);
session.getAttribute(“attrName”);
Aby wydobyć dane przesyłane w zapytaniu (np. dane z formularza) można użyć funkcji
request.getParameter(“paramName”);
Funkcja zwraca String.
Fasolka po bretońsku - czyli Java Beans
Fasolki to instancje klasy oddzielające logikę biznesową od logiki prezentacji.
Deklaracja Beana:
<jsp:useBean id=beanName class=beanClass scope=”page | request
| session |application” />
• beanName - nazwa referencyjna do Beana.
• beanClass - klasa która zawiera instancję Beana.
Użycie Beana:
<jsp:setProperty name=id property=someProperty value=someValue />
• id - nazwa Beana (taka jaką podaliśmy w tagu jsp:useBean).
• property - nazwa wartości, którą przekazujemy do Beana.
• value - wartość tego property.
Małe co nieco - czyli budowa Beana
Beany mają strukturę jak zwykłe klasy w Javie.
Mają one jednak metody dostępowe (accessors) w postaci getterów i setterów.
Jeśli mamy pola, w formularzu, o nazwach:
• name,
• login.
To accessory w Beanie będą miały nazwy:
• getName();
• setName(...);
• getLogin();
• setLogin(...);
Nazwy metod mają konwencję get/set+NazwaPolaOdDużejLitery()
Metody te powinny być publiczne.
Dzięki zachowaniu tej konwencji możliwym staje się automatyczne ustawianie
i odczytywanie danych z atrybutów Beana.
Zasięg ‘fasolki’ - Bean scope
Beany mogą mieć różne zasięgi działania:
• Page - każdy obiekt utworzony w tym Beanie zostanie usunięty jak tylko strona
zostanie zamknięta,
(jest to wartość domyślna dla każdego nowego Beana)
• Request - obiekty istnieją tak długo jak istnieje zapytanie (request), jeśli chcemy więc
użyć forwardowania, to będziemy musieli dołączyć Beana do nowego zapytania,
• Session - obiekty istnieją tak długo jak sesja, to znaczy tak długo jak zostało to
ustawione w sesji (nie należy utożsamiać sesji jedynie z logowaniem użytkownika,
gdyż sesja może istnieć niezależnie od logowania i użytkownika), czyli od momentu
otworzenia sesji do momentu jej zamknięcia lub zamknięcia przeglądarki i
unieważnienia sesji.
Dziękuję za uwagę!