Heim  >  Artikel  >  Java  >  Servlet RequestDispatcher

Servlet RequestDispatcher

WBOY
WBOYOriginal
2024-08-30 15:16:09923Durchsuche

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");

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");

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");

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

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);
}
}

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

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);
}
}

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>

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);
}
}
}

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);
}
}

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>

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!

Stellungnahme:
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
Vorheriger Artikel:Frameworks in JavaNächster Artikel:Frameworks in Java