视图映射掌握:解析Spring MVC视图解析器的全方位指南

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 视图映射掌握:解析Spring MVC视图解析器的全方位指南

问题

在原来的示例中,我们在控制器方法的返回值中直接返回了视图文件所在的路径和名称,这样就使得代码出现了耦合,如果后续视图文件移动位置,那么控制器代码还需要进行修改。

package world.xuewei.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * 第一个控制器
 *
 * @author 薛伟
 * @since 2023/10/30 16:18
 */
@Controller
public class IndexController {
    @RequestMapping("/index")
    public String index() {
        System.out.println("Hello World");
        return "/index.jsp";
    }
}

视图解析器

Spring MVC 框架中,InternalResourceViewResolver 是一种视图解析器,用于将控制器中返回的逻辑视图名称与实际的物理视图路径匹配。它会将逻辑视图名称映射到 JSP 文件或其他模板引擎支持的模板文件,并返回给客户端以呈现最终的用户界面。

该类主要通过以下两种方式实现视图的解析:

  1. 使用前缀和后缀来确定物理视图的文件路径。
  • 例如,将前缀设置为 /WEB-INF/views/ 并将后缀设置为 .jsp,则逻辑视图名称 home 将被解析为文件路径 /WEB-INF/views/home.jsp
  • 这种方式可以通过调用 setPrefix() 和 setSuffix() 方法进行配置。
  1. 将视图名称直接映射到物理视图的文件路径。
  • 例如,将逻辑视图名称 home 映射到文件路径 /WEB-INF/views/home.jsp,则直接使用此路径作为视图的物理路径。
  • 这种方式可以通过调用 setViewClass() 方法并指定具体的视图类来实现。

在视图解析过程中,InternalResourceViewResolver 还支持以下功能:

  1. 支持多个视图解析器。
  • 如果一个视图解析器无法解析视图,则会依次尝试使用其他视图解析器。
  • 要指定多个视图解析器,可以通过调用 setViewResolvers() 方法并传递一个 ViewResolver 数组来实现。
  1. 支持视图缓存。
  • 可以将解析后的视图缓存起来,以提高性能和效率。
  • 要启用视图缓存,可以通过调用 setCache() 方法并将其设置为 true 来实现。默认情况下,视图缓存是禁用的。

配置视图解析器

配置文件方式

<!-- 引入视图解析器 -->
<bean id="resolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!-- 视图所在路径 -->
    <property name="prefix" value="/"/>
    <!-- 文件类型 -->
    <property name="suffix" value=".jsp"/>
</bean>

配置类方式

package world.xuewei.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
/**
 * Mvc 配置类
 *
 * @author 薛伟
 * @since 2023/10/31 10:32
 */
@Configuration
public class MvcConfig {
    @Bean
    public ViewResolver internalResourceViewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        // 视图所在路径
        viewResolver.setPrefix("/");
        // 文件类型
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
}

最终效果

配置完视图解析器,在控制器方法的返回值,我们只需要返回视图的名称即可,可以将上述代码修改为:

package world.xuewei.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * 第一个控制器
 *
 * @author 薛伟
 * @since 2023/10/30 16:18
 */
@Controller
public class IndexController {
    @RequestMapping("/index")
    public String index() {
        System.out.println("Hello World");
        return "index";
    }
}


相关文章
|
12天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
2月前
|
自然语言处理 算法 Python
再谈递归下降解析器:构建一个简单的算术表达式解析器
本文介绍了递归下降解析器的原理与实现,重点讲解了如何使用Python构建一个简单的算术表达式解析器。通过定义文法、实现词法分析器和解析器类,最终实现了对基本算术表达式的解析与计算功能。
102 52
|
2月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
143 2
|
2月前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
59 2
|
2月前
|
前端开发 Java Maven
深入解析:如何用 Spring Boot 实现分页和排序
深入解析:如何用 Spring Boot 实现分页和排序
61 2
|
2月前
|
前端开发 Java 开发者
Spring MVC中的控制器:@Controller注解全解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序控制层的核心。它不仅简化了控制器的定义,还提供了灵活的请求映射和处理机制。本文将深入探讨`@Controller`注解的用法、特点以及在实际开发中的应用。
100 0
|
5月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
66 0
|
8月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
215 0
|
8月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
89 0
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
176 0

热门文章

最新文章

推荐镜像

更多