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进行重定向以及转发。