Heim > Java > javaLernprogramm > Hauptteil

Servlet RequestDispatcher

WBOY
Freigeben: 2024-08-30 15:16:09
Original
954 Leute haben es durchsucht

Die RequestDispatcher-Schnittstelle ermöglicht die Weiterleitung der Anfrage an eine andere Ressource, bei der es sich um HTML, Servlet oder JSP handeln kann. Diese Schnittstelle kann auch verwendet werden, um den Inhalt einer zusätzlichen Ressource einzubinden. Es handelt sich um eine der Servlet-Kooperationsmethoden. Die RequestDispatcher-Schnittstelle ist Teil von Java. Servlet-Paket. Über diese Schnittstelle gibt das Servlet nach Erhalt einer Anfrage ein Objekt zurück.

Servlet RequestDispatcher

WERBUNG Beliebter Kurs in dieser Kategorie JAVA SERVLET - Spezialisierung | 18 Kursreihe | 6 Probetests

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Überblick über Servlet RequestDispatcher

Das Servlet RequestDispatcher verwendet eine Benutzeroberfläche, um einen Quelllink zu einem anderen anzufordern. Der Requestdispatcher sendet Formulardaten an die Validierungs-Servlet-Seite. Wenn die Servlet-Seite die Informationen validiert, leitet der Anforderungs-Dispatcher den Link unter Verwendung eines Pfad- oder Zeichenfolgennamens an eine andere Servlet- oder JSP-Seite weiter. Wenn die Webseite die Informationen nicht validiert, enthält das Anforderungs-Dispatcher-Objekt eine HTML- oder JSP-Seite und zeigt eine Fehlermeldung an.

Wie erstelle ich einen Servlet RequestDispatcher?

Ein RequestDispatcher-Objekt kann eine Anfrage an eine Ressource senden oder sie in eine Antwort einschließen. Die Ressource kann entweder statisch oder dynamisch sein. Es gibt drei Möglichkeiten, einen Servlet-Requestdispatcher auf der Servlet-Seite zu erstellen. Zuerst müssen wir den Stringnamen des Pfads oder des Seitenpfads verwenden.

Methode 1

Die folgende Syntax zeigt, wie ein Objekt des Anforderungs-Dispatchers mit einem Pfad erstellt wird.

Syntax:

RequestDispatcher requestdispatcherObject = ServletContext.getRequestDispatcher(" String file_path");
Nach dem Login kopieren

Erklärung:

  • Die öffentliche Schnittstelle, über die ein Servlet ServletContext mit seinem Servlet-Container kommuniziert.
  • Der Pfad ist eine Zeichenfolge, die den Pfadnamen der Ressource angibt.
  • Das Ressourcendateiformat muss entweder Servlet, HTML oder JSP sein.

Methode 2

Die folgende Syntax zeigt, wie ein Objekt des Anforderungs-Dispatchers erstellt wird.

Syntax:

RequestDispatcher requestdispatcherObject = ServletContext.getNamedDispatcher(" String name");
Nach dem Login kopieren

Erklärung:

  • Die öffentliche Schnittstelle ServletContext definiert die Sammlung von Methoden, die ein Servlet verwendet, um mit seinem Container zu kommunizieren.
  • Der „Name“ ist eine Zeichenfolge, die das zu umschließende Servlet angibt.

Methode 3

Die folgende Syntax zeigt, wie man ein Objekt eines Request-Dispatchers mit einer Request-Schnittstelle erstellt.

Syntax:

RequestDispatcher requestdispatcherObject = request.getRequestDispatcher(" String file_path");
Nach dem Login kopieren

Erklärung:

  • Die „Anfrage“ ist ein Objekt vom Typ HttpServletRequest.
  • Der Dateipfad ist eine Zeichenfolge, die den Pfadnamen der Ressource angibt. Es muss relativ zum aktuellen Servlet sein.

Methoden des Servlet RequestDispatcher

Der requestdispatcher verfügt über zwei Methoden für die Servlet- und HTML-Seiten. Diese Methode leitet die Dateiquelle entweder weiter oder schließt sie in die nächste Quelle ein.

  • Weiterleitungsmethode
  • Methode einschließen

1. Weiterleitungsmethode

Wenn die Informationen validiert sind und die Webseite zur nächsten Servlet-Seite weitergeleitet wird, verwenden Sie die Weiterleitungsmethode.

Syntax:

Die folgende Syntax zeigt, wie die Weiterleitungsmethode verwendet wird.

void forward(ServletRequest req, ServletResponse resp) throws ServletException, IOException
Nach dem Login kopieren

