är programmeringsspråket Java används ofta för programmering på skrivbordet , mobila och servermiljöer . När en användare skickar data från ett formulär eller klickar på länken till en webbadress , kan Java programmerare använda Servlet klassen för att avgöra hur den server - side ansökan svarar på denna förfrågan . En Servlet kan ge svar genom att styra och vidarebefordran . Det är viktigt för Java programmerare att förstå likheten och skillnaderna mellan de två metoderna , och att veta vilken som skall användas beroende på deras behov . Likhet
Både vidarebefordran och omdirigera ett sätt som gör att en Java Servlet att överföra behandlingen av användarens data till en annan kontrollenhet i en webbapplikation . I Model - View - Controller mönster som ofta används för webbapplikationer i Java , kan en regulator interagera med andra styrenheter och hanterar samspelet mellan vyerna och modellerna . Vanligtvis en controller är en annan Java Servlet , men det kan också vara en JSP-sida .
Skillnader
vidarebefordran åtgärd utförs på serversidan och är transparent för webbläsaren på klientsidan . Detta innebär att adressen i adressfältet i webbläsaren inte kommer att förändras när vidarebefordran inträffar . Däremot är omdirigera åtgärd görs på klientsidan . Omdirigeringen sker i två steg , eftersom servern måste instruera webbläsaren på klientsidan för att hämta en annan adress som man omdirigera till . Som ett resultat , kommer URL i adressfältet ändras efter omdirigering . Dessutom kan vidarebefordran inte göras till en annan webbadress utanför webbprogrammet samtidigt omdirigera kan göras för att alla platser var som helst .
Användningsområden
Forwarding använder RequestDispatcher klass som erhålls från " getServletContext ( ) "-metoden för Servlet . Att framåt , metoden " framåt ( ) " från " RequestDispatcher klassen heter Till exempel kommer följande kod vidarebefordra svaret till en annan sida som heter result.jsp : .
String destination = " /WEB - INF /pages /result.jsp " ,
RequestDispatcher rd = getServletContext ( ) getRequestDispatcher ( destination ) ,.
rd.forward ( begäran , svar);
Omdirigerar använder " sendRedirect ( ) " metoden för svaret objektet , som erhålls från den aktuella Servlet klassen till exempel kommer följande kod omdirigera svaret till en annan sida som heter destination.jsp : .
String destination = " /jsp /destination.jsp ";
response.sendRedirect ( response.encodeRedirectURL ( destination ) ) ;
Överväganden
omdirigera verksamheten är något långsammare än vidarebefordran eftersom webbläsaren behöver utföra två operationer för att hämta adressen före och efter måste styras . Dessutom några objekt sänds i den ursprungliga förfrågan omfattning är fortfarande tillgängliga under vidarebefordran , men försvinner under omdirigera . som sådan bör omdirigera endast användas när webbläsaren är tillåtet att ladda den resulterande adress efter omdirigering . i andra fall bör vidarebefordran användas .