Elementy skryptu JSP pozwalają umieścić kod Javy wewnątrz servletu który jest generowany z bieżącej strony JSP. Mogą one przyjąć trzy formy:
- Wyrażenia w postaci <%= wyrażenie %>, które są przekazywane na wyjście (okno przeglądarki)
- Skryplety w postaci <% kod %>, które są umieszczane wewnątrz metody service servletu
- Deklaracje w postaci <%! kod %> które są umieszczane wewnątrz klasy (ciała) servletu, poza jakimikolwiek istniejącymi metodami.
Poniżej każde z nich zostaną opisane dokładniej.
1. Wyrażenia JSP
Wyrażenia JSP są używane w celu umieszczenia wartości bezpośrednio na wyjściu (oknie przeglądarki). Oto przykład:
<%= Wyrażenie Javy %>
Wyrażenie Javy jest pobierane, konwertowane do łańcucha po czym umieszczane na stronie. Te elementy wykonywane są w czasie uruchomienia strony, kiedy jest ona wywoływana (np. przez przeglądarkę) i dlatego z tego poziomu jest dostęp do informacji na temat danego wywołania strony. Poniżej znajduje się przykład obrazujący powyższy opis
Bieżący czas: <%= new java.util.Date() %>
czyli w momencie wywołania strony wyświetlana jest aktualna data/czas.
Dla uproszczenia wyrażeń zostało utworzone kilka zmiennych predefiniowanych, które mogą zostać użyte. Te obiekty zostaną omówione w innej części poświęconej zmiennym predefiniowanym, jednak kilka dość znaczączych z nich to:
- request, czyli HttpServletRequest;
- response, czyli HttpServletResponse;
- session, czyli HttpSession związany z wywołaniem (jeśli jest)
- out, czyli PrintWriter (buforowana wersja JspWriter) używane w celu wysłania informacji na wyjście (okno przeglądarki).
Oto przykład:
Twój komputer: <%= request.getRemoteHost() %>
Programiści XML mogą użyć alternatywnego rozwiązania dla wyrażeń JSP:
<jsp:expression> Wyrażenie Javy </jsp:expression>
Należy pamiętać, że elementy XML, inaczej niż HTML, rozróżniają wielkość liter. W związku z tym należy uważać by używać małych liter, tak jak ma to miejsce w powyższym przykładzie.
2. Skryplety JSP
Jeśli istnieje potrzeba wykonania czegoś bardziej złożonego niż przekazanie pojedynczej wartości (jak to miało miejsce w przypadku wyrażeń), można wykorzystać skryplety JSP. Skryplety JSP pozwalają umieścić dowolny kod wewnątrz metody servletu, który zostanie zbudowany w celu wygenerowania strony. Skryplety przyjmują następującą formę:
<% Kod Javy %>
Skryplety mają dostęp do tych samych zmiennych co wyrażenia. Na przykład, jeśli jest potrzeba przekazania na wyjście jakiejś wartości na wynikowej stronie można użyc w tym celu zmiennej out.
<% String queryData = request.getQueryString(); out.println("Dołączone dane typu GET: " + queryData); %>
Kod wewnątrz skrypletu, np. taki jak powyższy może sąsiadować z dowolnym statycznym kodem HTML (szablon tekstowy), który znajdując się czy to przed czy za danym skrypletem, zostanie przekonwertowany na składnię Javy print. To oznacza, że skryplety nie muszą zawierać w samej składni Javy, lecz także bloki statycznego HTMLa. Przykładem może być poniższy fragment JSP zawierający szablony tekstowe jak i skryplety
<% if (Math.random() < 0.5) { %> <B>Miłego</B> dnia! <% } else { %> <B>Pechowego</B> dnia! <% } %>
zostanie przekonwerowane do:
if (Math.random() < 0.5) { out.println("<B>Miłego</B> dnia!"); } else { out.println("<B>Pechowego</B> dnia!"); }
Jeśli istnieje potrzeba użycia ciągu znaków "%>" wewnątrz skrypletu należy wpisać "%\>". Ekwiwalentem XML dla zapisu
<% kod %>
jest
<jsp:scriptlet> kod </jsp:scriptlet>
3. Deklaracje JSP Deklaracja JSP pozwala definiować metody lub pola, które są umieszczane wewnątrz klasy servletu (poza metodą service). Oto przykład:
<%! Kod Javy %>
Deklaracje nie generują żadnych danych wyjściowych, one są używane łącznie z wyrażeniami JSP lub skrypletami. Dla przykładu poniżej znajduje się fragment, który wypisuje wartość liczbową odpowiadającą ilości wywołania bieżącej strony od momentu uruchomienia serwera (lub zmiany i przeładowania klasy servletu):
<%! private int Licznik = 0; %> Stronę wywołano od czasu uruchomienia serwera: <%= ++Licznik %>
Podobnie jak w przypadku skrypletów, jeśli istnieje potrzeba użycia ciągu znaków "%>", należy wpisać "%\>". Ekwiwalentem XML dla:
<%! Kod %>
jest
<jsp:declaration> Kod </jsp:declaration> |