Java Spring MVC中重定向和视图渲染的区别

Java Spring MVC中重定向和视图渲染的区别,java,spring,spring-mvc,model-view-controller,Java,Spring,Spring Mvc,Model View Controller,在学习SpringMVC知识的过程中,有些关于SpringReturn类型的事情让我感到困惑 在此文档中:它们返回约会/new和重定向:/appoints 代码 这两种退货类型的主要区别是什么?据我所知,第一种类型以转发操作的形式返回,但如果我是对的,为什么他们还要将转发:/发布为返回类型?第一种类型返回视图,而后面的类型重定向到另一个控制器请求映射的操作。让我们看看代码本身 @RequestMapping(method = RequestMethod.POST) public String a

在学习SpringMVC知识的过程中,有些关于SpringReturn类型的事情让我感到困惑

在此文档中:它们返回
约会/new
重定向:/appoints

代码


这两种退货类型的主要区别是什么?据我所知,第一种类型以转发操作的形式返回,但如果我是对的,为什么他们还要将
转发:/
发布为返回类型?

第一种类型返回视图,而后面的类型重定向到另一个控制器请求映射的操作。让我们看看代码本身

@RequestMapping(method = RequestMethod.POST)
public String add(@Valid AppointmentForm appointment, BindingResult result) {
    if (result.hasErrors()) {
        return "appointments/new";
    }
在这里,当结果有错误时,它会呈现视图
约会/new
,以便用户可以输入正确的详细信息并再次添加AppPointURL不会在浏览器中更改

    appointmentBook.addAppointment(appointment);
    return "redirect:/appointments";
}
但是在这里,当结果没有错误时,此控制器操作将网站重定向到URL/appointments。检查更改为重定向URL的web浏览器URL

关于
转发:
重定向:

引自这个答案

在控制器中使用重定向前缀将生成一个HTTP响应,其中302状态代码和指向重定向URL的位置头。然后浏览器将重定向到该URL(第一个请求中公开的模型将丢失,浏览器URL将是第二个

使用转发前缀,转发将由servlet在内部完成,因此不需要第二个请求(URL将保持不变)。转发前缀只能在浏览器可以安全重复的请求中使用。当发送更改数据库状态的表单时,情况并非如此(重新加载浏览器将导致重复提交)。在这些情况下,您应该使用重定向并应用后重定向获取模式。

Se link。
它解释了在返回视图名称时重定向和转发之间的区别,例如:

return new ModelAndView(<viewpath>/<viewname>);
返回新的ModelAndView(/);
它不执行转发或重定向,而是实际获取文件服务器端并将其作为浏览器输出进行处理


当您返回
“重定向:/somePath”
时,它实际上是在向浏览器发送重定向(而不是转发)。重定向会导致页面刷新并发生在浏览器中,转发发生在服务器端,不会更改您的URL。

仅链接的答案无效。更好的你包括一些相关部分,从张贴和给予更多的信息链接。谢谢,你帮助我消除障碍
return new ModelAndView(<viewpath>/<viewname>);