注意:本文环境搭建请参考5.2节

6.1、视图概述

  • 视图的作用是渲染数据,将模型Model中的数据展示给用户;

  • SpringMVC视图的种类很多,默认有转发视图和重定向视图;

  • SpringMVC中的视图是View接口;

  • 当工程引入jstl的依赖,转发视图会自动转换为JstlView;

  • 若使用的视图技术为Thymeleaf,在SpringMVC的配置文件中配置了Thymeleaf的视图解析器,

    由此视图解析器解析之后所得到的是ThymeleafView。

6.2、ThymeleafView(常用)

  • 当控制器方法中所设置的视图名称没有任何前缀时,视图名称会被SpringMVC配置文件中所配置的视图解析器解析;

  • 视图名称拼接视图前缀和视图后缀所得到的最终路径,会通过转发的方式实现跳转。

6.2.1、控制器方法示例

注意:此时SpringMVC配置文件中所配置的视图解析器为ThymeleafViewResolver

    @RequestMapping("/test/view/thymeleaf")
public String testThymeleafView(){
return "success";
}

6.2.2、页面请求示例

<a th:href="@{/test/view/thymeleaf}">测试SpringMVC的视图ThymeleafView</a>

6.2.3、测试效果

由浏览器地址栏可知,ThymeleafView本质上是转发视图

6.3、InternalResourceView(少用)

  • SpringMVC中默认的转发视图是InternalResourceView;

  • 当控制器方法中所设置的视图名称以"forward:"为前缀时,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,

    而是会将前缀"forward:"去掉,剩余部分作为最终路径,通过转发的方式实现跳转

6.3.1、控制器方法示例

注意:因为DispatcherServlet接管了所有请求,所以此时请求转发不能直接返回物理视图,但可以调用其他请求

    @RequestMapping("/test/view/forward")
public String testInternalResourceView(){
return "forward:/test/view/thymeleaf";
}

6.3.2、页面请求示例

<a th:href="@{/test/view/forward}">测试SpringMVC的视图InternalResourceView</a>

6.3.3、测试效果

6.4、重定向视图

  • SpringMVC中默认的重定向视图是RedirectView;

  • 当控制器方法中所设置的视图名称以"redirect:"为前缀时,此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析,

    而是会将前缀"redirect:"去掉,剩余部分作为最终路径,通过重定向的方式实现跳转

6.4.1、控制器方法示例

注意:因为DispatcherServlet接管了所有请求,所以此时重定向不能直接返回物理视图,但可以调用其他请求

    @RequestMapping("/test/view/redirect")
public String testRedirectView(){
return "redirect:/test/view/thymeleaf";
}

6.4.2、页面请求示例

<a th:href="@{/test/view/redirect}">测试SpringMVC的视图RedirectView</a>

6.4.3、测试效果

注意:浏览器地址栏显示为重定向的地址

6.5、请求转发和重定向的使用情景

  • 请求转发:失败时使用,例如登录失败用请求转发

  • 重定向:成功时使用,例如登录成功用重定向

6.6、视图控制器

当控制器方法仅仅用来实现页面跳转(即只需要设置视图名称时),可以使用视图控制器来替代其功能

6.6.1、要被替代的控制器方法示例

6.6.2、视图控制器示例

注意:如果设置了视图控制器,则只有视图控制器所指定的请求路径会被处理,其他请求将全部404;

为了让其他请求也能得到(控制器方法)处理,需要开启mvc的注解驱动

    <!--开启mvc的注解驱动-->
<mvc:annotation-driven></mvc:annotation-driven> <!--
视图控制器(mvc:view-controller):为指定的请求直接设置(逻辑)视图名称,从而实现页面的跳转
path属性:设置要处理的请求路径
view-name属性:设置要跳转到的逻辑视图
-->
<mvc:view-controller path="/" view-name="index"></mvc:view-controller>

