sendRedirect()
methode leitet die Antwort auf eine andere Ressource. Diese Methode macht tatsächlich den Client(Browser) eine neue Anforderung zu erstellen, um die Ressource zu erhalten. Der Client kann die neue URL im Browser sehen.
sendRedirect() akzeptiert relative URLs, sodass Ressourcen innerhalb oder außerhalb des Servers abgerufen werden können.
Servlet: sendRedirect() und Request Dispatcher
Der Hauptunterschied zwischen einer Umleitung und einer Anforderungsverteilung besteht darin, dass der Client (Browser) durch die Umleitung eine neue Anforderung erstellt, um zur Ressource zu gelangen.
Ein weiterer sehr wichtiger Unterschied besteht darin, dass sendRedirect() für das Antwortobjekt funktioniert, während der Anforderungsversand für das Anforderungsobjekt funktioniert.
Beispiel für die Verwendung von sendRedirect()
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { response.sendRedirect("https://www.studytonight.com"); } finally { out.close(); } }}
Unterschied zwischen forward() und sendRedirect()
weiterleiten() | sendRedirect() |
---|---|
Es funktioniert auf der Serverseite. | Es funktioniert auf der Clientseite. |
Es sendet immer dasselbe Anforderungs- und Antwortobjekt. | Es wird immer eine neue Anforderung für das Objekt gesendet. |
Es funktioniert nur innerhalb des Servers. | Es funktioniert sowohl innerhalb als auch außerhalb des Servers. |
Bei dieser Methode wird die gesamte Verarbeitung intern vom Webcontainer abgewickelt. | Bei dieser Methode wird die gesamte Verarbeitung von einem anderen Servlet übernommen. |
Es ist schneller. | Es ist langsamer. |
Mit forward () -Methode Adresse kann in der Adressleiste zu sehen. | Mit der forward () -Methode kann die Adresse nicht in der Adressleiste angezeigt werden. |
Die RequestDispatcher-Schnittstelle wird für die Deklaration verwendet. | HttpServletResponse wird für die Deklaration verwendet. |
Es ist sehr nützlich im MVC-Entwurfsmuster, den direkten Zugriff auszublenden. | Im MVC-Entwurfsmuster ist es nicht sinnvoll, den direkten Zugriff auszublenden. |
Es verwendet das Objekt erneut. | Das Objekt wird nicht wiederverwendet. |
Beispiel: Anfrage.getRequestDispacher(„servlet_1“).forward(request response); | Beispiel: Antwort.sendRedirect(„Servlet_1“); |