Mogą zapisywać do strumienia wyjściowego oraz tworzyć, modyfikować i używać obiekty. Sposób wykonania akcji zależy od cech obsługiwanego żądania. Składnia akcji opiera się na XML:
<prefiksBibliotekiZnacznikow:nazwaAkcji atrybuty_i_ich_wartosci> ... </prefiksBibliotekiZnacznikow>
lub
<prefiksBibliotekiZnacznikow:nazwaAkcji atrybuty_i_ich_wartosci />
Akcje, jak widać powyżej, mogą być puste lub niepuste.
Specyfikacja JSP wymaga obsługi pewnych standardowych akcji. Dla wszystkich prefiksem biblioteki jest "jsp".
Składnia:
<jsp:useBean id="nazwa_obiektu" [scope="page|request|session|application"] [specyfikacja_typu]> specyfikacja_typu := class="nazwa_klasy" | class="nazwa_klasy" type="nazwa_typu" | beanName="nazwa_bean" type="nazwa_typu" | type="nazwa_typu"
Pozwala na powiązanie obiektu Javy w podanej widoczności i podanej nazwie (atrybut id) ze zmienną skryptową o tej samej nazwie. Jeśli podany obiekt nie istnieje, jest automatycznie tworzony. Akcji tej używa się także do nadania lokalnej nazwy obiektowi zdefiniowanemu w innym miejscu (np. w serwlecie lub innej stronie JSP). Podaje się wówczas tylko wartość atrybutu type, pomijając class i beanName.
Atrybut beanName określa nazwę ziarna JavaBean, która używana jest przez metodę instatiate() klasy java.beans.Beans. Szczegóły na ten temat znajdują się w specyfikacji JavaBeans.
Do obiektu opisanego przez tę akcję można się dostać w dwojaki sposób:
poprzez zmienną skryptową o podanej nazwie
poprzez obiekt pageContext.
Różnicę między tymi metodami pokazuje następujący przykład:
<% { %> ... <jsp:useBean id="pojazd" class="Pojazd"/> ... <%= pojazd.podajNumerRej () %> ... <% } %> ... <% /* W tym miejscu zmienna o nazwie "pojazd" nie wskazuje już obiektu "pojazd". Jednak ciągle można się do niego dostać używając obiektu pageContext. */ %>
Atrybut scope pozwala określić widoczność (cykl życia) obiektu o podanej nazwie. Na atrybut ten można przypisać następujące wartości:
page - obiekt istnieje do czasu zakończenia się wykonywania strony i można go uzyskać przez obiekt klasy PageContext związany ze stroną
request - obiekt jest widoczny podczas całego procesu obsługi żądania klienta i dostępny przy użyciu metody getAttribute (nazwa) obiektu klasy ServletRequest związanego ze stroną.
session - obiekt jest dostępny w czasie całej sesji poprzez związany ze stroną obiekt klasy HttpSession, przy użyciu metody getAttribute (nazwa)
application - obiekt jest dostępny dla wszystkich elementów aplikacji, do której należy dana strona JSP.
Akcja useBean może być niepusta. Wówczas na ogół w ciele akcji wykonuje się inicjalizacja definiowanego obietku.
Składnia:
<jsp:setProperty name="nazwa_obiektu" wlasciwosci_ustawien> wlasciwosci_ustawien := property="*" | property="nazwa_atrybutu" | property="nazwa_atrybutu" param="nazwa_parametru" | property="nazwa_atrybutu" value="wartosc_atrybutu"
Akcja służy do nadawania wartości atrybutom obiektu. Kiedy używamy "*", wówczas nazwy parametrów znajdujących się w żądaniu klienta są automatycznie wiązane z nazwami atrybutów obiektu, którym przypisywane są wartości odpowiadających im parametrów. Jeżeli używamy drugiej konstrukcji, zostanie wykonane przypisanie na podany atrybut wartości parametru żądania o tej samej nazwie. W trzecim przypadku nazwy atrybutu i parametru mogą być rózne. W ostatnim przypadku wykonuje się przypisanie atrybutowi obiektu podanej wartości.
Składnia
<jsp:getProperty name="nazwa_obiektu" property="nazwa_atrybutu" />
Zwraca wartość atrybutu o podanej nazwie obiektu o podanej nazwie, skonwertowaną do typu String.
Zarówno w przypadku tej akcji, jak i jsp:setProperty
obiekt, którego dotyczą musi zostać zdefiniowany przy użyciu jsp:useBean lub akcji stworzonej przez użytkownika, przypisującej dla danej nazwy odpowiedni slot w obiekcie VariableInfo.
Składnia
<jsp:include page="nazwa_strony" [flush="true|false"] /> lub <jsp:include page="nazwa_strony" [flush="true|false"]> {<jsp:param ... />}* </jsp:include>
Służy do dynamicznego dołączenia strony określonej parametrem page. Od dyrektywy include
różni się tym, że dołączenie jest wykonywane w fazie obsługi żądania, a nie w fazie tłumaczenia strony. Parametr flush (domyślna wartość false
) określa, czy ma być opróżniony bufor.
Składnia
<jsp:forward page="nazwa_strony" /> lub <jsp:forward page="nazwa_strony"> {<jsp:param ... />}* </jsp:forward>
Służy do przekierowywania żądania do określonej strony lub serwletu. Zarówno w przypadku tej akcji, jak i poprzedniej, żądanie klienta jest przekazywane do wywoływanej strony (serwletu).
Składnia
<jsp:param name="nazwa_parametru" value="wartosc" />
Pozwala dodać parametry dla strony (serwletu) wywoływanych przy użyciu dwóch poprzednich akcji. Parametry te zostaną przekazane wraz z żądaniem klienta.
Składnia
<jsp:plugin type="bean|applet" code="kod" codebase="kod_bazowy" [align="ustawienie"] [archive="lista_archiwow"] [height="wysokosc"] [hspace="odleglosc_pozioma"] [jreversion="wersja_JRE"] [name="nazwa_elementu"] [vspace="odleglosc_pionowa"] [width="szerokosc"] [nspluginurl="download_dla_Netscape"] [iepluginurl="download_dla_IE"]> [<jsp:params> [<jsp:param name="nazwa_parametru" value="wartosc"/>]+ </jsp:params>] [<jsp:fallback> tekst </jsp:fallback>] </jsp:plugin>
Pozwala na umieszczenie w odpowiedzi dla klienta obiektu (apletu lub beana), który zostanie wyświetlony przy użyciu podanej wtyczki będącej częścią przeglądarki lub ściągniętej z sieci.
Atrybut type określa typ obiektu, tzn. czy jest to aplet, czy bean.
Atrybut code zawiera nazwę klasy, której instancję bedzię wyświetlała wtyczka. Rozszerzenie .class musi zostać podane. Klasa ta powinna znajdować się w katalogu podanym przez atrybut codebase
.
Atrybut codebase mówi, jakim katalogu znajdują się klasy, których instancje będzie wyświetlała wtyczka. Gdy wartość atrybutu nie zostanie ustalona, zakłada się, że klasy te znajdują się w katalogu, w którym uruchomiona jest strona JSP.
Atrybut name określa nazwę dla obiektu, co pozwala obiektom stworzonym przez tę samą stronę JSP porozumiewać się ze sobą.
Atrybut archive to lista oddzielonych przecinkami ścieżek lokalizujących pliki z archiwami potrzebnymi do wykonania wtyczki.
Atrybut align (wartość domyślna bottom) określa rozmieszczenie wyświetlanego obrazu.
Atrybuty height i width określają wysokość i szerokość wyświetlanego obrazu.
Atrybuty hspace i vspace określają wielkość marginesu poziomego i pionowego dla wyświetlanego obrazka.
Atrybut jreversion zawiera wersję Java Runtime Environment wymaganą przez obiekt.
Atrybut nspluginurl określa adres, spod którego można ściągnąć wtyczkę dla Netscape Navigatora obsługującą wyświetlenie obiektu.
Atrybut iepluginurl określa adres, spod którego można ściągnąć wtyczkę dla Internet Explorera obsługującą wyświetlenie obiektu.
Składnia - patrz <jsp:plugin>. Służy do podawania parametrów dla tej akcji.
Składnia - patrz <jsp:plugin>. Służy do określenia tekstu, który pojawi się, jeżeli przeglądarka nie posiada odpowiedniej wtyczki.