Istnieje wiele ekranów i serwletów, które razem tworzą aplikację internetową opartą na Javie. JSP przekazuje kontrolę z jednego serwletu do innego serwletu lub JSP przy użyciu dwóch metod - do przodu i do przekierowania. Metoda Forward przekazuje żądanie z jednego serwletu do innego zasobu w aplikacji internetowej, a tym zasobem może być inny serwlet, strona JSP lub plik HTML.
Natomiast metoda Przekierowanie przekierowuje żądanie do innej aplikacji. Nie możesz tego zrobić za pomocą metody przesyłania dalej. Jeśli przekierowanie trafi na inny zasób w tej samej aplikacji, używa innego adresu URL niż oryginalny adres URL żądania. Jeśli nie chcesz odpowiadać na żądanie, możesz przekierować je na inny adres URL, a przeglądarka wyśle nowe żądanie na podany przez Ciebie adres URL. W tym poście podkreślono kilka różnic wyjaśniających szczegółowo dwie metody.
W systemach lub aplikacjach internetowych często zachodzi potrzeba przeniesienia kontroli między różnymi zasobami lub stronami JSP. Na przykład, jeśli chcesz złożyć zamówienie w witrynie e-commerce, musisz najpierw zarejestrować się przed kontynuowaniem. Jeśli nie jesteś jeszcze zarejestrowany w ich systemie, może być konieczne przekazanie kontroli koszyka do formularza JSP odpowiedzialnego za proces rejestracji. Działanie do przodu jest wykorzystywane specjalnie do tego celu. Służy do przekazywania żądania z jednego pliku JSP do innego lub innego zasobu w tym samym kontekście.
Ta metoda jest również używana do przekazywania żądań HTTP, ale w przeciwieństwie do przekazywania, jest to dwuetapowy proces, w którym przekierowanie następuje po stronie klienta do innej aplikacji. Metoda przekierowania przekierowuje użytkownika do nowego adresu URL. Przeglądarka klienta automatycznie wysyła nowe żądanie na adres URL określony w nagłówku przekierowania pochodzącym z serwera. Wymaga komunikacji w obie strony z klientem, dlatego jest relatywnie wolniejszy niż przesyłanie do przodu.
Metoda forward () jest używana do przekazywania żądania z jednej strony JSP do drugiej lub z jednej strony JSP do serwletu lub z jednej strony JSP do innego zasobu w aplikacji sieci web. Kontrola jest przekazywana wewnętrznie przez kontener, a przeglądarka / klient nie jest zaangażowany w proces. Metoda przekazywania jest zadeklarowana w RequestDispatcher. Metoda SendRedirect () jest zadeklarowana w HttPServletResponse i służy do przekierowania żądania klienta na inny adres URL, który jest dostępny na innym serwerze lub w innym kontekście. Dzięki przekierowaniu możesz całkowicie przekierować przeglądarkę do innej aplikacji.
Jedną z kluczowych różnic między tymi dwiema metodami jest to, że kontener WWW obsługuje wewnętrznie wszystkie procesy w przypadku forward (), a adres URL nie zmienia się w przeglądarce klienta, więc klient / przeglądarka nie jest zaangażowana, pozostawiając ich całkowicie nieświadomymi, że akcja już się odbyła. W przypadku SendRedirect () metoda ustawia odpowiednie nagłówki i treść, aby przekierować żądanie na inny adres URL, a przeglądarka zajmuje się wysyłaniem nowego żądania do adresu URL widocznego dla klienta, gdy adres URL zmienia się w przeglądarce.
Gdy metoda forward () jest wykonywana w czasie żądania, bieżące żądanie jest przekazywane do innej strony JSP, a przetwarzanie bieżącego JSP zostaje zakończone. Żądanie może zostać przesłane do serwletu napisanego w języku programowania Java lub do statycznej strony HTML. Żądanie SendRedirect () po prostu nakazuje przeglądarce przejście do innego adresu URL, wysyłając kontrolę wykonania poza aplikację internetową. Używa dwuetapowego procesu, aby poinstruować adres URL przeglądarki, aby złożył kolejne żądanie, które przekazuje kontrolę do klienta.
Funkcja forward () działa na serwerze i wykonuje się szybciej niż SendRedirect (). Przekierowanie musi przejść przez przeglądarkę, a następnie poczekać, aż przeglądarka prześle nowe żądanie HTTP. Przekierowanie powoduje, że serwer wysyła do przeglądarki kod stanu odpowiedzi HTTP 302 z nagłówkiem lokalizacji zawierającym nowy adres URL, a po odebraniu przez przeglądarkę kodu statusu 302 wysyła nowe żądanie do adresu URL znalezionego w nagłówku lokalizacji. Wymaga to komunikacji w obie strony z klientem, co czyni go relatywnie wolniejszym niż forward ().
Poznanie różnicy między metodami przekazywania i przekierowywania jest jedną z najważniejszych części dla programistów Java. Chociaż kontroler może wykonać metodę przekierowania lub przekierowania po zakończeniu przetwarzania żądania, ma on własny zestaw zastosowań. Przez większość czasu korzystasz z metody forward (), ponieważ jest ona nieznacznie szybsza niż SendRedirect (), co w rzeczywistości wymaga komunikacji w obie strony z klientem, co czyni ją wolniejszą niż do przodu. Dzięki przekierowaniu możesz skierować przeglądarkę do innej aplikacji. Nie można tego zrobić za pomocą przekazania. W skrócie, przekazywanie działa najlepiej, gdy jeden komponent musi wykonywać logikę biznesową i dzielić się wynikami z innym składnikiem, natomiast przekierowanie działa najlepiej, gdy klient powinien być przekierowywany z jednej strony na drugą.