rB-05.doc

(255 KB) Pobierz
Szablon dla tlumaczy

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.

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ą ...

Zgłoś jeśli naruszono regulamin