rB-05, Programowanie, ! Java, Java Server Programming


Dodatek B.

Krótki opis HTTP Servlet API

Pakiet javax.servlet.http umożliwia obsługę serwletów porozumiewających się przy pomocy protokołu HTTP. Klasy w tym pakiecie są utworzone na podstawie podstawowej funkcjonalności pakietu javax.servlet i umożliwiają serwletom dostęp do specyficznych dla HTTP własności takich jak kody stanu, nagłówki żądania i odpowiedzi, sesje i cookies. Rysunek B.1 przedstawia hierarchię klas pakietu javax.servlet.http.

0x01 graphic

Rysunek B.1.

Pakiet javax.servlet.http

Cookie

Zestawienie

Nazwa klasy

javax.servlet.http.Cookie

Superklasa

java.lang.Object

Bezpośrednie podklasy

Brak

Implementowane interfejsy

java.lang.Cloneable

Dostępność

Servlet API 2.0 i późniejsze

Opis

Klasa Cookie dostarcza serwletom łatwego sposobu odczytywania, tworzenia i manipulowania cookies w stylu HTTP, które umożliwiają serwletom przechowywanie niewielkich ilości danych na komputerze klienta. Cookies są ogólnie wykorzystywane do śledzenia sesji lub przechowywania niewielkich ilości informacji konfiguracyjnych specyficznych dla danego klienta. Większa ilość informacji znajduje się w rozdziale 7, „Śledzenie sesji”.

Serwlet wykorzystuje metodę getCookies() w celu odczytania cookies wysłanych jako część żądania klienta. Metoda addCookie() HttpServletResponse wysyła do przeglądarki nowe cookie. Ponieważ cookie są ustawiane przy pomocy nagłówków HTTP, addCookie() musi zostać wywołana przed zatwierdzeniem odpowiedzi.

Metody getXXX() są rzadko wykorzystywane, ponieważ kiedy cookie zostaje wysłane do serwera, zawiera jedynie jego nazwę, wartość i wersję, Jeżeli ustawi się atrybut w cookie otrzymanym od klienta, należy dodać go do odpowiedzi, aby zmiana wywarła efekt, a także należy zadbać o to, by wszystkie atrybuty poza nazwą, wartością i wersją zostały ponownie ustawione również w cookie.

Niniejsza klasa jest zgodna zarówno ze specyfikacją cookie Netscape, jak i dokumentem RFC 2109.

Podsumowanie klasy

public class Cookie implements java.lang.Cloneable {

// Konstruktory

public Cookie(String nazwa, String wartosc);

// Metody egzemplarzy

public Object clone();

public String getComment;

public String getDomain();

public int getMaxAge();

public String getName();

public String getPath();

public boolean getSecure();

public String getValue();

public int getVersion();

public void setComment(String cel);

public void setDomain(String wzor);

public void setMaxAge(int wygasa);

public void setPath(String uri);

public void setSecure(boolean znacznik);

public void setValue(String nowaWartosc);

public void setVersion(int w);

}

Konstruktory

Cookie()

public Cookie(String nazwa, String wartosc)

Konstruuje nowe cookie o początkowej nazwie i wartości. Zasady nadawania prawidłowych nazw i wartości są określone w specyfikacji cookie Netscape i dokumencie RFC 2109.

Metody egzemplarzy

clone()

public Object clone()

Omija standardową metodę clone() w celu zwrócenia kopii aktualnego obiektu (duplikatu cookie).

getComment()

public String getComment

Zwraca komentarz związany z cookie. Informacja ta jest dostępna jedynie zaraz po ustawieniu komentarza; kiedy cookie jest zwracane przez klienta, informacja ta nie zostaje dołączona.

GetDomain()

public String getDomain()

Zwraca ograniczenia domeny związane z aktualnym cookie. Informacja ta jest dostępna jedynie zaraz po ustawieniu domeny; kiedy cookie jest zwracane przez klienta, informacja ta nie zostaje dołączona.

getMaxAge()

public int getMaxAge()

Zwraca maksymalny wiek dozwolony dla aktualnego cookie. Informacja ta jest dostępna jedynie zaraz po ustawieniu maksymalnego wieku; kiedy cookie jest zwracane przez klienta, informacja ta nie zostaje dołączona.

getName()

public String getName()

Zwraca nazwę aktualnego cookie.

getPath()

public String getPath()

Zwraca ograniczenia ścieżki związane z aktualnym cookie. Informacja ta jest dostępna jedynie zaraz po ustawieniu ścieżki; kiedy cookie jest zwracane przez klienta, informacja ta nie zostaje dołączona.

getSecure()

public boolean getSecure()

Zwraca true, jeżeli aktualne cookie wymaga bezpiecznego połączenia, w przeciwnym wypadku false. Informacja ta jest dostępna jedynie zaraz po ustawieniu znacznika; kiedy cookie jest zwracane przez klienta, informacja ta nie zostaje dołączona.

getValue()

public String getValue()

Zwraca wartość aktualnego cookie w formie łańcucha.

getVersion()

public int getVersion()

Zwraca wersję aktualnego cookie.

setComment()

public void setComment(String cel)

Ustawia pole komentarza cookie. Komentarz opisuje zamierzone przeznaczenie cookie. Przeglądarka WWW może wyświetlić ten tekst klientowi. Komentarze nie są obsługiwane przez cookies w wersji 0.

setDomain()

public void setDomain(String wzor)

Określa wzór ograniczenia domeny. Wzór domeny określa serwery, które powinny widzieć cookie. Domyślnie cookies są zwracane jedynie do komputera, który je zapisał. Określenie wzoru nazwy domeny omija tę zasadę. Wzór musi rozpoczynać się kropką i zawierać co najmniej dwie kropki. Wzór pasuje jedynie do jednej pozycji poza początkową kropką. Na przykład wzór .buu.com jest prawidłowy i pasuje do www.buu.com i wyslij.buu.com, ale nie do www.wyslij.buu.com. Szczegółowe informacje na temat wzorów domen są dostępne w specyfikacji cookie Netscape i dokumencie RFC 2109.

SetMaxAge()

public void setMaxAge(int wygasa)

Określa maksymalny wiek cookie w sekundach do jego wygaśnięcia. Ujemna wartość wskazuje na działanie domyślne, czyli na wygaśnięcie cookie z chwilą wyłączenia przeglądarki. Wartość zerowa nakazuje przeglądarce natychmiastowe usunięcie cookie.

setPath()

public void setPath(String uri)

Określa ścieżkę cookie, która jest podzbiorem URI, do których powinno zostać wysłane cookie. Domyślnie cookie są wysyłane do strony, która je ustawiła oraz do wszystkich stron w jej katalogu lub podkatalogach. Na przykład, jeżeli /servlet/CiasteczkowyPotwor ustawiła cookie, domyślną ścieżką jest /servlet. Ścieżka ta wskazuje, że cookie powinno zostać wysłane do /servlet/Elmo i /servlet/podkat/WielkiPtak — ale nie do aliasu serwletu /Oskar.html ani do żadnego programu CGI w /cgi-bin. Ścieżka ustawiona na „/” powoduje wysłanie cookie do wszystkich stron na serwerze. Ścieżka cookie musi być tak skonstruowana, aby uwzględniała serwlet, który je ustawił.

