Heim >Java >javaLernprogramm >Wie leite ich von Spring MVC Controller-Aktionen zu externen URLs um?
Umleitung zu externen URLs von Spring MVC Controller-Aktionen
In Spring MVC ist die Umleitung zu URLs innerhalb des Projekts mit dem Präfix „redirect:“ unkompliziert . Allerdings kann die Umleitung zu externen URLs schwierig sein, insbesondere wenn die URL kein gültiges Protokoll angibt.
Betrachten Sie den folgenden Code, der 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; }
Dieser Code leitet nicht zur beabsichtigten externen URL weiter, sondern zu einer Ansicht mit dem angegebenen Namen. Um auf externe URLs umzuleiten, muss man das Protokoll in die URL einbinden, wie unten gezeigt:
@RequestMapping(method = RequestMethod.POST) public String processForm(HttpServletRequest request, LoginForm loginForm, BindingResult result, ModelMap model) { String redirectUrl = "http://www.yahoo.com"; return "redirect:" + redirectUrl; }
Diese Methode erfordert jedoch das Vorhandensein eines gültigen Protokolls. Um URLs ohne gültige Protokolle zu verarbeiten, stehen zwei Ansätze zur Verfügung:
Ansatz 1:
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public void method(HttpServletResponse httpServletResponse) { httpServletResponse.setHeader("Location", projectUrl); httpServletResponse.setStatus(302); }
Bei diesem Ansatz wird ein HttpServletResponse-Objekt verwendet, um den Standortheader festzulegen und Statuscode, wodurch die Weiterleitung erzwungen wird.
Ansatz 2:
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public ModelAndView method() { return new ModelAndView("redirect:" + projectUrl); }
Dieser Ansatz verwendet ein ModelAndView, um zur angegebenen URL umzuleiten.
Das obige ist der detaillierte Inhalt vonWie leite ich von Spring MVC Controller-Aktionen zu externen URLs um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!