[ Pobierz całość w formacie PDF ]
.Przepisywanie adresów URL to sposób ledzenia użytkowników, którzy odwiedzajšwitrynę i majš wyłšczonš obsługę cookies.Jest on implementowany poprzezdodawanie dodatkowych informacji na końcu adresu URL, przy czym mechanizmyledzenia sesji, którymi dysponujš serwlety, automatycznie zajmujš sięwszelkimi szczegółami.ledzenie sesji zostanie szczegółowo opisane w rozdziale9.Warto jednak wyrobić sobie nawyk używania metody encodeURL, aby póniejmożna było wzbogacić witrynę o ledzenie sesji jak najmniejszym kosztem.MetodaJeli kierujesz użytkownika do innej strony należšcej do tej samej witryny, toprzygotuj się na wypadek gdyby w przyszłoci chciał korzystać ze ledzeniasesji.W tym celu zamiast wywołania:response.sendRedirect(url)użyj wywołania postaci:response.sendRedirect(response.encodeURL(url)).Czasami ten kod statusu jest używany zamiennie z kodem 301.Na przykład, gdybłędnie zażšdasz strony http://host/~użytkownik (pomijajšc znak ukonika nakońcu adresu), to niektóre serwery odpowiedzš kodem statusu 301 a inne, kodem302.Z technicznego punktu widzenia, przeglšdarki powinne automatycznieobsłużyć przekierowanie wyłšcznie wtedy, gdy poczštkowe żšdanie było żšdaniemGET.Więcej informacji na ten temat znajdziesz w opisie kodu statusu 307.303 (See Other patrz inny)Kod statusu 304 (SC_SEE_OTHER) przypomina kody 301 oraz 302, z tš różnicš, żejeli oryginalne żšdanie było żšdaniem POST, to nowy dokument (którego adreszostał podany w nagłówku odpowiedzi Location) powinien zostać pobrany przyużyciu żšdania GET.Ten kod statusu został wprowadzony w protokole HTTP 1.1.304 (Not Modified niezmieniony)Gdy program przechowuje dokument w pamięci podręcznej, może przeprowadzićwarunkowe żšdanie posługujšc się nagłówkiem If-Modified-Since, oznaczajšcym, żedokument ma być zwrócony wyłšcznie wtedy, gdy został zmieniony po okrelonejdacie.Kod statusu 304 (SC_NOT_MODIFIED) oznacza, że wersja dokumentuprzechowywana w pamięci podręcznej jest aktualna i to jej należy użyć.Jelidokument przechowywany w pamięci podręcznej nie będzie aktualny, serwerpowinien zwrócić jego aktualnš wersję wraz z kodem statusu 200.Zazwyczajserwlety nie powinne stosować tego kodu bezporednio.Zamiast tego należyzaimplementować w serwlecie metodę getLastModified i pozwolić, aby domylnametoda service obsługiwała żšdania warunkowe na podstawie daty modyfikacji.Przykład zastosowania tej metody został przedstawiony w podrozdziale 2.8, pt.:Przykład wykorzystania inicjalizacji serwletu i daty modyfikacji strony.305 (Use Proxy użyj serwera poredniczšcego)Kod statusu 305 (SC_USE_PROXY) informuje, że żšdany dokument powinien byćpobrany przy wykorzystaniu serwera poredniczšcego, którego adres został podanyw nagłówku odpowiedzi Location.Kod ten został wprowadzony w protokole HTTP1.1.307 (Temporary Redirect chwilowo przekieruj)Zasady obsługi kodu 307 przez przeglšdarki niczym się nie różniš od metodobsługi kodu 302.Kod ten został dodany do protokołu HTTP 1.1, gdyż wieleprzeglšdarek po otrzymaniu odpowiedzi z kodem statusu 302 błędnie wykonywałoprzekierowanie nawet jeli poczštkowe żšdanie było żšdanie POST.Po przesłaniutakiego żšdania przeglšdarki majš wykonywać przekierowanie wyłšcznie jelizwrócony kod statusu będzie miał wartoć 303.Ten nowy kod statusu ma wyjanićwszelkie niejednoznacznoci po otrzymaniu kodu 303 należy wykonaćprzekierowanie niezależnie od tego czy poczštkowe żšdanie było żšdaniem GET czyPOST; jeli jednak został zwrócony kod statusu 307 to przekierowanie należywykonać wyłšcznie jeli poczštkowe żšdanie było żšdaniem GET.Notatka: Zniewiadomych powodów w interfejsie HttpServletResponse nie została zdefiniowanażadna stała odpowiadajšca kodowi statusu 307.Ten kod statusu zostałwprowadzony w protokole HTTP 1.1.NotatkaW interfejsie HttpServletResponse nie została zdefiniowana stałaSC_TEMPORARY_REDIRECT, a zatem kod statusu 307 trzeba podawać jawnie.400 (Bad Request błędne żšdanie)Kod statusu 400 (SC_BAD_REQUEST) oznacza, że w żšdaniu nadesłanym przez klientawystšpił błšd składni.401 (Unauthorized nieupoważniony)Kod statusu 401 (SC_UNAUTHORIZED) oznacza, że klient próbował pobrać stronęchronionš hasłem, bez poprawnego podania wymaganych informacji w nagłówkuAuthorization.Ta odpowied musi zawierać nagłówek WWW-Authenticate.Przykładzastosowania tego kodu statusu znajdziesz w podrozdziale 4.5, pt.:Ograniczanie dostępu do stron WWW.403 (Forbidden zabroniony)Kod statusu 403 (SC_FORBIDDEN) oznacza, że serwer odmawia przesłania żšdanegozasobu, bez względu na informacje zwišzane z autoryzacjš użytkownika.Częstosię zdarza, że ten kod statusu jest zwracany gdy na serwerze zostanš błędnieokrelone prawa dostępu do plików i katalogów.404 (Not Found nie odnaleziono)Niesławny kod statusu 404 (SC_NOT_FOUND) informuje, że nie został odnalezionyzasób o podanym adresie.Wartoć ta jest standardowš odpowiedziš oznaczajšcšnie ma takiej strony.Kod 404 jest tak przydatny i często stosowany, iż winterfejsie HttpServletResponse została zdefiniowana specjalna metodaupraszczajšca jego generację sendError(komunikat).Przewaga metody sendErrornad setStatus polega na tym, iż metoda sendError automatycznie generuje stronęzawierajšcš komunikat o błędzie.Niestety Internet Explorer 5 domylnieignoruje strony z komunikatami o błędach przesyłane z serwera i wywietlawłasne odpowiedniki tych stron (nawet pomimo faktu, iż działanie takie jestsprzeczne ze specyfikacjš protokołu HTTP).Aby wyłšczyć ten domylny sposóbdziałania, należy wybrać z menu głównego Internet Explorera opcjeNarzędziađOpcje internetowe, przejć na zakładkę Zaawansowane i upewnić się, żepole wyboru Pokaż przyjazne komunikaty o błędach HTTP nie jest zaznaczone
[ Pobierz całość w formacie PDF ]