webForumDet fria alternativet

RequestDispatcher eller sendRedirect

1 svar · 467 visningar · startad av Viktor

ViktorMedlem sedan aug. 20021 752 inlägg
#1

En fråga till J2EE eliten i Sverige, är det någon som kan tala om vilka regler som gäller, när ska man använda RequestDispatcher.forward och när ska man använda sendRedirect? Jag har försökt läsa mig fram till det men har aldrig riktigt fått en klar bild av när man ska använda vilken.

/Viktor

sgtpepperMedlem sedan apr. 20007 588 inlägg
#2

när ska man använda RequestDispatcher.forward och när ska man använda sendRedirect?

RequestDispatcher.forward är effektivast och bör användas när så går.

Saken är den att ett sendRedirect-anrop kommer att skicka ett HTTP-svar till klienten och beordra den att göra ett nytt anrop till URL xyz. Det blir alltså lite "overhead". RequestDispatchern däremot överför bara hanteringen av requestet till en ny resurs internt i webcontainern och kräver alltså inte lika många "hopp".

RequestDispatchern fungerar dock inte för att skyffla iväg klienten till en resurs utanför webcontainern, dvs, du kan inte köra en forward från server xyz.com till en servlet på servern abc.com, i så fall måste du använda sendRedirect.

En bra grej med RequestDispatchern är ju också att den just "dispatchar requestet" som man skulle kunna säga på svengelska :). Den nya resursen som du gjort omdirigeringen till anropas med orginal-requestet och kan fortsätta att pilla och dona med det för att sedan spotta ur sig en respons, kör du en sendRedirect så anropas resursen med ett nytt request.

Så, för att summera den virriga svengelskan ovan till en kort regel: Använd RequestDispatcher om det är till en resurs på samma server, annars sendRedirect.

Men, du kan ju använda sendRedirect även på samma server eftersom det är kodningsmässigt lite snabbare och enklare om du inte behöver bry dig jättemycket om prestanda, det brukar jag göra när jag tänker efter :).

125 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)