请求处理方法执行完成后,最终返回一个ModelAndView对象,即便返回类型是String、View、ModelMap等类型,SpringMVC也会在内部将他们转换成一个ModelAndView对象,从而变成一个既包含逻辑名,又包含了模型对象的视图;
SpringMVC通过视图解析器ViewResolver来得到视图对象View;视图View的作用就是渲染模型数据,将模型里的数据以某种形式呈现给用户,在设计层面为了实现视图模型和具体实现技术的解耦,MVC定义了org.springframework.web.servlet.View接口,该接口主要有2个方法:getContentType/render;视图对象由视图解析器来实例化,鉴于视图View是无状态的,所以不会有线程安全问题。
SpringMVC为逻辑视图名的解析,提供了很多种不同的策略,可以在SpringWEB上下文中配置一种或者多种解析策略,并可以指定他们之间的先后顺序,每一种策略均对应一个具体的视图解析器的实现类;
视图解析器的作用比较单一:将逻辑视图解析为一个具体的视图对象;所有的视图解析器都必须实现ViewResolver接口;
一般情况下,控制器方法返回字符串类型的值会被当成逻辑视图名来处理,但如果返回的字符串中带有forward:或者redirect:前缀时,SpringMVC则会对字符串进行特殊处理:将forward:和redirect:当成指示符,其后面的字符串作为URL来处理;
redirect:重定向
forward:转发