返回值的分类
字符串
controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。(注意一定要配置视图解析器),演示代码如下:
@RequestMapping("/testReturnString")
public String testReturnString() {
System.out.println("AccountController 的 testReturnString 方法执行了。。。。");
return "success"; //通过视图解析器解析为物理视图地址
}
void
若处理器返回void,表示执行完处理器方法体内代码后,不进行请求转发,而直接转发到当前URL.如果没有配置相应的url-pattern则会报404错误。
但是我们知道 Servlet 原始 API 可以作为控制器中方法的参数,在controller 方法形参上可以定义 request和 response,使用 request 或 response 指定响应结果:
1 、使用 request 转向页面,如下:
request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
2 、也可以通过 response 页面重定向:
response.sendRedirect("testRetrunString")
3 、也可以通过 response 指定响应结果,例如响应json数据
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("n json 串" ");
ModelAndView
ModelAndView 是 SpringMVC 为我们提供的一个对象,该对象也可以用作控制器方法的返回值。
ModelAndView
为我们提供了一种更灵活地为页面添加属性和指定返回视图的方法,其主要方法如下:
public ModelAndView addObject(Object attributeValue)
: 向当前页面的ModelMap
对象中添加属性
public void setViewName(@Nullable String viewName)
: 指定返回视图,viewName
会先被视图解析器处理解析成对应视图.