SpringMVC的Controller三种返回值类型

通过学习博客掌握了一下SpringMVC的Controller的三种返回值,总结一下。

SpringMVC的Controller三种返回值类型
请求都从DispatchSerlet进入,配置在web.xml里面的欢迎页面index.jsp直接将请求转发,这样可以统一。

1.返回String

  • 返回视图名
  • 通过redirect重定向(改变URL,对于一些特殊的问题需要重定向,比如登录,若是登录成功跳转主页面时使用了转发而不是重定向时,那么用户刷新时会重新提交表单,造成服务器压力)或者forward进行转发。

注意:如果在返回的字符串前加上了 redirect 或者 forward 标签,就不会走视图解析器,而是直接转发或重定向到指定的路径,所以对于重定向标签后面就不能加 WEB-INF ,因为重定向是客户端重新发送的请求,WEB-INF 目录下的页面仍然访问不到,但是对于转发标签的话后面可以跟 WEB-INF。原文

2.返回ModelAndView

  • 视图(View)和数据(Model)进行了捆绑,具有较高的耦合性,不建议使用。
  • addObject()设置模型数据。
  • setViewName()设置视图名称。

3.返回Void

  • 提前调用了request.getRequestDispacher(***).forward(request,response)
  • 或者reponse.sendRedirect(***)

总结:

实际返回String和ModelAndView也是通过操作request和response进行重定向以及转发。