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.
Rysunek B.1.
Pakiet javax.servlet.http
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
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.
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);
}
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.
public Object clone()
Omija standardową metodę clone() w celu zwrócenia kopii aktualnego obiektu (duplikatu cookie).
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.
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.
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.
public String getName()
Zwraca nazwę aktualnego cookie.
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.
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.
public String getValue()
Zwraca wartość aktualnego cookie w formie łańcucha.
public int getVersion()
Zwraca wersję aktualnego cookie.
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.
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.
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.
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ł.
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.
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.
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.
javax.servlet.http.HttpServlet
Javax.servlet.GenericServlet
java.servlet.Servlet
java.io.Serializable
Servlet API 1.0 i późniejsze
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.
public abstract class HttpServlet extends javax.servlet.GenericServlet
implements javax.servlet.Servlet, java.io.Serializable {
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)
public void doOptions(HttpServletRequest zad, HttpServletResponse odp)
public void doPost(HttpServletRequest zad, HttpServletResponse odp)
public void doPut(HttpServletRequest zad, HttpServletResponse odp)
public void doTrace(HttpServletRequest zad, HttpServletResponse odp)
public void getLastModified(HttpServletRequest zad);
public void service(HttpServletRequest zad, HttpServletResponse odp)
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().
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.
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.
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.
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ą ...
Iskraa