为什么我们在Spring MVC中使用重定向?

时间:2013-09-07 08:37:32

标签: spring spring-mvc redirect

如果网址在自己的网络应用程序中,为什么人们必须重定向? 为什么在Spring中人们从Controller的处理程序方法重定向到同一个控制器中的另一个处理程序方法? 我听说重定向是基于浏览器的。这就像向浏览器发送请求以向另一个URL发送请求。 虽然forward在(spring mvc)应用程序中使用时有意义,但浏览器窗口上的URL保持不变。

但是,当你只需发送一个视图名称或使用前进时,使用redirect:/ url是否具有英雄性。

3 个答案:

答案 0 :(得分:8)

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

使用forward前缀,转发将由servlet在内部完成,因此不需要第二个请求(URL将保持不变)。 forward前缀只应在可由浏览器安全重复的请求中使用。当您发送更改数据库状态的表单时,情况并非如此(重新加载浏览器将导致重复提交)。在这些情况下,您应该使用redirect并应用POST-redirect-GET模式。请参阅http://en.wikipedia.org/wiki/Post/Redirect/Get

答案 1 :(得分:2)

如果没有特定的上下文,很难告诉你为什么某些人在执行处理程序后会使用重定向的原因。

在某些情况下,处理程序处理后(例如在POST之后)的重定向被视为所需的设计模式 - POST/Redirect/GET

一个常见问题是使用POST方法提交重复表单。通过在处理表单后使用重定向,应用程序可以在很大程度上阻止用户点击刷新并重新提交表单 - 因为它们现在位于新重定向的URL。

答案 2 :(得分:0)

我们执行重定向而不是转发到页面,因为我们希望将重定向后发布模式应用于表单提交。

使用此模式,成功的表单提交会发出HTTP重定向,以避免在用户重新加载页面或为页面添加书签时重新提交。

相关问题