Redirection vers une URL externe à partir d'une action de contrôleur dans Spring MVC
Lors d'une tentative de redirection vers une URL externe à partir d'une action de contrôleur dans Spring MVC , il est important de comprendre les limites de la syntaxe par défaut « redirect : ». Par défaut, Spring redirige vers les URL situées dans le chemin contextuel de l'application.
Redirection vers les URL internes
Comme démontré dans le premier extrait de code :
@RequestMapping(method = RequestMethod.POST) public String processForm(...) { String redirectUrl = "yahoo.com"; return "redirect:" + redirectUrl; }
Ce code tente de rediriger vers l'URL « yahoo.com » mais ne dispose pas d'un protocole valide (par exemple, http:// ou https://). En conséquence, Spring l'interprète comme une URL interne et redirige vers "yahoo.com" dans le chemin contextuel de l'application.
Redirection vers des URL externes avec protocole
Vers rediriger vers une URL externe avec un protocole, l'approche suivante peut être utilisée :
@RequestMapping(method = RequestMethod.POST) public String processForm(...) { String redirectUrl = "http://www.yahoo.com"; return "redirect:" + redirectUrl; }
En spécifiant le protocole dans l'URL, Spring correctement redirige l'utilisateur vers le site externe.
Redirection vers des URL externes sans protocole
Pour rediriger vers une URL externe sans protocole à l'aide de Spring MVC, deux alternatives existent :
Méthode 1 :
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public void method(HttpServletResponse httpServletResponse) { httpServletResponse.setHeader("Location", projectUrl); httpServletResponse.setStatus(302); }
Cette méthode définit manuellement le En-tête "Location" et le code d'état HTTP approprié (302) dans la réponse pour déclencher une redirection.
Méthode 2 :
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public ModelAndView method() { return new ModelAndView("redirect:" + projectUrl); }
Cette méthode utilise le " ModelAndView" pour créer une réponse de redirection avec l'URL spécifiée.
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!