从 Spring MVC 中的控制器操作重定向到外部 URL
尝试从 Spring MVC 中的控制器操作重定向到外部 URL 时,了解默认“redirect:”语法的限制非常重要。默认情况下,Spring 重定向到应用程序上下文路径中的 URL。
重定向到内部 URL
如第一个代码片段所示:
@RequestMapping(method = RequestMethod.POST) public String processForm(...) { String redirectUrl = "yahoo.com"; return "redirect:" + redirectUrl; }
此代码尝试重定向到 URL“yahoo.com”,但缺少有效的协议(例如,http:// 或https://)。因此,Spring 将其解释为内部 URL 并重定向到应用程序上下文路径中的“yahoo.com”。
使用协议重定向到外部 URL
到重定向到带有协议的外部 URL,可以使用以下方法:
@RequestMapping(method = RequestMethod.POST) public String processForm(...) { String redirectUrl = "http://www.yahoo.com"; return "redirect:" + redirectUrl; }
通过在URL,Spring 正确地将用户重定向到外部网站。
重定向到没有协议的外部 URL
要使用 Spring MVC 重定向到没有协议的外部 URL,需要两个存在替代方案:
方法1:
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public void method(HttpServletResponse httpServletResponse) { httpServletResponse.setHeader("Location", projectUrl); httpServletResponse.setStatus(302); }
此方法手动设置响应中的“Location”标头和相应的 HTTP 状态代码 (302) 以触发重定向。
方法2:
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public ModelAndView method() { return new ModelAndView("redirect:" + projectUrl); }
此方法使用“ModelAndView”类创建重定向响应指定的 URL。
以上是如何从 Spring MVC 控制器操作重定向到外部 URL?的详细内容。更多信息请关注PHP中文网其他相关文章!