Maison  >  Article  >  Java  >  Quelles sont les différences entre le transfert de requêtes Java et la redirection de requêtes ?

Quelles sont les différences entre le transfert de requêtes Java et la redirection de requêtes ?

WBOY
WBOYavant
2023-05-05 15:46:151890parcourir

Avant-propos

En Java, Il existe deux façons d'implémenter les sauts : Redirection de demande et redirection de demande, mais les deux sont complètement différents, nous en discuterons donc aujourd'hui.

Les principales différences entre le transfert de demande et la redirection de demande incluent les 5 points suivants :

  • Différentes définitions

  • Différentes parties de saut

  • Partage de données différent

  • L'adresse URL finale est différente

  • L'implémentation du code est différente

Ensuite, regardons-la un par un.

1. Différentes définitions

Redirection de demande (Forward) : se produit à l'intérieur du programme serveur. Lorsque le serveur reçoit une demande du client, il transmet d'abord la demande à l'adresse cible, puis renvoie le résultat de la cible. adresse transmise au client. Le client n'a pas conscience de tout cela. C'est comme si Zhang San (client) empruntait de l'argent à Li Si (serveur), et Li Si n'avait pas d'argent, alors Li Si allait voir Wang Wu pour emprunter de l'argent et prêtait de l'argent à Zhang. San, Zhang San n'a emprunté de l'argent qu'une seule fois dans tout le processus, et Li Si a fait le reste. Il s'agit d'une demande de transfert. **Redirection de demande (Redirection) : la redirection de demande signifie qu'une fois que le serveur a reçu la demande du client, il renverra un en-tête de réponse temporaire au client. Cet en-tête de réponse temporaire enregistre que le client doit renvoyer la demande (redirection) adresse URL. . Une fois que le client a reçu l'adresse, il enverra la demande à la nouvelle adresse. Il s'agit de la redirection de la demande. **C'est comme si Zhang San (client) demandait à Li Si (serveur) d'emprunter de l'argent. Li Si n'a pas d'argent, alors Li Si dit à Zhang San : « Je n'ai pas d'argent, tu vas voir Wang Wu pour emprunter de l'argent. Zhang San Je suis retourné chez Wang Wu et j'ai emprunté de l'argent. C'était une demande de réorientation.

2. Les parties requérantes sont différentes

D'après les définitions du transfert de demande et de la redirection de demande ci-dessus, nous pouvons voir que : Le transfert de demande est un comportement côté serveur Le serveur envoie la demande au nom du client et renvoie. le résultat vers le client ; La redirection de la demande est le comportement du client, et leur processus d'interaction est comme indiqué dans la figure ci-dessous :

Quelles sont les différences entre le transfert de requêtes Java et la redirection de requêtes ?

3. Le partage des données est différent

Le transfert de la demande est implémenté sur le serveur. côté, donc pendant tout le processus d'exécution, le client Le client (côté navigateur) n'a besoin d'envoyer une requête qu'une seule fois, donc le même objet de requête Request et un objet de réponse Response sont utilisés dans tout le processus d'interaction, donc pendant tout le processus de requête , la demande et les données renvoyées sont partagées ; et la demande est répétée. Envoyez deux demandes complètement différentes au client, de sorte que les données des deux demandes sont différentes.

4. L'adresse URL finale est différente

Le transfert de demande se produit lorsque le serveur effectue la demande et renvoie ensuite le résultat au client, de sorte que l'adresse URL reste inchangée pendant tout le processus de demande, tandis que la redirection de demande se produit lorsque le serveur l'indique ; le client, "Vous allez vers un autre endroit à visiter", donc le navigateur renverra la demande, donc l'URL finalement affichée par le client est également l'adresse de saut finale, pas l'adresse de la demande initiale, donc l'adresse URL a changé .

5. L'implémentation du code est différente

Dans SpringBoot, le code d'implémentation pour le transfert des requêtes est le suivant :

@RequestMapping("/fw")
public void forward(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.getRequestDispatcher("/index.html").forward(request, response);
}

Et le code d'implémentation pour la redirection des requêtes est le suivant :

@RequestMapping("/rt")
public void redirect(HttpServletRequest request, HttpServletResponse response) throws IOException {
    response.sendRedirect("/index.html");
}

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer