来自 ModelAndView 的视图与来自 ViewResolver 的视图

now*_*y94 2 java spring spring-mvc web

在 Spring MVC 中,当请求到来时,DispatcherServlet指定HandlerMapping指示哪个控制器应该处理请求。Controller处理请求并返回指定的模型View

我不明白在那之后会发生什么,什么时候ViewResolver开始他的工作。如果View已经由 指定Controller,为什么还有一个ViewResolver层?它实际上有什么作用?不应该ViewController?之前指定或与之平行?或者Controller应该触发ViewResolver层?

A S*_*Sdi 5

ViewResolver地图视图名称到实际views.when你有,例如:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

当你返回一个字符串时,你在控制器方法中告诉 spring,为返回值和视图加载添加前缀和后缀,假设你有

@RequestMapping("/")
public String home() {
    return "home";
}
Run Code Online (Sandbox Code Playgroud)

ViewResolver 将带回家并将其更改为home.jsp并查看 /WEB-INF/views/ 以加载/WEB-INF/views/home.jsp