SetSecure()

public void setSecure(boolean znacznik)

Znacznik bezpieczeństwa wskazuje, czy cookie powinno zostać wysłane jedynie przez kanał bezpieczny, taki jak SSL. Domyślna wartość wynosi false.

SetValue()

public void setValue(String nowaWartosc)

Przypisuje cookie nową wartość. W przypadku cookie w wersji 0, wartości nie mogą zawierać: pustych miejsc, klamr, cudzysłowów pojedynczych i podwójnych, nawiasów, znaków równości, przecinków, ukośników, znaków zapytania, dwukropków i średników. Puste wartości mogą zachowywać się w różny sposób w różnych przeglądarkach.

SetVersion()

public void setVersion(int w)

Serwlety mogą wysyłać i przyjmować cookies sformatowane tak, aby zgadzały się zarówno trwałymi cookies Netscape (wersja 0), jak i nowszymi, w pewnym sensie eksperymentalnymi cookies zgodnymi z dokumentem RFC 2109 (wersja 1). Nowo skonstruowane cookies są domyślnie sformatowane zgodnie z wersją 0 w celu zmaksymalizowania zasięgu. Podczas wykorzystywania cookies w wersji 1 kontener serwletów może również wysyłać cookies w stylu wersji 0 o tej samej nazwie i wartości w celu zachowania wstecznej kompatybilności.

HttpServlet

Zestawienie

Nazwa klasy

javax.servlet.http.HttpServlet

Superklasa

Javax.servlet.GenericServlet

Bezpośrednie podklasy

Brak

Implementowane interfejsy

java.servlet.Servlet

java.io.Serializable

Dostępność

Servlet API 1.0 i późniejsze

Opis

HttpServlet jest abstrakcyjną klasą służącą jako podstawowa klasa dla serwletów HTTP (WWW). Publiczna metoda service() przekierowuje żądania do specyficznej dla HTTP, chronionej metody service(), która następnie przekazuje żądania do konkretnych funkcji obsługujących każdy typ wysyłania HTTP — doGet(), doPost() i tak dalej. Ponieważ domyślna implementacja serwletów HTTP obsługuje przekierowania do tych metod, to jeżeli ominie się chronioną metodę service(), należy samodzielnie obsłużyć przekierowania, lub nie wykorzystywać funkcji obsługujących dla metod żądań HTTP.

Podsumowanie klasy

public abstract class HttpServlet extends javax.servlet.GenericServlet

