Maison >Java >javaDidacticiel >Comment rediriger vers des URL externes à partir des actions du contrôleur Spring MVC ?

Comment rediriger vers des URL externes à partir des actions du contrôleur Spring MVC ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-12 00:04:021069parcourir

How to Redirect to External URLs from Spring MVC Controller Actions?

Redirection vers des URL externes à partir des actions du contrôleur Spring MVC

Dans Spring MVC, la redirection vers des URL au sein du projet est simple en utilisant le préfixe redirect: . Cependant, la redirection vers des URL externes peut être délicate, surtout si l'URL ne spécifie pas de protocole valide.

Considérez le code suivant, qui redirige vers une URL au sein du projet :

@RequestMapping(method = RequestMethod.POST)
public String processForm(HttpServletRequest request, LoginForm loginForm, 
                          BindingResult result, ModelMap model) 
{
    String redirectUrl = "yahoo.com";
    return "redirect:" + redirectUrl;
}

Ce code ne redirigera pas vers l'URL externe prévue mais redirigera plutôt vers une vue portant le nom donné. Pour rediriger vers des URL externes, il faut inclure le protocole dans l'URL, comme vu ci-dessous :

@RequestMapping(method = RequestMethod.POST)
public String processForm(HttpServletRequest request, LoginForm loginForm, 
                              BindingResult result, ModelMap model) 
{
    String redirectUrl = "http://www.yahoo.com";
    return "redirect:" + redirectUrl;
}

Cependant, cette méthode nécessite la présence d'un protocole valide. Pour gérer les URL sans protocoles valides, deux approches sont disponibles :

Approche 1 :

@RequestMapping(value = "/redirect", method = RequestMethod.GET)
public void method(HttpServletResponse httpServletResponse) {
    httpServletResponse.setHeader("Location", projectUrl);
    httpServletResponse.setStatus(302);
}

Dans cette approche, un objet HttpServletResponse est utilisé pour définir l'en-tête d'emplacement et le code d'état, forçant la redirection.

Approche 2 :

@RequestMapping(value = "/redirect", method = RequestMethod.GET)
public ModelAndView method() {
    return new ModelAndView("redirect:" + projectUrl);
}

Cette approche utilise un ModelAndView pour rediriger vers l'URL donné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!

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