java - 来自 ModelAndView 的 View 与来自 ViewResolver 的 View

标签 java spring spring-mvc web

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

我不知道在那之后发生了什么,当 ViewResolver 开始他的工作时。如果View已经被Controller指定了,为什么还要有一个ViewResolver层呢?它实际上做了什么? View 不应该在 Controller 之前指定或与 Controller 并行指定吗?或者 Controller 应该触发 ViewResolver 层?

最佳答案

ViewResolver 将 View 名称映射到实际 View 。例如:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
</bean>

当你返回一个字符串时,你在 Controller 方法中告诉 spring,为返回值添加前缀和后缀并加载那个 View ,假设你有

@RequestMapping("/")
public String home() {
    return "home";
}

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

关于java - 来自 ModelAndView 的 View 与来自 ViewResolver 的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41208232/

相关文章:

java - Spring中具有动态参数值的 Autowiring 类

java - 无法无异常地修改私有(private)最终静态变量

java - 安装 osgi.bundle;用于 Eclipse 的 org.objectweb.asm 7.0.0

java - Android - 在运行时加载外部.jar

java - 我可以使用 Spring Boot 使用别人的 API 发出请求吗?

spring - 如何保存关于 rest CRUD API 的事务日志?

java - 制作自定义 Gradle 任务,生成代码,在 IDE 导入上运行

java - 不使用 web.xml 的错误页面

spring - BeanPostprocessor 不会被 Autowiring 为映射列表的 bean 调用

java - 多个安全适配器 - addFilterBefore 未按预期工作