RedirectView的VS重定向:Spring MVC中(RedirectView vs red

2019-10-23 07:26发布

这是更好地使用Spring MVC中重定向URL:

return new ModelAndView(new RedirectView("../abc/list.vm"));

要么

return new ModelAndView("redirect:DummyRedirectPage.htm");

Answer 1:

所述ModelAndView对象保存引用其视图对象和其可以是一个实例变量:

  • 一个具体的View执行如当您使用的情况:

     new ModelAndView(new RedirectView("../abc/list.vm")) 
  • String正向保持通过重定向前缀的视图的符号名对象,例如是使用时的情况下:

     new ModelAndView("redirect:DummyRedirectPage.htm") 

现在,当弹簧底座Web入口, DispatcherServlet ,被称为渲染View ,它会尝试解决针对给定的请求的视图ModelAndView对象,无论是获得提到其View子实现它的提供或解决View和创建其拉出的ModelAndView视图字符串表示:

protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) throws Exception {
    // ...
    View view;
    if (mv.isReference()) {
        // Resolve the view and instantiate it...
    }
    else {
        // No need to lookup: the ModelAndView object contains the actual View object.
        view = mv.getView();
        // ...
    }
    // ...
}

需要注意的是org.springframework.web.servlet.ModelAndView#isReference返回true如果视图是一个String对象。

下面给出的细节,我将认为第一ModelAndView会涉及这样可以中将优先到后来更少的计算。



文章来源: RedirectView vs redirect: in spring mvc