Erklärung:

  • Modifikator/Typ: void.
  • Diese Technik leitet eine Anfrage von einem Servlet an eine andere Serverressource um.
  • Die Methode wird aufgerufen, bevor die Antwort an den Client übermittelt wird.
  • Die Prozedur löst eine IllegalStateException aus, wenn die Antwort bereits gesendet wurde.
  • Anfrage (req) und Antwort (resp) sind identische Objekte, die der Servicemethode für das Servlet bereitgestellt werden.
  • Diese Funktion setzt den Dispatcher-Typ der Anfrage auf „DispatcherType.FORWARD“.

Beispiel:

Code:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Register extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String first_id = req.getParameter("fn");
RequestDispatcher rdispatcher = req.getRequestDispatcher("/index.html");
rdispatcher.include(req, resp);
}
}
Nach dem Login kopieren

2. Methode einschließen

Wenn die Informationen nicht gültig sind, enthält die Seite dieselbe Seite mit einer Fehlermeldung.

Syntax:

Die folgende Syntax zeigt, wie die Include-Methode verwendet wird.

void include(ServletRequest req, ServletResponse resp) throws ServletException, IOException
Nach dem Login kopieren

Erklärung:

  • Modifikator/Typ: void
  • Anfrage (req) und Antwort (resp) sind identische Objekte, die der Servicemethode für das Servlet bereitgestellt werden.
  • Diese Technik wird verwendet, um die Antwort einer Ressource in die aktuelle Servlet-Antwort einzubinden.
  • Diese Funktion setzt den Dispatcher-Typ der Anfrage auf „DispatcherType.INCLUDE“.

Beispiel:

Code:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Register extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String first_id = req.getParameter("fn");
printout.print("Sorry!! Wrong UserId!");
RequestDispatcher rdispatcher = req.getRequestDispatcher("/index.html");
rdispatcher.include(req, resp);
}
}
Nach dem Login kopieren

Servlet RequestDispatcher Interface

The servlet requestdispatcher requires the following four files:

  • Index.html: Insert the information in the form.
  • Register.java: Use the servlet requestdispatcher interface with the method.
  • FinalServlet.java: Use the servlet page for the final output.
  • Web.xml: A deployment descriptor file that contains the information about the servlet. A deployment descriptor file that contains the information about the servlet.

index.html: create the required form

Code:

<!DOCTYPE html>
<html>
<head>
<title> Basic form </title>
</head>
<body>
<form action = "first_servlet" method = "post">
<label for = "fn"> User Id: </label>
<input type = "text" id = "fn" name = "fn"><br><br>
<label for = "ln"> First name: </label>
<input type = "text" id = "ln" name = "ln"><br>
<input type = "submit" value = "Submit">
</form>
</body>
</html>
Nach dem Login kopieren

Register.java: create the first servlet with a request dispatcher interface

Code:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Register extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String first_id = req.getParameter("fn");
String first_name = req.getParameter("ln");
if(first_id.equals("servlet"){
RequestDispatcher rdispatcher = req.getRequestDispatcher("sec_servlet");
rdispatcher.forward(req, resp);
}
else{
printout.print("Sorry!! Wrong UserId!");
RequestDispatcher rdispatcher = req.getRequestDispatcher("/index.html");
rdispatcher.include(req, resp);
}
}
}
Nach dem Login kopieren

FinalServlet.java: create a second servlet page for the required output

Code:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class FinalServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String name = req.getParameter("ln");
printout.print("Welcome "+name);
}
}
Nach dem Login kopieren

Web.xml: create servlet parameters with its page

Code:

<web-app>
<servlet>
<servlet-name> Register </servlet-name>
<servlet-class> Register </servlet-class>
</servlet>
<servlet>
<servlet-name> FinalServlet </servlet-name>
<servlet-class> FinalServlet </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> Register </servlet-name>
<url-pattern> /first_servlet </url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name> FinalServlet </servlet-name>
<url-pattern> /sec_servlet </url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file> index.html </welcome-file>
</welcome-file-list>
</web-app>
Nach dem Login kopieren

Output 1: form page

Servlet RequestDispatcher

Output 2: servlet page output with an error message

Servlet RequestDispatcher

Output 2: servlet page final output

Servlet RequestDispatcher

Conclusion

The servlet requestdispatcher interface moves users from one source to another web application source. It is forward and includes the file path per requirement and source output.

Das obige ist der detaillierte Inhalt vonServlet RequestDispatcher. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php
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!