Der er flere skærme og servlets, der tilsammen danner en Java-baseret webapplikation. En JSP overfører kontrollen fra en servlet til en anden servlet eller JSP ved hjælp af to metoder - Videresend og omdirigering. Fremad-metoden videresender en anmodning fra en servlet til en anden ressource i en webapplikation, og denne ressource kan være en anden servlet, JSP-side eller HTML-fil.
Omdirigeringsmetoden omdirigerer på den anden side anmodningen til en anden applikation. Du kan ikke gøre dette med en fremadgående metode. Hvis en omdirigering rammer en anden ressource i den samme applikation, bruger den en anden URL end den oprindelige anmodnings-URL. Hvis du ikke vil svare på en anmodning, kan du omdirigere anmodningen til en anden URL, og browseren sender derefter den nye anmodning til den URL, du har leveret. Dette indlæg fremhæver et par forskelle, der forklarer de to metoder detaljeret.
I webbaserede systemer eller applikationer er der ofte et behov for at overføre kontrol mellem forskellige ressourcer eller JSP'er. Hvis du f.eks. Ønsker at afgive en ordre fra et e-handelswebsted, skal du først registrere dig, inden du fortsætter. Hvis du endnu ikke er registreret med deres system, kan indkøbskurven muligvis overføre kontrol til JSP-formularen, der er ansvarlig for registreringsprocessen. Fremadrettet handling bruges specifikt til dette formål. Det bruges til at videresende anmodningen fra en JSP til en anden eller en anden ressource inden for samme kontekst.
Denne metode bruges også til at videresende HTTP-anmodninger, men i modsætning til en videresendelse er det en totrinsproces, hvor omdirigering sker på klientsiden til en anden applikation helt. Omdirigeringsmetoden omdirigerer brugeren til en ny URL. Klientens browser fremsætter automatisk den nye anmodning på den URL, der er angivet i omdirigeringshovedet, der kommer fra serveren. Det kræver en rundtur-kommunikation med klienten, og det er derfor relativt langsommere end en fremadrettet.
Fremad () -metoden bruges til at videresende anmodningen fra en JSP til en anden eller fra en JSP til en servlet eller fra en JSP til en anden ressource i en webapplikation. Kontrollen overføres internt af containeren, og browseren / klienten er ikke involveret i processen. Fremgangsmåden er deklareret i RequestDispatcher. SendRedirect () -metoden er deklareret i HttPServletResponse og bruges til at omdirigere klientanmodningen til en anden URL, der er tilgængelig på en anden server eller kontekst. Med en omdirigering kan du omdirigere browseren til et andet program helt.
En af de vigtigste forskelle mellem de to metoder er, at webcontainer håndterer alle processer internt i tilfælde af videresendelse () og webadressen ændres ikke i klientens browser, så klienten / browseren er ikke involveret, så de ikke er helt uvidende om, at handling har allerede fundet sted. I tilfælde af SendRedirect () indstiller metoden de passende overskrifter og kropsindhold til at omdirigere anmodningen til en anden URL, og browseren tager sig af at sende den nye anmodning til den URL, der er synlig for klienten, da URL ændres i browseren.
Når fremad-metoden udføres på anmodningstidspunktet, videresendes den aktuelle anmodning til en anden JSP-side, og behandlingen af den aktuelle JSP afsluttes. Anmodningen kan videresendes til en servlet skrevet på Java-programmeringssprog eller til en statisk HTML-side. En SendRedirect () -anmodning fortæller simpelthen browseren at gå til en anden URL og sende udførelseskontrollen uden for webapplikationen. Den bruger en totrinsproces til at instruere browserens URL til at fremsætte en anden anmodning, der overfører kontrollen til klienten.
En videresendelse () fungerer på serveren og udføres hurtigere end en SendRedirect (). En omdirigering skal gå gennem browseren og derefter vente på, at browseren fremsætter en ny HTTP-anmodning. En omdirigering får serveren til at sende HTTP-responsstatuskoden 302 med et placeringshoved, der indeholder en ny URL til browseren, og efter at browseren har modtaget statuskoden 302, fremsætter den en ny anmodning til URL'en, der findes i placeringshovedet. Dette kræver en rundtur-kommunikation med klienten, hvilket gør den relativt langsommere end en fremad ().
At lære forskellen mellem frem- og omdirigeringsmetoder er en af de vigtigste dele for Java-udviklere. Mens en controller kan udføre enten en videresend eller en omdirigeringsmetode ved afslutningen af behandlingen af en anmodning, har de deres eget sæt af anvendelser. Det meste af tiden vil du bruge en forward () -metode, da den er marginalt hurtigere end en SendRedirect (), som faktisk kræver en rundtur-kommunikation med klienten, hvilket gør den langsommere end en forward. Nå, med en omdirigering, kan du dirigere browseren til et andet program. Dette kan ikke gøres med en forward. Kort sagt fungerer en speditør bedst, når en komponent skal udføre forretningslogik og dele resultater med en anden komponent, mens en omdirigering fungerer bedst, når klienten skal omdirigeres fra en side til en anden.