java - 返回普通模型和 View 与返回重定向模型和 View 之间的区别

标签 java spring-mvc spring-webflow

刚刚学习了Spring MVC webflow。我对此感到困惑:

return new ModelAndView("test");
return new ModelAndView("redirect:test");

重定向是否就像 response.sendRedirect() 一样? 我只是检查了 Spring 引用,实际上,return new RedirectView()response.sendRedirect() 的作用相同。那么这三者有什么区别呢?

最佳答案

如果你想比较 ModelAndView("test") 和 ModelAndView("redirect:test") 到 servlet 框架。第一个类似于 RequestDispatcher 后者类似于 request.sendRedirect() 如果你想知道 requestdispatcher 和 sendredirect 的区别, that 有答案

即使“redirect:test”的最终结果是调用 HttpServletResponse.sendRedirect(), RedirectView 对象为您提供便利和更多功能。
IMO,直接在框架中使用 servlet API 可能不是一个好主意,除了 你想破解一些东西或解决一些问题。

The RedirectView issues an HttpServletResponse.sendRedirect() call that returns to the client browser as an HTTP redirect. By default all model attributes are considered to be exposed as URI template variables in the redirect URL. Of the remaining attributes those that are primitive types or collections/arrays of primitive types are automatically appended as query parameters.
http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/mvc.html

无论如何,在 spring MVC 中,通常有不止一种方法来做同样的事情。 这只是编码风格的问题。 例如,

public String doSomething(Model model){
    return "test";
}
public ModelAndView i_am_similar_to_doSomething(){
    return new ModelAndView("test");
}

//You can guess that you can do the same thing with redirect.

还有一些方法可以做这样的事情,但我的建议是 尝试在整个应用程序中坚持相同的风格。

关于java - 返回普通模型和 View 与返回重定向模型和 View 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23263812/

相关文章:

java - Spring Boot 的 WelcomePageHandlerMapping 在无效的 API 路径上被调用,其中预期出现 404 错误

java - 如何使用zookeeper作为基于spring的Web应用程序的数据源来加载属性?

java - 使用 JSF 获取异常的 Spring Web 流程配置

ajax - Grails Webflow中的Json响应

java - 将属性的生存时间添加到我的缓存中

java - 监听MySQL数据库的变化并自动更新前端,无需显式刷新前端

java - 我正在编写披萨订购程序,我应该在我的面包皮类中使用枚举吗?

java - @ResponseBody 导致 EofException

spring - 何时使用 Spring Web Flow?

java - 在 Eclipse AVD 中,我得到 "Unfortunately, Calculator has stopped."API 级别 16