Existuje několik obrazovek a servletů, které společně tvoří webovou aplikaci založenou na Java. JSP předává řízení z jednoho servletu na jiný servlet nebo JSP dvěma způsoby - vpřed a přesměrování. Metoda Forward přeposílá požadavek z jednoho servletu na jiný zdroj ve webové aplikaci a tímto prostředkem může být jiný servlet, stránka JSP nebo soubor HTML.
Metoda přesměrování naproti tomu přesměruje požadavek na jinou aplikaci. To nemůžete udělat pomocí metody vpřed. Pokud přesměrování zasáhne jiný zdroj ve stejné aplikaci, pak použije jinou adresu URL, než je původní adresa URL požadavku. Pokud na žádost nechcete odpovědět, můžete ji přesměrovat na jinou adresu URL a prohlížeč poté odešle nový požadavek na vámi uvedenou adresu URL. Tento příspěvek zdůrazňuje několik rozdílů, které podrobně vysvětlují tyto dvě metody.
Ve webových systémech nebo aplikacích často existuje potřeba převést kontrolu mezi různými prostředky nebo JSP. Například, pokud si přejete zadat objednávku z webu elektronického obchodu, musíte se před pokračováním nejprve zaregistrovat. Pokud ještě nejste zaregistrováni v jejich systému, může nákupní košík potřebovat převést kontrolu do formuláře JSP, který je zodpovědný za registrační proces. Forwardová akce se používá speciálně pro tento účel. Používá se k předávání žádosti z jednoho JSP na jiný nebo jiný zdroj ve stejném kontextu.
Tato metoda se také používá k předávání požadavků HTTP, ale na rozdíl od předávání je to dvoustupňový proces, kdy přesměrování probíhá na straně klienta do jiné aplikace. Metoda přesměrování přesměruje uživatele na novou adresu URL. Prohlížeč klienta automaticky provede nový požadavek na adresu URL uvedenou v hlavičce přesměrování, která pochází ze serveru. Vyžaduje okružní komunikaci s klientem, takže je relativně pomalejší než vpřed.
Metoda forward () se používá k předávání požadavku z jednoho JSP do jiného nebo z jednoho JSP na servlet nebo z jednoho JSP do jiného zdroje ve webové aplikaci. Ovládací prvek je interně předán kontejnerem a prohlížeč / klient není zapojen do procesu. Metoda forward je deklarována v RequestDispatcher. Metoda SendRedirect () je deklarována v HttPServletResponse a používá se k přesměrování požadavku klienta na jinou adresu URL, která je k dispozici na jiném serveru nebo kontextu. Pomocí přesměrování můžete prohlížeč přesměrovat úplně na jinou aplikaci.
Jedním z klíčových rozdílů mezi těmito dvěma metodami je to, že webový kontejner zpracovává všechny procesy interně v případě forward () a URL se v klientském prohlížeči nezmění, takže se klient / prohlížeč nezúčastní a zcela si neuvědomí, že akce již proběhla. V případě SendRedirect () nastaví metoda příslušné záhlaví a obsah těla, aby přesměroval požadavek na jinou adresu URL, a prohlížeč se postará o odeslání nového požadavku na adresu URL, která je pro klienta viditelná při změně adresy URL v prohlížeči.
Když je metoda forward () spuštěna v době požadavku, aktuální požadavek bude přeposlán na jinou stránku JSP a zpracování aktuální JSP je ukončeno. Žádost může být předána na servlet napsaný v programovacím jazyce Java nebo na statickou stránku HTML. Požadavek SendRedirect () jednoduše řekne prohlížeči, aby přešel na jinou adresu URL a odeslal ovládací prvek provádění mimo webovou aplikaci. Používá dvoustupňový proces k pokynu adresy URL prohlížeče k provedení dalšího požadavku, který převede ovládací prvek na klienta.
Funkce forward () pracuje v rámci serveru a provádí se rychleji než SendRedirect (). Přesměrování musí projít prohlížečem a poté počkat, až si prohlížeč vytvoří nový požadavek HTTP. Přesměrování způsobí, že server odešle stavový kód 302 odpovědi HTTP s hlavičkou umístění obsahující novou adresu URL do prohlížeče a poté, co prohlížeč přijme stavový kód 302, provede nový požadavek na adresu URL nalezenou v hlavičce umístění. To vyžaduje komunikaci s klientem, která je relativně pomalejší než vpřed ().
Učení rozdílu mezi metodami vpřed a přesměrování je jednou z nejdůležitějších částí pro vývojáře Java. Zatímco řadič může na konci zpracování požadavku provést metodu vpřed nebo přesměrování, má svou vlastní sadu použití. Většinou byste použili metodu forward (), protože je o něco rychlejší než SendRedirect (), což ve skutečnosti vyžaduje komunikaci s klientem zpáteční cestu, která ji zpomaluje než forward. S přesměrováním můžete prohlížeč přesměrovat na jinou aplikaci. To nelze udělat vpřed. Stručně řečeno, dopředu funguje nejlépe, když jedna komponenta musí provádět obchodní logiku a sdílet výsledky s jinou komponentou, zatímco přesměrování funguje nejlépe, když má být klient přesměrován z jedné stránky na druhou.