6、SpringMVC之视图的更多相关文章

  1. SpringMVC重定向视图RedirectView小分析

    目录 前言 RedirectView介绍 实例讲解 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnbl ...

  2. SpringMvc:视图和视图解析器

    请求处理方法执行完成后,最终返回一个ModelAndView对象,对于返回String,View或ModelMap等类型的处理方法,SpringMvc也会在内部将它们装配成一个ModelAndView ...

  3. SpringMVC自定义视图Excel视图和PDF视图

    SpringMVC自定义视图 Excel视图和PDF视图 SpringMVC杂记(十一) 使用Excel视图 Spring MVC 视图解析器(ViewResolver ) java实现导出excel ...

  4. SpringMVC 多视图解析器配置以及问题

    在SpringMVC模式当中可以通过如下配置来支持多视图解析 <!-- jsp jstl --> <bean id="JSPViewResolver" class ...

  5. SpringMVC——说说视图解析器

    学习SpringMVC——说说视图解析器   各位前排的,后排的,都不要走,咱趁热打铁,就这一股劲我们今天来说说spring mvc的视图解析器(不要抢,都有位子~~~) 相信大家在昨天那篇如何获取请 ...

  6. SpringMVC源码分析6:SpringMVC的视图解析原理

    title: SpringMVC源码分析6:SpringMVC的视图解析原理 date: 2018-06-07 11:03:19 tags: - SpringMVC categories: - 后端 ...

  7. Springmvc多视图

    Springmvc多视图 多视图是一个方法可以返回json/xml等格式的数据 第一步:导入xml格式支持的jar包 spring-oxm-3.2.0.RC2.jar 第二步:配置支持多视图 < ...

  8. 学习SpringMVC——说说视图解析器

    各位前排的,后排的,都不要走,咱趁热打铁,就这一股劲我们今天来说说spring mvc的视图解析器(不要抢,都有位子~~~) 相信大家在昨天那篇如何获取请求参数篇中都已经领略到了spring mvc注 ...

  9. SpringMVC核心——视图渲染(包含视图解析)问题

    一.本来想说的是返回值处理问题,但在 SpringMVC 中,返回值处理问题的核心就是视图渲染.所以这里标题叫视图渲染问题. 本来想在上一篇文章中对视图解析进行说明的,但是通过源码发现,它应该算到视图 ...

  10. springmvc(六)——视图和视图解析器

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoIAAAGrCAIAAADb2WEhAAAgAElEQVR4nOzdaVhTd78vfF8/z772c9 ...

随机推荐

  1. LeetCode 688. Knight Probability in Chessboard “马”在棋盘上的概率 (C++/Java)

    题目: On an NxN chessboard, a knight starts at the r-th row and c-th column and attempts to make exact ...

  2. 《Android开发卷——开卷》

    打算在自己在工作中遇到的问题,技术难点都记录下来,让其他人可以借鉴或者指点,这样既可以成长自己也可以成长别人.因为自己已经在工作了,所以遇到的问题非常具有代表性,所以不能简单简单的像网上一些小学生一样 ...

  3. IDEA环境编译Spring源码

    一.下载源码 1.官网下载 官网地址 如下图 2.github git下载 github地址 如下图 3.gitee git下载(国内推荐使用) gitee地址 如图 查看对应的gradle版本 在下 ...

  4. Python连接Etcd集群基础教程

    1.背景介绍 最近接手了一个项目,项目是使用Python开发的,其中使用到了Etcd,但是项目之前开发的方式,只能够支持单节点连接Etcd,不能够在Etcd节点发生故障时,自动转移.因此需要基于现有e ...

  5. C# Linq.FirstOrDefault、Linq.Where、Linq.AsParallel、List.Exists、List.Find、Dictionar.TryGetValue、HashSet.Contains 性能的比较

    今天我们来比较一下集合检索方法性能更优问题,测试代码 public class Entity { public int Id { get; set; } public int No { get; se ...

  6. Gmsh 和 FiPy 求解稳态圆柱绕流

    本项目的源码保存在 github 仓库 https://github.com/cjyyx/CFD_Learning/tree/main/CFD软件学习/FiPy/cylinder.如果下载整个目录,可 ...

  7. nginx 如何利用gzip压缩配置来优化网站访问速度

    前言: 最近公司设计的网站前端是基于nuxt架构的,部署到nginx上后,首页的访问以及二级页面的访问极慢,f12观察后发现主要是一些js页面加载极慢拉低了网站的访问速度,于是便想到利用nginx里的 ...

  8. “国产双系统”出炉,RK3568J非对称AMP:Linux+RTOS/裸机

    "非对称AMP"双系统是什么 AMP(Asymmetric Multi-Processing),即非对称多处理架构."非对称AMP"双系统是指多个核心相对独立运 ...

  9. xlookup与vlookup的区别

    区别还是很大的,vlookup暂时扔不了.

  10. 解决BitBucket仓库较大拉取失败,使用SSH拉取

    HTTPS 拉取 如果使用的是https拉取,可使用以下命令尝试,如果还是失败,可使用 ssh 拉取 git clone --depth=1 xxxx.git --depth=1:拉取最近1次提交记录 ...