Maison >Java >javaDidacticiel >Dispatcher de requêtes de servlet

Dispatcher de requêtes de servlet

WBOY
WBOYoriginal
2024-08-30 15:16:091016parcourir

L'interface RequestDispatcher permet d'acheminer la requête vers une autre ressource, qui peut être HTML, Servlet ou JSP. Cette interface peut également être utilisée pour incorporer le contenu d'une ressource supplémentaire. C'est l'une des méthodes de coopération de servlets. L'interface RequestDispatcher fait partie de Java. Paquet de servlets. Grâce à cette interface, la servlet renvoie un objet après avoir reçu une requête.

Dispatcher de requêtes de servlet

PUBLICITÉ Cours populaire dans cette catégorie SERVLET JAVA - Spécialisation | 18 séries de cours | 6 tests simulés

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Présentation de Servlet RequestDispatcher

Le servlet RequestDispatcher utilise une interface utilisateur pour demander un lien source vers un autre. Le requestdispatcher envoie les données du formulaire à la page du servlet de validation. Si la page du servlet valide les informations, le répartiteur de requêtes transmet le lien vers un autre servlet ou une autre page JSP à l'aide d'un chemin ou d'un nom de chaîne. Si la page Web ne valide pas les informations, l'objet répartiteur de requête inclut une page HTML ou JSP et affiche un message d'erreur.

Comment créer un servlet RequestDispatcher ?

Un objet RequestDispatcher peut envoyer une requête à une ressource ou l'inclure dans une réponse. La ressource peut être statique ou dynamique. Il existe trois façons de créer un répartiteur de requêtes de servlet sur la page du servlet. Tout d'abord, nous devons utiliser le nom de chaîne du chemin ou du chemin de la page.

Méthode 1

La syntaxe suivante montre comment créer un objet du répartiteur de requêtes avec un chemin.

Syntaxe :

RequestDispatcher requestdispatcherObject = ServletContext.getRequestDispatcher(" String file_path");

Explication :

  • L'interface publique qu'une servlet utilise ServletContext pour communiquer avec son conteneur de servlet.
  • Le chemin est une chaîne qui spécifie le nom du chemin de la ressource.
  • Le format du fichier de ressources doit être soit servlet, HTML ou JSP.

Méthode 2

La syntaxe suivante montre comment créer un objet du répartiteur de requêtes.

Syntaxe :

RequestDispatcher requestdispatcherObject = ServletContext.getNamedDispatcher(" String name");

Explication :

  • L'interface publique ServletContext définit la collection de méthodes qu'un servlet utilise pour communiquer avec son conteneur.
  • Le « nom » est une chaîne qui spécifie le servlet à envelopper.

Méthode 3

La syntaxe suivante montre comment créer un objet d'un répartiteur de requêtes avec une interface de requête.

Syntaxe :

RequestDispatcher requestdispatcherObject = request.getRequestDispatcher(" String file_path");

Explication :

  • La « requête » est un objet de type HttpServletRequest.
  • Le file_Path est une chaîne qui spécifie le nom de chemin de la ressource. Il doit être relatif à la servlet actuelle.

Méthodes de Servlet RequestDispatcher

Le requestdispatcher dispose de deux méthodes pour les pages servlet et HTML. Cette méthode transfère ou inclut la source du fichier vers la source suivante.

  • Méthode Forward
  • Inclure la méthode

1. Méthode de transfert

Si les informations sont validées et que la page Web est transférée vers la page de servlet suivante, utilisez la méthode forward.

Syntaxe :

La syntaxe suivante montre comment utiliser la méthode forward.

void forward(ServletRequest req, ServletResponse resp) throws ServletException, IOException

Explication :

  • Modificateur/Type : void.
  • Cette technique redirige une requête d'un servlet vers une autre ressource serveur.
  • La méthode est invoquée avant que la réponse ne soit transmise au client.
  • La procédure lancera une IllegalStateException si la réponse a déjà été envoyée.
  • La requête (req) et la réponse (resp) sont les objets identiques fournis à la méthode de service au servlet.
  • Cette fonction définit le type de répartiteur de la demande sur « DispatcherType.FORWARD ».

Exemple :

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. Méthode d'inclusion

Si les informations ne sont pas validées, alors la page inclut la même page avec un message d'erreur.

Syntaxe :

La syntaxe suivante montre comment utiliser la méthode include.

void include(ServletRequest req, ServletResponse resp) throws ServletException, IOException

Explication :

  • Modificateur/Type : vide
  • La requête (req) et la réponse (resp) sont les objets identiques fournis à la méthode de service au servlet.
  • Cette technique est utilisée pour inclure la réponse d'une ressource dans la réponse actuelle du servlet.
  • Cette fonction définit le type de répartiteur de la demande sur « DispatcherType.INCLUDE ».

Exemple :

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

Dispatcher de requêtes de servlet

Output 2: servlet page output with an error message

Dispatcher de requêtes de servlet

Output 2: servlet page final output

Dispatcher de requêtes de servlet

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Cadres en JavaArticle suivant:Cadres en Java