implements javax.servlet.Servlet, java.io.Serializable {

// Konstruktory

public HttpServlet();

// Publiczna metoda egzemplarzy

public void service(ServletRequest zad, ServletResponse odp)

throws ServletException, IOException;

// Chronione metody egzemplarzy

public void doDelete(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException; // Nowość w 2.0

public void doGet(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException;

public void doOptions(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException; // Nowość w 2.0

public void doPost(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException;

public void doPut(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException; // Nowość w 2.0

public void doTrace(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException; // Nowość w 2.0

public void getLastModified(HttpServletRequest zad);

public void service(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException; // Nowość w 2.0

}

Konstruktory

HttpServlet()

public HttpServlet()

Domyślny konstruktor nie wykonuje żadnych działań. Ponieważ nie można mieć pewności co do sposobu i czasu ładowania klas, nie poleca się omijania tego konstruktora w celu wykonania czynności startowych. Zamiast tego należy wykorzystać metodę init().

Publiczne metody egzemplarzy

service()

public void service(ServletRequest zad, ServletResponse odp)

throws ServletException, IOException

Ta metoda service() obsługuje przekierowywanie żądań do chronionej, specyficznej dla HTTP metody service(). Ogólnie rzecz biorąc nie powinna być omijana.

Chronione metody egzemplarzy

doDelete()

public void doDelete(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException

Domyślna implementacja service() w HttpServlet przekierowuje wszystkie żądania HTTP DELETE do tej metody. Serwlety implementują tę metodę w celu obsługi żądań DELETE. Domyślna implementacja zwraca błąd HTTP SC_BAD_REQUEST. Metoda została wprowadzona w Servlet API 2.0.

doGet()

public void doGet(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException

Domyślna implementacja service() w HttpServlet przekierowuje wszystkie żądania HTTP GET do tej metody. Serwlety implementują tę metodę w celu obsługi żądań DELETE. Domyślna implementacja zwraca błąd HTTP SC_BAD_REQUEST.

doOptions()

public void doOptions(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException

Domyślna implementacja service() w HttpServlet przekierowuje wszystkie żądania HTTP OPTIONS do tej metody. Domyślna implementacja określa, które opcje są obsługiwane i zwraca odpowiedni nagłówek. Na przykład, jeżeli serwlet omija doGet() i doPost(), przeglądarka otrzymuje informację, że obsługiwane są GET, POST, HEAD, TRACE i OPTIONS. Niemal nigdy nie ma powodu, by omijać tę metodę. Metoda została wprowadzona w Servlet API 2.0.

doPost()

public void doPost(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException

Domyślna implementacja service() w HttpServlet przekierowuje wszystkie żądania HTTP POST do tej metody. Serwlety implementują tę metodę w celu obsługi żądań POST. Domyślna implementacja zwraca błąd HTTP SC_BAD_REQUEST.

doPut()

public void doPut(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException

Domyślna implementacja service() w HttpServlet przekierowuje wszystkie żądania HTTP PUT do tej metody. Serwlety implementują tę metodę w celu obsługi żądań PUT. Domyślna implementacja zwraca błąd HTTP SC_BAD_REQUEST. Większa ilość informacji na temat żądań HTTP PUT jest dostępna w dokumencie RFC 2068 pod adresem http://www.ietf.org/rfc/rfc2068.txt. Metoda została wprowadzona w Servlet API 2.0.

doTrace()

public void doTrace(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException

Domyślna implementacja service() w HttpServlet przekierowuje wszystkie żądania HTTP TRACE do tej metody. Serwlety implementują tę metodę w celu obsługi żądań TRACE. Niemal nigdy nie ma powodu, by omijać tę metodę. Metoda została wprowadzona w Servlet API 2.0.

getLastModified()

public void getLastModified(HttpServletRequest zad)

Zwraca datę i godzinę (wyrażoną w milisekundach od północy 1 stycznia 1970 GMT) ostatniej modyfikacji zawartości tworzonej przez serwlet. Wartości ujemne oznaczają, że czas ten nie jest znany. Domyślna implementacja zwraca -1. Metoda jest wywoływana przez serwery w celu wspomożenia obsługi warunkowych żądań HTTP GET i zarządzania pamięcią podręczną odpowiedzi. Większa ilość informacji znajduje się w rozdziale 4, „Pobieranie informacji”.

service()

public void service(HttpServletRequest zad, HttpServletResponse odp)

throws ServletException, IOException

Publiczna metoda service() przekierowuje żądania do tej metody service(). Metod obsługuje przekierowywanie żądań do doGet(), doPost() i innych funkcji obsługujących w oparciu o typ żądania. Jeżeli metoda zostanie ominięta, nie są wywoływane żadne funkcje obsługujące.

HttpServletRequest

Zestawienie

Nazwa interfejsu

javax.servlet.http.HttpServletRequest

Superinterfejs

javax.servlet.ServletRequest

Bezpośrednie podinterfejsy

Brak

Implementowany przez

Brak

Dostępność

Servlet API 1.0 i późniejsze

Opis

HttpServletRequest rozszerza podstawową klasę ServerRequest dostarczając dodatkowej funkcjonalności serwletom HTTP (WWW). Zawiera obsługę cookies i śledzenia sesji oraz dostęp do informacji z nagłówków HTTP. HttpServletRequest analizuje również przychodzące dane formularzy HTTP i przechowuje je jako parametry serwletów. Serwer przekazuje obiekt HttpServletRequest metodzie usługowej HttpServlet.

Deklaracja interfejsu

public interface HttpServletRequest extends javax.servlet.ServletRequest {

// Metody

public abstract String getAuthType();

public abstract String getContextPath(); // Nowość w 2.2

public abstract Cookie[] getCookies(); // Nowość w 2.0

public abstract long getDateHeader(String nazwa);

public abstract String getHeader(String nazwa);

public abstract Enumeration getHeaderNames();

public abstract Enumeration getHeaders(String nazwa); // Nowość w 2.2

public abstract int getIntHeader(String nazwa);

public abstract String getMethod();

public abstract String getPathInfo();

public abstract String getPathTranslated();

public abstract String getQueryString();

public abstract String getRemoteUser();

public abstract String getRequestedSessionId(); // Nowość w 2.0

public abstract String getRequestURI();

public abstract String getServletPath();

public abstract HttpSession getSession(); // Nowość w 2.1

public abstract HttpSession getSession(boolean tworz); // Nowość w 2.0

public abstract java.security.Principal getUserPrincipal(); // Nowość w 2.2

public abstract boolean isRequestedSessionIdFromCookie(); // Nowość w 2.0

public abstract boolean isRequestedSessionIdFromUrl(); // Opuszczona

public abstract boolean isRequestedSessionIdFromURL(); // Nowość w 2.1

public abstract boolean isRequestedSessionIdValid(); // Nowość w 2.0

public abstract boolean isUserInRole(String rola); // Nowość w 2.2

}

Metody

getAuthType()

public abstract String getAuthType()

Zwraca schemat uwierzytelniania serwletu lub null, jeżeli serwlet nie jest chroniony przez mechanizm kontroli dostępu. Możliwe schematy to BASIC, DIGEST, FORM i CLIENT-CERT. Równoważna zmiennej CGI AUTH_TYPE.

getContextPath()

public abstract String getContextPath()

Zwraca część żądanego URI wskazującą na kontekst (aplikację WWW) żądania. Ścieżka kontekstu zawsze znajduje się na początku URI żądania. Ścieżka rozpoczyna się znakiem /, ale nie kończy się / i jest zwracana bezpośrednio bez zdekodowania URL. W przypadku serwletów działających w głównym (ROOT) kontekście, metoda zwraca pusty łańcuch. Metoda została wprowadzona w Servlet API 2.2.

getCookies()

public abstract Cookie[] getCookies()

Zwraca tablicę obiektów Cookie zawierającą wszystkie cookies wysłane przez przeglądarkę jako część żądania lub null, jeżeli nie wysłano żadnych cookies. Metoda została wprowadzona w Servlet API 2.0.

getDateHeader()

public abstract String getHeader(String nazwa)

Zwraca wartość danego nagłówka jako długą wartość reprezentującą Date (milisekundy od północy 1 stycznia 1970 GMT) lub -1, jeżeli nagłówek nie został wysłany jako część żądania. Nazwa nie zwraca uwagi na wielkość liter. Zgłasza IllegalArgumentException, jeżeli zostanie wywołana na nagłówku, którego wartość nie może zostać przekonwertowana na Date. Metoda ta jest przydatna podczas obsługi nagłówków takich jak Last-Modified i If-Modified-Since.

getHeader()

public abstract String getHeader(String nazwa)

Zwraca wartość danego nagłówka jako łańcuch String lub null, jeżeli nagłówek nie został wysłany jako część żądania. Nazwa nie zwraca uwagi na wielkość liter. Metoda ta może odczytywać wszystkie typy nagłówków.

getHeaderNames()

public abstract Enumeration getHeaderNames()

Zwraca nazwy wszystkich nagłówków, do których serwlet może uzyskać dostęp, jako Enumeration obiektów String lub pustą Enumeration, jeżeli nie występują żądne nagłówki. Niektóre implementacje serwletów mogą nie pozwalać na dostęp do nagłówków w ten sposób, w którym to przypadku metoda zwróci null.

getHeaders()

public abstract Enumeration getHeaders(String nazwa)

Zwraca wszystkie wartości danego nagłówka jako Enumeration obiektów String. Niektóre nagłówki, takie jak Accept-Language, mogą być wysyłane klientom jako kilka nagłówków, każdy z inną wartością. Ta metoda pozwala na odczytanie wszystkich wartości. Jeżeli żądania nie zawiera żadnych nagłówków o danej nazwie, metoda zwraca pustą Enumeration. Nazwa nie zwraca uwagi na wielkość liter. Metoda została wprowadzona w Servlet API 2.2.

getIntHeader()

public abstract int getIntHeader(String nazwa)

Zwraca wartość danego nagłówka jako liczbę int lub -1, jeżeli nagłówek nie został wysłany jako część żądania. Nazwa nie zwraca uwagi na wielkość liter. Zgłasza wyjątek NumberFormatException, jeżeli zostanie wywołana na nagłówku o wartości, która nie może zostać przekonwertowana na int.

getMethod()

public abstract String getMethod();

Zwraca metodę HTTP wykorzystaną do wysłania żądania. Może to być na przykład GET, POST lub HEAD. Równoważna zmiennej CGI REQUEST_METHOD. Implementacja service() HttpServlet wykorzystuje tę metodę podczas przekierowywania żądań.

GetPathInfo()

public abstract String getPathInfo()

Zwraca dodatkowe informacje na temat ścieżki związane z żądaniem lub null, jeżeli informacje te nie występują. Ścieżka jest zdekodowana przez URL przed zwróceniem. Równoważna zmiennej CGI PATH_INFO.

getPathTranslated()

public abstract String getPathTranslated()

Zwraca dodatkowe informacje na temat ścieżki przetłumaczone na ścieżkę systemu plików lub null, jeżeli dodatkowe informacje nie występują lub kontener serwletów nie mógł stworzyć prawidłowej ścieżki do pliku (na przykład kiedy plik znajduje się w zdalnym systemie plików lub może zostać odnaleziony jedynie wewnątrz archiwum .war). Zwracana ścieżka nie musi koniecznie wskazywać na istniejący plik lub katalog. Wywołanie jest podobne do zmiennej CGI PATH_TRANSLATED. Jest także równoważne getServletContext().getRealPath(zad.getPathInfo()).

getQueryString()

public abstract String getQueryString()

Zwraca łańcuch zapytania z URL-a żądania. Wartość jest równoważna wartości zmiennej CGI QUERY_STRING. Ponieważ HttpServletRequest przetwarza ten łańcuch w zbiór parametrów serwletów dostępnych poprzez getParameter(), większość serwletów może ignorować tę metodę.

getRemoteUser()

public abstract String getRemoteUser()

Zwraca nazwę użytkownika wykonującego żądanie jako String lub null, jeżeli dostęp do serwletu nie został ograniczony. Równoważna zmiennej CGI REMOTE_USER. Ogólnie wymaga zalogowania użytkownika przy pomocy uwierzytelniania HTTP. Nie istnieje porównywalna metoda służąca do bezpośredniego odczytywania hasła użytkownika zdalnego.

getRequestedSessionId()

public abstract String getRequestedSessionId()

Metoda zwraca identyfikator sesji określony przez klienta. Nie musi być to prawdziwy identyfikator sesji będący aktualnie w użyciu — na przykład, jeżeli sesja wygasła przez pojawieniem się żądania, serwer tworzy nowy identyfikator sesji i używa go zamiast poprzedniego. Metoda została wprowadzona w Servlet API 2.0.

getRequestURI()

public abstract String getRequestURI()

Zwraca Universal Resource Identifier (Uniwersalny Identyfikator Zasobów — URI) żądania. Jest to zasób żądany przez klienta w pierwszej linii jego żądania HTTP, wszystko pomiędzy protokołem i łańcuchem zapytania. W przypadku zwykłych serwletów HTTP, URI żądania to URI żądania bez schematu, komputera, portu i łańcucha zapytania, ale z dodatkowymi informacjami na temat ścieżki. Ścieżka jest zwracana bezpośrednio, bez dekodowania URL. Wczesne wersje Servlet API definiowały i implementowały tę metodę na różne sposoby. Podczas tworzenia kodu zależnego od tej metody należy upewnić się co do jej wyników w zależności od różnych wersji Servlet API.

getServletPath()

public abstract String getServletPath()

Zwraca część URI odnoszącą się do serwletu. Ścieżka przechodzi dekodowanie URL przed zwróceniem i nie zawiera żadnych dodatkowych informacji, ani też łańcucha zapytania. W przypadku dopasowań do rozszerzeń plików ścieżka nie zawiera tych rozszerzeń. Równoważna zmiennej CGI SCRIPT_NAME.

getSession()

public abstract HttpSession getSession()

public abstract HttpSession getSession(boolean tworz)

Zwraca aktualną sesję związaną z użytkownikiem wykonującym żądanie. Jeżeli użytkownik nie posiada aktualnej prawidłowej sesji, metoda tworzy nową, jeżeli tworz posiada wartość true lub zwraca null, jeżeli tworz wynosi false. Wersja bez argumentów posiada tworz ustawioną wewnętrznie na true. Aby zapewnić prawidłowe utrzymanie sesji, metoda powinna zostać wywołana przynajmniej raz przed przesłaniem w odpowiedzi dowolnej zawartości. Serwlety nie wykorzystujące śledzenia sesji mogą zignorować tę metodę. Metoda została wprowadzona w Servlet API 2.0. Wersja bez argumentów została wprowadzona w Servlet API 2.1.

getUserPrincipal()

public abstract java.security.Principal getUserPrincipal()

Zwraca obiekt java.security.Principal zawierający nazwę obecnie uwierzytelnianego użytkownika. Jeżeli użytkownik nie został uwierzytelniony, metoda zwraca null. Metoda została wprowadzona w Servlet API 2.2.

isRequestedSessionIdFromCookie()

public abstract boolean isRequestedSessionIdFromCookie()

Zwraca true, jeżeli klient przesłał identyfikator sesji przez cookie, w przeciwnym przypadku false. Metoda została wprowadzona w Servlet API 2.0.

isRequestedSessionIdFromURL()

public abstract boolean isRequestedSessionIdFromUrl()

public abstract boolean isRequestedSessionIdFromURL()

Zwraca true, jeżeli żądany identyfikator sesji został przesłany przez napisany ponownie URL, w przeciwnym wypadku false. Metoda isRequestedSessionIdFromUrl() została wprowadzona w Servlet API 2.0, następnie opuszczona w Servlet API 2.1 z wprowadzeniem bardziej standardowo nazwanej metody isRequestedSessionIdFromURL().

isRequestedSessionIdValid()

public abstract boolean isRequestedSessionIdValid()

Zwraca true, jeżeli sesja żadna przez klienta jest prawidłową sesją i w związku z tym jest sesją obecnie wykorzystywaną. W przypadku sesji nowych i tych, które wygasły zwraca false. Metoda została wprowadzona w Servlet API 2.0.

isUserInRole()

public abstract boolean isUserInRole(String rola)

Zwraca wartość boolean wskazującą, czy uwierzytelniony użytkownik posiada określona logiczną „rolę”. Role i członkostwo w rolach mogą być definiowane przy pomocy deskryptorów, a ich odwzorowanie względem użytkowników jest wykonywane przy pomocy narzędzi administracyjnych serwera. Jeżeli użytkownik nie został uwierzytelniony, metoda zawsze zwraca false. Metoda została wprowadzona w Servlet API 2.2.

HttpServletResponse

Zestawienie

Nazwa interfejsu

javax.servlet.http.HttpServletResponse

Superinterfejs

javax.servlet.ServletResponse

Bezpośrednie podinterfejsy

Brak

Implementowany przez

Brak

Dostępność

Servlet API 1.0 i późniejsze

Opis

HttpServletResponse rozszerza klasę ServletResponse w celu umożliwienia manipulacji danymi specyficznymi dla protokołu HTTP, włączając w to nagłówki odpowiedzi i kody stanu. Definiuje również pewną ilość stałych reprezentujących różne kody stanu HTTP i zawiera funkcje wspomagające operacje śledzenia sesji.

Deklaracja interfejsu

public interface HttpServletResponse extends javax.servlet.ServletResponse {

// Stałe

public static final int SC_ACCEPTED;

public static final int SC_BAD_GATEWAY;

public static final int SC_BAD_REQUEST;

public static final int SC_CONFLICT;

public static final int SC_CONTINUE; // Nowość w 2.0

public static final int SC_CREATED;

public static final int SC_EXPECTATION_FAILED; // Nowość w 2.2

public static final int SC_FORBIDDEN;

public static final int SC_GATEWAY_TIMEOUT; // Nowość w 2.0

public static final int SC_GONE; // Nowość w 2.0

public static final int SC_HTTP_VERSION_NOT_SUPPORTED; // Nowość w 2.0

public static final int SC_INTERNAL_SERVER_ERROR;

public static final int SC_LENGTH_REQUIRED; // Nowość w 2.0

public static final int SC_METHOD_NOT_ALLOWED; // Nowość w 2.0

public static final int SC_MOVED_PERMAMENTLY;

public static final int SC_MOVED_TEMPORARILY;

public static final int SC_MULTIPLE_CHOICES; // Nowość w 2.0

public static final int SC_NO_CONTENT;

public static final int SC_NON_AUTHORITATIVE_INFORMATION; // Nowość w 2.0

public static final int SC_NOT_ACCEPTABLE; // Nowość w 2.0

public static final int SC_NOT_FOUND;

public static final int SC_NOT_IMPLEMENTED;

public static final int SC_NOT_MODIFIED;

public static final int SC_OK;

public static final int SC_PARTIAL_CONTENT; // Nowość w 2.0

public static final int SC_PAYMENT_REQUIRED; // Nowość w 2.0

public static final int SC_PRECONDITION_FAILED; // Nowość w 2.0

public static final int SC_PROXY_AUTHENTICATION_REQUIRED; // Nowość w 2.0

public static final int SC_REQUEST_ENTITY_TOO_LARGE; // Nowość w 2.0

public static final int SC_REQUEST_TIMEOUT; // Nowość w 2.0

public static final int SC_REQUEST_URI_TOO_LONG; // Nowość w 2.0

public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE; // Nowość w 2.2

public static final int SC_RESET_CONTENT; // Nowość w 2.0

public static final int SC_SEE_OTHER; // Nowość w 2.0

public static final int SC_SERVICE_UNAVAILABLE;

public static final int SC_SWITCHING_PROTOCOLS; // Nowość w 2.0

public static final int SC_UNAUTHORIZED;

public static final int SC_UNSUPPORTED_MEDIA_TYPE; // Nowość w 2.0

public static final int SC_USE_PROXY; // Nowość w 2.0

// Metody

public abstract void addCookie(Cookie cookie); // Nowość w 2.0

public abstract void addDateHeader(String nazwa, long data); // Nowość w 2.2

public abstract void addHeader(String nazwa, String wartosc); // Nowość w 2.2

public abstract void addIntHeader(String nazwa, int wartosc); // Nowość w 2.2

public abstract boolean containsHeader(String nazwa);

public abstract String encodeRedirectUrl(String url); // Opuszczona

public abstract String encodeRedirectURL(String url); // Nowość w 2.1

public abstract String encodeUrl(String url); // Opuszczona

public abstract String encodeURL(String url); // Nowość w 2.1

public abstract void sendError(int sc)

throws IOException, IllegalStateException;

public abstract void sendError(int sc, String wiad)

throws IOException, IllegalStateException;

public abstract void sendRedirect(String miejsce)

throws IOException, IllegalStateException;

public abstract void setDateHeader(String nazwa, long data);

public abstract void setHeader(String nazwa, String wartosc);

public abstract void setIntHeader(String nazwa, int wartosc);

public abstract void setStatus(int sc);

public abstract void setStatus(int sc, String wiad); // Opuszczona

}

Stałe

Dodatek D, „Kody stanu HTTP”, zawiera kompletny opis wszystkich kodów stanu SC_XXX.

Metody

addCookie()

public abstract void addCookie(Cookie cookie)

Dodaje do odpowiedzi określone cookie. Dodatkowe cookies mogą być dodawane przy pomocy powtarzanych wywołań addCookie(). Ponieważ cookies są wysyłane przy pomocy nagłówków HTTP, powinny one zostać dodane do odpowiedzi przed jej zatwierdzeniem. Od przeglądarek wymaga się przyjmowanie jednocześnie jedynie 20 cookies na witrynę, 300 na użytkownika, a wielkość każdego cookie może zostać ograniczona do 4096 bajtów.

addDateHeader()

public abstract void addDateHeader(String nazwa, long data)

Dodaje nagłówek o danej nazwie i wartości daty. Metoda przyjmuje datę jako liczbę long reprezentującą ilość milisekund od północy 1 stycznia 1970 GMT. Metoda pozwala nagłówkom odpowiedzi na posiadanie więcej niż jednej wartości. Metoda została wprowadzona w Servlet API 2.2.

addHeader()

public abstract void addHeader(String nazwa, String wartosc)

Dodaje nagłówek o danej nazwie i wartości. Metoda pozwala nagłówkom odpowiedzi na posiadanie więcej niż jednej wartości. Metoda została wprowadzona w Servlet API 2.2.

addIntHeader()

public abstract void addIntHeader(String nazwa, int wartosc)

Dodaje nagłówek o danej nazwie i wartości int. Metoda przyjmuje datę w formie long, reprezentującą ilość milisekund od północy 1 stycznia 1970 GMT. Metoda pozwala nagłówkom odpowiedzi na posiadanie więcej niż jednej wartości. Metoda została wprowadzona w Servlet API 2.2.

containsHeader();

public abstract boolean containsHeader(String nazwa)

Zwraca true, jeżeli dany nagłówek został wcześniej ustawiony, w przeciwnym wypadku false.

encodeRedirectURL()

public abstract String encodeRedirectUrl(String url)

public abstract String encodeRedirectURL(String url)

Zwraca określony URL zakodowany (ponownie napisany) tak, aby zawierał identyfikator sesji. Jeżeli kodowanie nie jest potrzebne lub obsługiwane, metoda pozostawia URL niezmieniony. Zasady wykorzystywane do podejmowania decyzji czy i kiedy kodować URL są zależne od serwera. Metoda ta może wykorzystywać inne zasady niż encodeURL(). W celu umożliwienia śledzenia sesji, wszystkie URL-e przekazane metodzie sendRedirect() powinny przejść prze tę metodę. Metoda encodeRedirectUrl() została wprowadzona w Servlet API 2.0, po czym opuszczona w Servlet API 2.1 z wprowadzeniem bardziej standardowo nazwanej metody encodeRedirectURL().

encodeURL()

public abstract String encodeUrl(String url)

public abstract String encodeURL(String url)

Zwraca określony URL zakodowany (ponownie napisany) tak, aby zawierał identyfikator sesji. Jeżeli kodowanie nie jest potrzebne lub obsługiwane, metoda pozostawia URL niezmieniony. Zasady wykorzystywane do podejmowania decyzji czy i kiedy kodować URL są zależne od serwera. W celu umożliwienia śledzenia sesji, wszystkie URL-e wysyłane przez serwlet powinny przejść prze tę metodę. Metoda encodeUrl() została wprowadzona w Servlet API 2.0, po czym opuszczona w Servlet API 2.1 z wprowadzeniem bardziej standardowo nazwanej metody encodeURL().

sendError()

public abstract void sendError(int sc)

throws IOException, IllegalStateException

public abstract void sendError(int sc, String wiad)

throws IOException, IllegalStateException

Metody te są podobne do setStatus() poza tym, że są wykorzystywane, kiedy kod stanu wskazuje błąd podczas obsługi żądania i serwlet chciałby, aby serwer wygenerował odpowiednią stronę błędu. Metoda ta powinna zostać wywołana przed zatwierdzeniem odpowiedzi, ponieważ w innym przypadku zgłosi wyjątek IllegalStateException. Metoda ta wykonuje ukryte wyczyszczenie bufora odpowiedzi przed wygenerowaniem strony błędu. Nagłówki ustawione przed sendError() powinny pozostać niezmienione.

sendRedirect()

public abstract void sendRedirect(String miejsce)

throws IOException, IllegalStateException

Przekierowuje odpowiedź do określonej lokalizacji, automatycznie ustawiając kod stanu i nagłówek Location. Domyślna implementacja zapisuje również krótka główną część odpowiedzi, która zawiera hiperłącze do nowej lokacji w celu wspomożenia przeglądarek nie posiadających zdolności przekierowywania. W związku z tym nie należy tworzyć własnej głównej części odpowiedzi podczas wykorzystywania tej metody. Specyfikacja HTTP nakazuje, aby wszystkie URL-e przekierowań były bezwzględne; jednak począwszy od Servlet API 2.2 metoda ta przyjmuje również URL-e względna — serwer przekształca je do formy bezwzględnej (automatycznie dodając aktualny protokół, serwer i port — ale nie ścieżkę kontekstu; należy wykonać to działanie samodzielne, jeżeli okaże się konieczne) przed wysłaniem go do klienta. Metoda ta powinna zostać wywołana przed zatwierdzeniem odpowiedzi, ponieważ w innym przypadku zgłosi wyjątek IllegalStateException. Metoda ta wykonuje ukryte wyczyszczenie bufora odpowiedzi przed wygenerowaniem strony błędu. Nagłówki ustawione przed sendRedirect() powinny pozostać niezmienione.

setDateHeader()

public abstract void setDateHeader(String nazwa, long data)

Ustawia wartość danego nagłówka jako String określający konkretną datę i czas. Metoda przyjmuje datę w formie long, reprezentującą ilość milisekund od północy 1 stycznia 1970 GMT. Jeżeli nagłówek został już wcześniej ustawiony, nowa wartość nadpisuje wszystkie poprzednie wartości.

setHeader()

public abstract void setHeader(String nazwa, String wartosc)

Ustawia wartość danego nagłówka jako String. Nazwa nie zwraca uwagi na wielkość liter (tak jak we wszystkich metodach związanych z nagłówkami). Jeżeli nagłówek został już wcześniej ustawiony, nowa wartość nadpisuje wszystkie poprzednie wartości. Nagłówki zawsze powinny zostać ustawione przed zatwierdzeniem odpowiedzi.

setIntHeader()

public abstract void setIntHeader(String nazwa, int wartosc)

Ustawia wartość danego nagłówka jako int. Jeżeli nagłówek został już wcześniej ustawiony, nowa wartość nadpisuje wszystkie poprzednie wartości.

setStatus()

public abstract void setStatus(int sc);

public abstract void setStatus(int sc, String wiad)

Ustawia kod stanu HTTP. Kod może zostać określony przy pomocy wartości liczbowej lub kodów SC_XXX zdefiniowanych w HttpServletResponse. Jako drugi parametr może zostać określona własna wiadomość o błędzie protokołu HTTP; jednak nie powinno się wykonywać tego działania ponieważ wersja metody przyjmująca String została opuszczona w ServletAPI 2.1. Kod stanu powinien zostać ustawiony przed zatwierdzeniem odpowiedzi, w innym przypadku wywołanie jest ignorowane.

HttpSession

Zestawienie

Nazwa interfejsu

javax.servlet.http.HttpSession

Superinterfejs

Brak

Bezpośrednie podinterfejsy

Brak

Implementowany przez

Brak

Dostępność

Servlet API 2.0 i późniejsze

Opis

Interfejs HttpSession dostarcza mechanizmu służącego do przechowywania tymczasowych informacji na temat odwiedzających witrynę WWW. Dokładne omówienie śledzenia sesji znajduje się w rozdziale 7. Sam interfejs HttpSession umożliwia serwletom przeglądanie i manipulację informacjami specyficznymi dla danej sesji, takimi jak czas utworzenia i unikatowy identyfikator sesji. Zawiera również metody służące do dowiązywania obiektów do sesji w celu późniejszego ich odczytania, umożliwiając „koszykom na zakupy” i innym aplikacjom przechowywanie danych pomiędzy żądaniami.

Serwlet pobiera obiekt HttpSession przy pomocy metody getSession() HttpServletRequest. Zachowanie sesji, takie jak ilość czasu, która musi upłynąć przed zniszczeniem sesji, może zostać ustawione programowo lub przed deskryptor aplikacji WWW.

W przypadku sesji związanych z nierozporoszoną aplikacją WWW, każdy obiekt może zostać dowiązany do sesji. Obiekty implementujące java.io.Serializable mogą zostać zapisane na dysku w celu uwolnienia pamięci i przetrwania pomiędzy ponownymi uruchomieniami serwera.

W przypadku sesji związanych z rozproszoną aplikacją WWW, obiekt umieszczony w sesji musi implementować java.io.Serializable. Jeżeli warunek ten nie zostanie spełniony, serwer może zgłosić IllegalArgumentException. Serwery wykorzystują przyklejanie sesji w celu efektywnego zarządzania sesjami w środowisku rozproszonym, w którym często występuje kilka serwerów wspierających. Oznacza to, że wszystkie żądania będące częścią pojedynczej sesji konkretnego użytkownika są obsługiwane przez tylko jedną JVM w jednym czasie. Eliminuje to konieczność ciągłego replikowania informacji o sesji pomiędzy serwerami wspierającymi. Odpowiedzialność za sesję może zostać przekazana innemu serwerowi pomiędzy żądaniami użytkownika, a w celu umożliwienia przenoszenia sesji wszystkie obiekty w niej umieszczone muszą być Serializable.

Deklaracja interfejsu

public interface HttpSession {

// Metody

// Większość metod może zgłaszać IllegalStateException

public abstract Object getAttribute(String nazwa); // Nowość w 2.2

public abstract Enumeration getAttributeNames(); // Nowość w 2.2

public abstract long getCreationTime();

public abstract String getID();

public abstract long getLastAccessedTime();

public abstract int getMaxInactiveInterval(); // Nowość w 2.1

public abstract HttpSessionContext getSessionContext(); // Opuszczona

public abstract Object getValue(String nazwa); // Opuszczona

public abstract String[] getValueNames(); // Opuszczona

public abstract void invalidate();

public abstract boolean isNew();

public abstract void putValue(String nazwa, Object wartosc); // Opuszczona

public abstract void removeAttribute(String nazwa); // Nowość w 2.2

public abstract void removeValue(String nazwa); // Opuszczona

public abstract void setAttribute(String nazwa, Object value); // Nowość w 2.2

public abstract void setMaxInactiveInterval(int sekundy); // Nowość w 2.1

}

Metody

getAttribute()

public abstract Object getAttribute(String nazwa)

throws IllegalStateException

Zwraca obiekt dowiązany do sesji pod określoną nazwą lub null, jeżeli nie istnieje pasujące dowiązanie. Zgłasza IllegalStateException, jeżeli sesja jest nieważna.

getAttributeNames()

public abstract Enumeration getAttributeNames()

throws IllegalStateException

Zwraca Enumeration zawierającą nazwy wszystkich obiektów dowiązanych do aktualnej sesji jako obiekty String lub pustą Enumeration, jeżeli nie występują żadne dowiązania. Zgłasza IllegalStateException, jeżeli sesja jest nieważna.

getCreationTime()

public abstract long getCreationTime()

throws IllegalStateException

Zwraca czas utworzenia sesji, jako liczbę long reprezentującą ilość milisekund od północy 1 stycznia 1970 GMT. Zgłasza IllegalStateException, jeżeli sesja jest nieważna.

getId()

public abstract String getID()

throws IllegalStateException

Zwraca niepowtarzalny identyfikator String przypisany do danej sesji. Struktura identyfikatora jest zależna od implementacji; powinna być po prostu trudna do odgadnięcia dla kogoś innego. Na przykład identyfikator Tomcata mógłby wyglądać podobnie do awj4qyhsn2. Zgłasza IllegalStateException, jeżeli sesja jest nieważna.

getLastAccessedTime()

public abstract long getLastAccessedTime()

throws IllegalStateException

Zwraca czas, w którym klient po raz ostatni wysłał żądanie związane z daną sesją (nie włączając w to aktualnego żądania), jako liczbę long reprezentującą ilość milisekund od północy 1 stycznia 1970 GMT. Zgłasza IllegalStateException, jeżeli sesja jest nieważna.

getMaxInactiveInterval

public abstract int getMaxInactiveInterval()

throws IllegalStateException

Zwraca czas (w sekundach) jaki musi upłynąć pomiędzy żądaniami, zanim kontener serwletów unieważni sesję. Ujemny czas oznacza, że sesja nigdy nie ulegnie przedawnieniu. Domyślny czas przedawnienia jest ustawiony wewnątrz deskryptora aplikacji WWW. Zgłasza IllegalStateException, jeżeli sesja jest nieważna. Metoda została wprowadzona w Servlet API 2.1.

getSessionContext()

public abstract HttpSessionContext getSessionContext()

Zwraca pusty kontekst ze względów bezpieczeństwa, począwszy od Servlet API 2.1. Opuszczona również od Servlet API 2.1. Proszę zobaczyć HttpSessionContext w celu uzyskania większej ilości informacji.

getValue()

public abstract Object getValue(String nazwa)

throws IllegalStateException

Zwraca obiekt dowiązany do sesji pod określoną nazwą lub null, jeżeli nie występuje pasujące dowiązanie. Zgłasza IllegalStateException, jeżeli sesja jest nieważna. Opuszczona w Servlet API 2.2 na rzecz getAttribute().

getValueNames()

public abstract String[] getValueNames()

throws IllegalStateException

Zwraca tablicę zawierającą nazwy wszystkich obiektów dowiązanych do aktualnej sesji lub pustą (zerowej długości) tablicę, jeżeli nie występują żadne dowiązania. Zgłasza IllegalStateException, jeżeli sesja jest nieważna. Opuszczona w Servlet API 2.2 na rzecz getAttributeNames().

invalidate()

public abstract void invalidate()

throws IllegalStateException

Powoduje natychmiastowe unieważnienie sesji. Wszystkie dowiązania obiektów przechowywane w sesji zostają usunięte. Zgłasza IllegalStateException, jeżeli sesja została już wcześniej unieważniona.

isNew()

public abstract boolean isNew()

throws IllegalStateException

Zwraca odpowiedź, czy sesja jest nowa. Sesja jest uważana za nową, jeżeli została już utworzona przez serwer, ale klient nie potwierdził jeszcze dołączenia do niej. Na przykład, jeżeli serwer obsługuje jedynie sesje oparte na cookies, a klient całkowicie zablokował ich użycie, wywołania getSession() zawsze zwracają nowe sesje. Zgłasza IllegalStateException, jeżeli sesja została już wcześniej unieważniona.

putValue()

public abstract void putValue(String nazwa, Object wartosc)

throws IllegalStateException

Dowiązuje do sesji dany obiekt pod określoną nazwą. Wszystkie istniejące dowiązania o tej samej nazwie zostają usunięte. Zgłasza IllegalStateException, jeżeli sesja jest nieważna. Opuszczona w Servlet API 2.2 na rzecz setAttribute().

removeAttribute()

public abstract void removeAttribute(String nazwa)

throws IllegalStateException

Usuwa obiekt dowiązany pod określoną nazwą lub nie wykonuje żadnego działania, jeżeli dowiązanie nie istnieje. Zgłasza IllegalStateException, jeżeli sesja jest nieważna.

removeValue()

public abstract void removeValue(String nazwa)

throws IllegalStateException

Usuwa obiekt dowiązany pod określoną nazwą lub nie wykonuje żadnego działania, jeżeli dowiązanie nie istnieje. Zgłasza IllegalStateException, jeżeli sesja jest nieważna. Opuszczona w Servlet API 2.2 na rzecz removeAttribute().

setAttribute()

public abstract void setAttribute(String nazwa, Object value)

throws IllegalStateException

Dowiązuje do sesji dany obiekt pod określoną nazwą. Wszystkie istniejące dowiązania o tej samej nazwie zostają usunięte. Zgłasza IllegalStateException, jeżeli sesja jest nieważna. Metoda została wprowadzona w Servlet API 2.2.

setMaxInactiveInterval()

public abstract void setMaxInactiveInterval(int sekundy)

Określa czas (w sekundach) jaki musi upłynąć pomiędzy żądaniami, zanim kontener serwletów unieważni sesję. Ujemny czas oznacza, że sesja nie powinna nigdy ulec przedawnieniu. Domyślny czas przedawnienia może zostać ustawiony wewnątrz deskryptora aplikacji WWW. Zgłasza IllegalStateException, jeżeli sesja jest nieważna. Metoda została wprowadzona w Servlet API 2.1.

HttpSessionBindingEvent

Zestawienie

Nazwa klasy

javax.servlet.http.HttpSessionBindingEvent

Superklasa

java.util.EventObject

Bezpośrednie podklasy

Brak

Implementowane interfejsy

Brak

Dostępność

Servlet API 2.0 i późniejsze

Opis

HttpSessionBindingEvent jest przekazywany HttpSessionBindingListener, kiedy obiekt nasłuchujący jest dowiązywany do sesji, lub kiedy jego dowiązanie zostaje usunięte.

Podsumowanie klas

public class HttpSessionBindingEvent extends java.util.EventObject {

// Konstruktory

public HttpSessionBindingEvent(HttpSession sesja, String nazwa);

// Metody egzemplarzy

public String getName();

public HttpSession getSession();

}

Konstruktory

HttpSessionBindingEvent()

public HttpSessionBindingEvent(HttpSession sesja, String nazwa)

Konstruuje nowy HttpSessionBindingEvent wykorzystując sesję, do której następuje dowiązanie i nazwę, pod którą dany obiekt zostaje przypisany (jest to ta sama nazwa, która zostaje przekazana metodzie setAttribute() HttpSession). Programiści serwletów nie powinni nigdy zostać zmuszeni do wykorzystania tego konstruktora.

Metody egzemplarzy

getName()

public String getName()

Zwraca nazwę, pod którą dany obiekt został przydzielony do sesji.

GetSession()

public HttpSession getSession()

Zwraca sesję, do której dany obiekt jest dowiązywany, lub którego dowiązanie jest usuwane.

HttpSessionBindingListener

Zestawienie

Nazwa interfejsu

javax.servlet.http.HttpSessionBindingListener

Superinterfejs

java.util.EventListener

Bezpośrednie podinterfejsy

Brak

Implementowany przez

Brak

Dostępność

Servlet API 2.0 i późniejsze

Opis

Obiekt implementujący HttpSessionBindingListener jest informowany poprzez wywołania valueBound() i valueUnbound(), kiedy zostaje dowiązany (lub jego dowiązanie zostaje usunięte) do HttpSession. Interfejs ten umożliwia między innymi uporządkowane wyczyszczenie zasobów związanych z sesją, takich jak połączenia z bazą danych. Proszę zauważyć, że w środowisku rozproszonym wywołanie valueBound() może nastąpić w innej JVM niż wywołanie valueUnbound().

Deklaracja interfejsu

public interface HttpSessionBindingListener extends java.util.EventListener {

// Metody

public abstract void valueBound(HttpSessionBindingEvent zdarzenie);

public abstract void valueUnbound(HttpSessionBindingEvent zdarzenie);

}

Metody

valueBound()

public abstract void valueBound(HttpSessionBindingEvent zdarzenie)

Wywoływana podczas dowiązywania mechanizmu nasłuchującego do sesji.

valueUnbound()

public abstract void valueUnbound(HttpSessionBindingEvent zdarzenie)

Wywoływana podczas usuwania dowiązania mechanizmu nasłuchującego do sesji (włączając w to zniszczenie sesji).

HttpSessionContext

Zestawienie

Nazwa interfejsu

javax.servlet.http.HttpSessionContext

Superinterfejs

Brak

Bezpośrednie podinterfejsy

Brak

Implementowany przez

Brak

Dostępność

Servlet API 2.0 i późniejsze; opuszczony w Servlet API 2.1

Opis

HttpSessionContext jest opuszczona od czasów Servlet API 2.1. Poprzednio klasa ta umożliwiała dostęp do wszystkich aktywnych w danym momencie sesji w kontenerze serwletów. Tworzyło to potencjalną dziurę w systemie zabezpieczeń, ponieważ serwlet mógł wykorzystać te klasę w celu wyświetlenia wszystkich identyfikatorów sesji odnalezionych wewnątrz kontekstu, a informacja ta mogła zostać wykorzystana przez nieuczciwych klientów do utorowania sobie drogi do innej sesji. Ponieważ możliwość jednoczesnego dostępu do wszystkich sesji jest nie jest prawie nigdy potrzebna, klasa została opuszczona ze względów bezpieczeństwa.

Deklaracja interfejsu

Public interface HttpSessionContext {

// Metody

public abstract Enumeration getIds(); // Opuszczona

public abstract HttpSession(String idSesji); // Opuszczona

}

Metody

getIds()

public abstract Enumeration getIds()

Opuszczona w Servlet API 2.1. W Servlet API 2.0 zwracała Enumeration zawierającą identyfikatory wszystkich ważnych w danym momencie sesji, lub pustą Enumeration, jeżeli takie nie występowały. Identyfikatory sesji zwracane przez getIds() muszą być traktowane jak tajemnica serwera, ponieważ każdy klient znający identyfikator sesji innego klienta mógłby, przy pomocy utworzonego samodzielnie cookie lub URL-a dołączyć do sesji drugiego klienta.

getSession()

public abstract HttpSession(String idSesji)

Opuszczona w Servlet API 2.1. W Servlet API 2.0 zwracała sesję związaną z danym identyfikatorem sesji. Lista ważnych identyfikatorów sesji może zostać odczytana przez metodę getIds().

HttpUtils

Zestawienie

Nazwa klasy

javax.servlet.http.HttpUtils

Superklasa

java.lang.Object

Bezpośrednie podklasy

Brak

Implementowane interfejsy

Brak

Dostępność

Servlet API 1.0 i późniejsze

Opis

Obiekt służący jako kontener dla kilku potencjalnie przydatnych, zorientowanych na HTTP metod.

Podsumowanie klasy

public class HttpUtils

// Konstruktory

public HttpUtils();

// Metody klasy

public static StringBuffer getRequestURL(HttpServletRequest zad);

public static Hashtable parsePostData(int dlug, ServletInputStream in);

public static Hashtable parseQueryString(String s);

}

Konstruktory

HttpUtils()

public HttpUtils()

Domyślny konstruktor nie wykonuje żadnych działań.

Metody klasy

getRequestURL()

public static StringBuffer getRequestURL(HttpServletRequest zad)

Odtwarza URL żądania w oparciu o informacje dostępne w obiekcie HttpServletRequest. Zwraca StringBuffer, który zawiera schemat, nazwę serwera, port serwera oraz dodatkowe informacje ścieżki, ale nie łańcuch zapytania. Odtworzony URL powinien wyglądać niemal identycznie jak URL wykorzystany przez klienta. Metoda ta może zostać wykorzystana do zgłaszania błędów, przekierowywania oraz tworzenia URL-i. W przypadku aplikacji, które muszą bezbłędnie zidentyfikować konkretne serwlety. Lepszym wyborem jest generalnie metoda getRequestURI() HttpServletRequest.

parsePostData()

public static Hashtable parsePostData(int dlug, ServletInputStream in)

Analizuje dlug danych parametrów ServletInputStream (zazwyczaj wysyłanych jako część operacji POST). Zgłasza IllegalArgumentException, jeżeli dane parametrów okażą się nieprawidłowe. Większość serwletów wykorzystuje getParameterNames(), getParameter() i getParameterValues() zamiast tej metody.

parseQueryString()

public static Hashtable parseQueryString(String s)

Zwraca tablicę asocjacyjną Hashtable, w której klucze są nazwami parametrów pobranymi z łańcucha zapytania, a każda wartość tablicy jest tablicą String zawierającą zdekodowaną wartość/wartości parametru. Zgłasza IllegalArgumentException, jeżeli łańcuch zapytania okaże się nieprawidłowy. Większość serwletów wykorzystuje getParameterNames(), getParameter() i getParameterValues() zamiast tej metody. Użycie obu tych metod nie jest bezpieczne.

2 Część I Podstawy obsługi systemu WhizBang (Nagłówek strony)

2 C:\0-praca\Java Servlet - programowanie. Wyd. 2\rB-t.doc



Wyszukiwarka

Podobne podstrony:
r12-05, Programowanie, ! Java, Java Server Programming
r20-05, Programowanie, ! Java, Java Server Programming
O Autorach-05, Programowanie, ! Java, Java Server Programming
r05-05, Programowanie, ! Java, Java Server Programming
r07-05, Programowanie, ! Java, Java Server Programming
r03-05, Programowanie, ! Java, Java Server Programming
rE-05, Programowanie, ! Java, Java Server Programming
r19-05, Programowanie, ! Java, Java Server Programming
r17-05, Programowanie, ! Java, Java Server Programming
r11-05, Programowanie, ! Java, Java Server Programming
rD-05, Programowanie, ! Java, Java Server Programming
rF-05, Programowanie, ! Java, Java Server Programming
r04-05, Programowanie, ! Java, Java Server Programming
r13-05, Programowanie, ! Java, Java Server Programming
r01-05, Programowanie, ! Java, Java Server Programming
r10-05, Programowanie, ! Java, Java Server Programming
r02-05, Programowanie, ! Java, Java Server Programming
r12-05, Programowanie, ! Java, Java Server Programming
05 Programowanie

więcej podobnych podstron