本人小白一枚,欢迎大家一起讨论学习,如有错误,还望大家指教。
响应数据和结果视图
返回值分类
String
:controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址,该返回值默认就是请求转发,我们也可以通过进行重定向。- 请求转发:
return "forward:/WEB-INF/pages/success.jsp";
使用这种进行请求转发,路径必须写成视图url,不能写成逻辑视图。 - 重定向:
return "redirect:testReturnModelAndView";
,如果重定向到jsp页面,则jsp页面不能再WEB-INF目录下,无法找到。
- 请求转发:
void
:controller方法可以无返回值,这里大家可能就会产生疑问,如果没有返回值,我们如何进行页面跳转呢?上一篇我们叙述到,在controller方法中我们可以使用原始API作为控制器中方法的形参,所以我们就可以使用request或response响应结果。- 使用request请求转发:例如
request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);
- 使用response重定向:例如
response.sendRedirect("testRetrunString");
- 使用response指定响应结果:例如响应json数据。
- 使用request请求转发:例如
ModelAndView
:该对象是SpringMVC提供的, 有两个方法,一个是addObject用来向requ域中添加数据,一个是setView逻辑视图名称。注意:使用该返回值时,响应时页面跳转是请求转发。@ResponseBody
:该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据,如json,xml等等,通过response响应给客户端。