Ich habe festgestellt, dass der folgende Code den Benutzer zu einer URL innerhalb des Projekts umleitet.
@RequestMapping(method = RequestMethod.POST)
public String processForm(HttpServletRequest request, LoginForm loginForm,
BindingResult result, ModelMap model)
{
String redirectUrl = "yahoo.com";
return "redirect:" + redirectUrl;
}
Im Folgenden wird die ordnungsgemäße Umleitung wie beabsichtigt durchgeführt, erfordert jedoch http: // oder https: //
@RequestMapping(method = RequestMethod.POST)
public String processForm(HttpServletRequest request, LoginForm loginForm,
BindingResult result, ModelMap model)
{
String redirectUrl = "http://www.yahoo.com";
return "redirect:" + redirectUrl;
}
Ich möchte, dass die Umleitung immer zu der angegebenen URL umleitet, unabhängig davon, ob sie ein gültiges Protokoll enthält oder nicht, und ich möchte nicht zu einer Ansicht umleiten. Wie kann ich das machen?
Vielen Dank,
java
spring
jsp
spring-mvc
Jake
quelle
quelle
@ResponseStatus(HttpStatus.FOUND)
Sie können die verwenden
RedirectView
. Aus dem JavaDoc kopiert :Beispiel:
Sie können auch a verwenden
ResponseEntity
, zUnd natürlich kehren Sie zurück,
redirect:http://www.yahoo.com
wie von anderen erwähnt.quelle
Untersuchung der tatsächlichen Implementierung von UrlBasedViewResolver und RedirectView die Umleitung immer kontextabhängig, wenn Ihr Umleitungsziel mit / beginnt. Das Senden einer //yahoo.com/path/to/resource würde also nicht dazu beitragen, eine protokollbezogene Umleitung zu erhalten.
Um das zu erreichen, was Sie versuchen, können Sie Folgendes tun:
quelle
Eine andere Möglichkeit ist die Verwendung der folgenden
sendRedirect
Methode:quelle
Sie können dies auf ziemlich präzise Weise tun, indem Sie Folgendes tun
ResponseEntity
:quelle
Für mich funktioniert gut:
quelle
Für eine externe URL müssen Sie " http://www.yahoo.com " verwenden " als Weiterleitungs-URL verwenden.
Dies wird im Präfix redirect: der Spring-Referenzdokumentation erläutert .
leitet relativ zum aktuellen Servlet-Kontext um, während ein Name wie z
leitet zu einer absoluten URL weiter
quelle
Haben Sie RedirectView ausprobiert, wo Sie den contextRelative-Parameter angeben können?
quelle
/
zu überprüfen, ob er relativ zum Webanwendungskontext sein soll. Die Umleitungsanforderung gilt weiterhin für denselben Host.Kurz gesagt
"redirect://yahoo.com"
, leihen Sieyahoo.com
.wo wie
"redirect:yahoo.com"
wird Ihnenyour-context/yahoo.com
zB zB leihenlocalhost:8080/yahoo.com
quelle