Java modelandview内部重定向和重定向之间的区别

Java modelandview内部重定向和重定向之间的区别,java,spring,spring-mvc,Java,Spring,Spring Mvc,在spring控制器类中重定向到url 有些地方全部使用返回“重定向:/abc.htm” 还可以使用返回新的ModelAndView(“重定向:/abc.htm”) 请任何人解释这两种说法的异同 在什么情况下它必须使用 罗希特: 我使用RedirectAttribute从旧url获取值。 在这种情况下,我在使用此返回“redirect:/abc.htm”时获得值 但不在此返回新模型和视图(“重定向:/abc.htm”) 以下语句在重定向属性方面是否有差异: return "redirect

在spring控制器类中重定向到url

  • 有些地方全部使用
    返回“重定向:/abc.htm”

  • 还可以使用
    返回新的ModelAndView(“重定向:/abc.htm”)

请任何人解释这两种说法的异同

在什么情况下它必须使用


罗希特:

我使用RedirectAttribute从旧url获取值。 在这种情况下,我在使用此
返回“redirect:/abc.htm”时获得值
但不在此
返回新模型和视图(“重定向:/abc.htm”)

以下语句在重定向属性方面是否有差异:

return "redirect:/abc.htm"
return new ModelAndView("redirect:/abc.htm")
做同样的事情:
将请求重定向到
abc.htm
。如果返回的视图名称具有 前缀
重定向:
,这被认为是需要重定向的特殊指示。视图名称的其余部分将被视为重定向URL

我同意你的说法

return "redirect:/abc.htm"
您只能返回重定向视图名称

使用
model和view
可以在单个返回值中同时返回
model
view

ModelAndView modelAndView =  new ModelAndView("redirect:/abc.htm");
modelAndView.addObject("modelAttribute" , new ModelAttribute());
return modelAndView;

但是该属性值在客户端(浏览器)为URL
/abc.htm
发出的新重定向请求中不可用。
model和view
的最佳用途是将请求转发到新的URL,这样您就可以在单个返回值中同时返回
model
view
。对于重定向方案,如果要传递属性,应使用
RedirectAttributes

他们两人做同样的工作。返回
ModelAndView
是Spring2.0之前的老方法。