Wat is het verschil tussen response.sendredirect () en aanvraag .GetRequestDispatcher (). Forward (aanvraag, reactie) [DUPLICEER]

Ik heb een probleem met mijn pagina springen wanneer ik Java gebruik,
Als ik gebruik:

response.sendRedirect("login.jsp")

Dan krijg ik deze URL: http://localhost:8080/login.jsp

maar als ik

gebruik

request.getRequestDispathcer("login.jsp").forward(request, response)

Dan krijg ik deze URL: http://localhost:8080/Shopping/login.jsp(het “boodschappen” is de naam van mijn module).

Wat is het verschil?


Antwoord 1, Autoriteit 100%

Om eenvoudig het verschil uit te leggen,

 response.sendRedirect("login.jsp");

Prepeert niet de contextpad (verwijst naar de toepassing / module waarin de servlet is gebundeld)

Maar, terwijl

request.getRequestDispathcer("login.jsp").forward(request, response);

zal het contextpad van de respectieve aanvraag

uitvoeren

Bovendien wordt RECEIRECT-aanvraag gebruikt om door te leiden naar middelen naar verschillende servers of domeinen. Deze overdracht van controletaak wordt door de container naar de browser gedelegeerd. Dat wil zeggen, de omleiding verzendt een koptekst naar de browser / client. Deze koptekst bevat de resource-URL die door de browser wordt omgeleid. Vervolgens initieert de browser een nieuw verzoek naar de gegeven URL.

Doorstuurverzoekwordt gebruikt om door te sturen naar bronnen die beschikbaar zijn op de server van waaruit de oproep wordt gedaan. Deze overdracht van controle wordt intern door de container gedaan en browser / client is niet betrokken.


Antwoord 2, autoriteit 20%

vooruit

Besturing kan worden doorgestuurd naar bronnen die beschikbaar zijn binnen de server van waaruit de oproep wordt gedaan. Deze overdracht van controle wordt intern door de container gedaan en browser/client is hier niet bij betrokken. Dit is het grote verschil tussen forward en sendRedirect. Wanneer het doorsturen is voltooid, worden de oorspronkelijke verzoek- en antwoordobjecten overgedragen samen met aanvullende parameters indien nodig.

omleiding

Besturing kan worden omgeleid naar bronnen naar verschillende servers of domeinen. Deze overdracht van controletaak wordt door de container aan de browser gedelegeerd. Dat wil zeggen, de omleiding stuurt een header terug naar de browser/client. Deze header bevat de bron-URL die door de browser moet worden omgeleid. Vervolgens start de browser een nieuw verzoek naar de opgegeven url. Omdat het een nieuw verzoek is, gaat het oude verzoek en het antwoordobject verloren.

SendRedirect kan bijvoorbeeld het beheer overdragen van http://google.comnaar http://anydomain.commaar forward kan dit niet.

‘sessie’ gaat niet verloren in zowel doorsturen als omleiden.

Om het verschil tussen forward en sendRedirect visueel te voelen, zie de adresbalk van uw browser,
in forward, ziet u het doorgestuurde adres niet (omdat de browser er niet bij betrokken is)
in omleiding kunt u het omgeleide adres zien.


Antwoord 3, autoriteit 19%

Gewoon het verschil tussen Forward(ServletRequest-verzoek, ServletResponse-antwoord) en sendRedirect(String-url) is

forward():

  1. De methode forward()wordt uitgevoerd aan de serverzijde.
  2. Het verzoek wordt overgedragen naar een andere bron binnen dezelfde server.
  3. Het is niet afhankelijk van het verzoekprotocol van de klant, aangezien de methode forward ()wordt geleverd door de servlet-container.
  4. Het verzoek wordt gedeeld door de doelbron.
  5. Er wordt slechts één oproep gebruikt bij deze methode.
  6. Het kan binnen de server worden gebruikt.
  7. We kunnen het doorgestuurde bericht niet zien, het is transparant.
  8. De methode forward() is sneller dan de methode sendRedirect().
  9. Het wordt gedeclareerd in de interface RequestDispatcher.

sendRedirect():

  1. De methode sendRedirect()wordt uitgevoerd aan de clientzijde.
  2. Het verzoek wordt overgebracht naar een andere bron naar een andere server.
  3. De methode sendRedirect()wordt geleverd onder HTTPen kan dus alleen worden gebruikt met HTTP-clients.
  4. Nieuw verzoek is gemaakt voor de bestemmingsbron.
  5. Er worden twee verzoek- en antwoordoproepen gebruikt.
  6. Het kan binnen en buiten de server worden gebruikt.
  7. We kunnen het omgeleide adres zien, het is niet transparant.
  8. De methode sendRedirect()is langzamer omdat wanneer een nieuw verzoek wordt gemaakt, het oude verzoekobject verloren gaat.
  9. Het wordt gedeclareerd in HttpServletResponse.

Antwoord 4, autoriteit 8%

1.redirect stuurt het verzoek terug naar de browser vanaf de server en verzendt het verzoek vervolgens opnieuw naar de server vanuit de browser.

2.forward stuur het verzoek naar een andere servlet (servlet naar servlet).


Antwoord 5, autoriteit 2%

Redirect en Request dispatcher zijn twee verschillende methoden om van de ene pagina naar de andere te gaan.
Als we een nieuw verzoek omleiding naar een nieuwe pagina gebruiken, gebeurt er een nieuw verzoek van de clientzijde zelf naar de nieuwe pagina.
Dus we kunnen de verandering in de URL zien.
Omdat omleiding een nieuw verzoek is, zijn de oude aanvraagwaarden hier niet beschikbaar.

Other episodes