6、SpringMVC之视图
注意:本文环境搭建请参考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之视图的更多相关文章
- SpringMVC重定向视图RedirectView小分析
目录 前言 RedirectView介绍 实例讲解 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnbl ...
- SpringMvc:视图和视图解析器
请求处理方法执行完成后,最终返回一个ModelAndView对象,对于返回String,View或ModelMap等类型的处理方法,SpringMvc也会在内部将它们装配成一个ModelAndView ...
- SpringMVC自定义视图Excel视图和PDF视图
SpringMVC自定义视图 Excel视图和PDF视图 SpringMVC杂记(十一) 使用Excel视图 Spring MVC 视图解析器(ViewResolver ) java实现导出excel ...
- SpringMVC 多视图解析器配置以及问题
在SpringMVC模式当中可以通过如下配置来支持多视图解析 <!-- jsp jstl --> <bean id="JSPViewResolver" class ...
- SpringMVC——说说视图解析器
学习SpringMVC——说说视图解析器 各位前排的,后排的,都不要走,咱趁热打铁,就这一股劲我们今天来说说spring mvc的视图解析器(不要抢,都有位子~~~) 相信大家在昨天那篇如何获取请 ...
- SpringMVC源码分析6:SpringMVC的视图解析原理
title: SpringMVC源码分析6:SpringMVC的视图解析原理 date: 2018-06-07 11:03:19 tags: - SpringMVC categories: - 后端 ...
- Springmvc多视图
Springmvc多视图 多视图是一个方法可以返回json/xml等格式的数据 第一步:导入xml格式支持的jar包 spring-oxm-3.2.0.RC2.jar 第二步:配置支持多视图 < ...
- 学习SpringMVC——说说视图解析器
各位前排的,后排的,都不要走,咱趁热打铁,就这一股劲我们今天来说说spring mvc的视图解析器(不要抢,都有位子~~~) 相信大家在昨天那篇如何获取请求参数篇中都已经领略到了spring mvc注 ...
- SpringMVC核心——视图渲染(包含视图解析)问题
一.本来想说的是返回值处理问题,但在 SpringMVC 中,返回值处理问题的核心就是视图渲染.所以这里标题叫视图渲染问题. 本来想在上一篇文章中对视图解析进行说明的,但是通过源码发现,它应该算到视图 ...
- springmvc(六)——视图和视图解析器
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoIAAAGrCAIAAADb2WEhAAAgAElEQVR4nOzdaVhTd78vfF8/z772c9 ...
随机推荐
- 语义分割评价指标(Dice coefficient, IoU)
语义分割任务常用的评价指标为Dice coefficient和IoU.Dice和IoU都是用来衡量两个集合之间相似性的度量,对于语义分割任务而言即用来评估网络预测的分割结果与人为标注结果之间的相似度. ...
- 修改linux默认启动界面——从命令行模式转换为图形化模式
从命令行模式转换为图形化模式 首先需要安装对应的图形化安装包 yum groupinstall "GNOME Desktop" "Graphical Administra ...
- 快速生成树协议(RSTP)基本知识及实验(使用eNSP)
关于生成树协议的知识可参考我的另一个博客:https://www.cnblogs.com/mrlayfolk/p/12242627.html 这篇博文主要介绍快速生成树协议(RSTP)的基本知识.-- ...
- 又跳槽!3年Java经验收割成都大厂的面试心得(干货满满&文末有福利)
中厂->阿里->字节,成都->杭州->成都 系列文章目录和关于我 0.前言 笔者在不足两年经验的时候从成都一家金融科技中厂跳槽到杭州阿里淘天集团,又于今年5月份从杭州淘天跳槽到 ...
- spring boot jpa 进行通用多条件动态查询和更新 接口
原因: jpa 没有类似于mybatis的那种 拼接sql的方式 想动态更新 需要使用 CriteriaUpdate的方式 去一直拼接,其实大多数场景只要传入一个非空实体类,去动态拼接sql 1.定义 ...
- Lru-k在Rust中的实现及源码解析
LRU-K 是一种缓存淘汰算法,旨在改进传统的LRU(Least Recently Used,最近最少使用)算法的性能.将其中高频的数据达到K次访问移入到另一个队列进行保护. 算法思想 LRU-K中的 ...
- injectionIII iOS代码注入工具(上)
injectionIII iOS代码注入工具(上) 前言 如果之前用过injection的朋友一定会对其热重载的特性印象深刻,如今injection经过多次更新,现在以injectionIII之名上架 ...
- http/https请求中如何使用Token
简介 Token就像是一个暗号,使用它就可以访问一些需要认证的系统或者服务. 那么,如何在http(s)中使用Token值呢? 使用方法 在http请求的头部字段中添加key-value.key为&q ...
- NLP与深度学习(三)Seq2Seq模型与Attention机制
1. Attention与Transformer模型 Attention机制与Transformer模型,以及基于Transformer模型的预训练模型BERT的出现,对NLP领域产生了变革性提升 ...
- STM32学习笔记:创建标准库工程模板
背景 标准库下载:地址 本章的项目可以在这里下载. STM32作为一类经典的MCU.本人从2018年1月1日开始对于STM32系列单片机的学习. 本人所持的型号为:STM32F429ZI-DISCOV ...