Weiterleitung und Umleitung von Webseiten

jacklove
Freigeben: 2023-03-31 17:02:01
Original
2296 Leute haben es durchsucht

In der Webentwicklung gibt es einen großen Unterschied zwischen Weiterleitung und Umleitung.

Intuitiv ändert die Weiterleitung die URL-Adresse nicht, aber die Umleitung ändert die URL.

Dies ist nur ein Schein. Das Anforderungsobjekt und das Antwortobjekt in HttpServlet werden vom Server gekapselt und basierend auf den Parametern generiert, die vom Browser übergeben werden, wenn der Benutzer eine Webseite anfordert. Sobald die Anfrage vom Browser gestellt wird und der Server antwortet, haben die Anfrage und die Antwort das Ende ihrer Lebensdauer erreicht .

Bei Verwendung der Weiterleitung fordert der Browser nur einmal an, beim Server kann es jedoch zu mehreren Sprüngen kommen. Wenn die Weiterleitung während der serverseitigen Ausführung erfolgt, stoppt der Server die Ausführung der Aufgabe und gibt an, dass die Aufgabe die angegebene Adresse weiterleiten soll.

Wenn die Umleitung verwendet wird, stellt der Browser mehrere Anfragen an den Server. Wenn der Code auf der Serverseite ausgeführt wird und eine Umleitung erfolgt, wird der Browser benachrichtigt, auf eine andere URL zuzugreifen. Der Browser fordert die Ressource über die gesendete URL an.

Sehen Sie sich ein Stück Code an:

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>login</title></head><body>
    <form action="myServlet" method="post">
        name :<input type="text" name="username"/><br/>
        <input type="submit"  value="submit"/>
    </form></body></html>
Nach dem Login kopieren

Dies ist ein Stück JSP-Code. Wenn Sie auf „Senden“ klicken, wird das Formular an myServlet gesendet.

Die Schnittstelle sieht so aus:

Weiterleitung und Umleitung von Webseiten

public class MyServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = (String)request.getParameter("username");
        request.setAttribute("welcome", "welcome!!!");
        RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
        rd.forward(request,response);
    }
}
Nach dem Login kopieren

Das ist MySerlet. Wenn der Benutzer auf das Formular klickt, ruft der Server doPost auf In dieser Methode erfolgt die Seitenweiterleitung.

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>welcome</title></head><body>
    <%=request.getParameter("username")%>
    <br/>
    <%=request.getAttribute("welcome") %></body></html>
Nach dem Login kopieren

Dies ist der Code für Welcome.jsp.

Das Einreichungsergebnis ist:
Weiterleitung und Umleitung von Webseiten
Nachdem wir auf die Schaltfläche „Senden“ geklickt haben, können wir uns den Netzwerkanfrageprozess ansehen.
Weiterleitung und Umleitung von Webseiten

Es kann festgestellt werden, dass der Browser nur eine Anfrage an den Server gesendet hat.

Als nächstes schauen wir uns Weiterleitungen an.

Wenn Sie den Code von MyServlet ändern.

public class MyServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = (String)request.getParameter("username");
        request.setAttribute("welcome", "welcome!!!");//      RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");//      rd.forward(request,response);
        response.sendRedirect("welcome.jsp");
    }
}
Nach dem Login kopieren

Sie können sehen, dass das Ergebnis ist:
Weiterleitung und Umleitung von Webseiten

Und der Browser-Item-Server hat zwei Anfragen gesendet:
Weiterleitung und Umleitung von Webseiten

von oben Das Ergebnis ist, dass nach der Umleitung alle Inhalte der Willkommensseite null sind, da eine weitere Anfrage initiiert wird. Da es sich bei der Weiterleitung um dasselbe Anforderungsobjekt und Antwortobjekt handelt, können nicht nur die vom Browser angeforderten Parameter, sondern auch die in die Anforderung eingegebenen Attributwerte abgerufen werden.

Tatsächlich ist aus dem Code ersichtlich, dass die sendRedirect()-Methode die Antwortmethode des HttpServletResponse-Objekts ist. Da die Methode des Antwortobjekts aufgerufen wird, zeigt dies an, dass die gesamte Anforderung beendet ist. und der serverseitige Elementclient gibt das Ausführungsergebnis zurück. Die getRequestDispatcher-Methode ist eine Methode des Anforderungsobjekts, die angibt, dass die Anforderung noch gestellt wird, sodass das Ergebnis nicht sofort an den Browser zurückgegeben wird, sondern weiterhin seine Weiterleitungsaufgaben ausführt.

Eines muss erklärt werden Ob es sich um die in der Weiterleitungsmethode oder der sendRedirect-Methode übergebene URL handelt, müssen Sie darauf achten bedeutet, dass diese URL eine Anfrage für das Stammverzeichnis des Servlet-Containers ist, also localhost:8080. Wenn sie nicht mit „“ beginnt, bedeutet dies, dass die Anfrageadresse relativ zur aktuellen Anfrage-URL adressiert ist.

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>login</title></head><body>
    <!--这里改成了绝对地址  -->
    <form action="/myServlet" method="post">
        name :<input type="text" name="username"/><br/>
        <input type="submit"  value="submit"/>
    </form></body></html>
Nach dem Login kopieren

Wenn ich erneut auf „Senden“ klicke:
Weiterleitung und Umleitung von Webseiten

Die Anfrageadresse, die nicht mit „“ beginnt, lautet:
Weiterleitung und Umleitung von Webseiten

Weiterleiten Das Modell ist:
Weiterleitung und Umleitung von Webseiten

Das Umleitungsmodell ist:

Weiterleitung und Umleitung von Webseiten

In diesem Artikel wird die Weiterleitung und Umleitung von Webseiten erläutert Für den Inhalt besuchen Sie bitte die chinesische Website „Follow php“.

Verwandte Empfehlungen:

Einfache PHP+MySQL-Paging-Klasse

Zwei Baumarray-Konstruktoren ohne Rekursion

HTML in Excel konvertieren und Druck- und Downloadfunktionen realisieren

Das obige ist der detaillierte Inhalt vonWeiterleitung und Umleitung von Webseiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!