Er zijn meerdere schermen en servlets die samen een op Java gebaseerde webapplicatie vormen. Een JSP geeft de controle door van één servlet naar een andere servlet of JSP met behulp van twee methoden: doorsturen en doorverwijzen. De forward-methode stuurt een verzoek van de ene servlet naar een andere resource in een webtoepassing en deze resource kan een andere servlet, JSP-pagina of HTML-bestand zijn.
De Redirect-methode daarentegen leidt de aanvraag om naar een andere applicatie. Je kunt dit niet doen met een forward-methode. Als een omleiding in dezelfde toepassing een andere bron treft, gebruikt deze een andere URL dan de oorspronkelijke aanvraag-URL. Als u niet op een verzoek wilt reageren, kunt u het verzoek omleiden naar een andere URL en verzendt de browser vervolgens het nieuwe verzoek naar de door u opgegeven URL. Dit bericht belicht een aantal verschillen die de twee methoden in detail uitleggen.
In webgebaseerde systemen of applicaties is er vaak een behoefte om controle over te dragen tussen verschillende bronnen of JSP's. Als u bijvoorbeeld een bestelling van een e-commercesite wilt plaatsen, moet u zich eerst registreren voordat u doorgaat. Als u nog niet bent geregistreerd bij hun systeem, moet het winkelwagentje mogelijk de controle overdragen naar het JSP-formulier dat verantwoordelijk is voor het registratieproces. De voorwaartse actie wordt specifiek voor dit doel gebruikt. Het wordt gebruikt om het verzoek van de ene JSP naar een andere of een andere bron binnen dezelfde context door te sturen.
Deze methode wordt ook gebruikt om HTTP-aanvragen door te sturen, maar in tegenstelling tot een forward is het een proces in twee stappen waarbij de omleiding helemaal aan de clientzijde van een andere toepassing plaatsvindt. De omleidingsmethode leidt de gebruiker om naar een nieuwe URL. De browser van de client maakt automatisch de nieuwe aanvraag op de URL die is opgegeven in de omleidingskop die van de server komt. Het vereist een round-trip communicatie met de klant, dus het is relatief langzamer dan een forward.
De methode forward () wordt gebruikt om de aanvraag door te sturen van de ene JSP naar de andere of van één JSP naar een servlet, of van één JSP naar een andere resource in een webtoepassing. Het besturingselement wordt intern door de container doorgegeven en de browser / client is niet betrokken bij het proces. De forward-methode wordt gedeclareerd in de RequestDispatcher. De methode SendRedirect () wordt gedeclareerd in HttPServletResponse en wordt gebruikt om de clientaanvraag om te leiden naar een andere URL die beschikbaar is op een andere server of context. Met een omleiding kunt u de browser helemaal omleiden naar een andere applicatie.
Een van de belangrijkste verschillen tussen de twee methoden is dat webcontainer intern alle processen verwerkt in het geval van forward () en dat de URL niet verandert in de browser van de client, dus de client / browser is niet betrokken, waardoor ze er volledig niet van op de hoogte zijn dat de actie heeft al plaatsgevonden. In het geval van SendRedirect () stelt de methode de juiste headers en body-inhoud in om de aanvraag om te leiden naar een andere URL en zorgt de browser ervoor dat de nieuwe aanvraag wordt verzonden naar de URL die zichtbaar is voor de client terwijl de URL in de browser verandert.
Wanneer de methode forward () op verzoektijd wordt uitgevoerd, wordt het huidige verzoek doorgestuurd naar een andere JSP-pagina en wordt de verwerking van de huidige JSP beëindigd. Het verzoek kan worden doorgestuurd naar een servlet geschreven in de Java-programmeertaal, of naar een statische HTML-pagina. Een SendRedirect () -verzoek vertelt de browser eenvoudigweg om naar een andere URL te gaan, waarbij het uitvoeringsbeheer buiten de webtoepassing wordt verzonden. Het maakt gebruik van een proces in twee stappen om de URL van de browser op te dragen om een ander verzoek te doen waardoor het besturingselement wordt overgedragen naar de client.
Een forward () werkt binnen de server en voert sneller uit dan een SendRedirect (). Een omleiding moet door de browser gaan en vervolgens wachten tot de browser een nieuw HTTP-verzoek doet. Een omleiding zorgt ervoor dat de server de HTTP-antwoordstatuscode 302 verzendt met een locatieheader die een nieuwe URL naar de browser bevat en nadat de browser de statuscode 302 heeft ontvangen, maakt deze een nieuw verzoek naar de URL die is gevonden in de locatiekop. Dit vereist een round-trip communicatie met de client, waardoor deze relatief trager is dan een forward ().
Het leren van het verschil tussen de forward- en redirect-methoden is een van de belangrijkste onderdelen voor Java-ontwikkelaars. Hoewel een controller aan het einde van de verwerking van een aanvraag ofwel een forward- of redirect-methode kan uitvoeren, hebben ze hun eigen set van toepassingen. Meestal zou u een forward () -methode gebruiken omdat deze iets sneller is dan een SendRedirect (), waarvoor in feite een round-tripcommunicatie nodig is waarbij de client deze langzamer uitvoert dan een forward. Welnu, met een omleiding kunt u de browser naar een andere applicatie verwijzen. Dit kan niet met een voorwaartse beweging worden gedaan. Kort gezegd werkt een forward het beste wanneer een component bedrijfslogica moet uitvoeren en resultaten met een ander component moet delen, terwijl een redirect het beste werkt wanneer de client van de ene pagina naar de andere moet worden geleid.