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

标签 spring spring-mvc redirect

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

但是,当您可以简单地发送 View 名称或在需要时使用转发时,使用重定向:/url 是英雄吗?

最佳答案

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

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

关于spring - 为什么我们在 Spring MVC 中使用重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18671463/

相关文章:

java - Spring Data JPA 更新方法

java - 无法迭代查询返回的值

java - ForEach 方法中的类转换异常

jquery - Spring MVC 与 jquery 自动完成不返回结果

php - 在 Laravel 5.5 中处理 PostTooLargeException

ios - 收到推送通知时如何重定向到 Webview 中的特定页面

Spring Security 5自定义failureForwardUrl

java - Spring MVC 上传并流式传输到 FTP

java - 绕过 PUT 请求的唯一性 validator

angularjs - 如果用户输入/登录时已经登录,我该如何重定向?