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 ...
随机推荐
- INFINI Labs 产品更新 | Easysearch 支持 SQL 查询、Console 告警功能支持邮件等多渠道
INFINI Labs 产品又更新啦~.本次更新概要如下:Easysearch 新增 SQL 插件和JDBC 驱动,支持 SQL 查询,支持 SQL 常用函数等:Console 针对告警功能做了升级优 ...
- C# .NET Framework EXCEL NPOI EOF in header
实例化时异常: EOF in header 错误代码: try { workBook = new HSSFWorkbook(file); } catch { try { workBook = new ...
- 2 分钟,了解 4 个极为有用的 MetricsQL 函数
夜莺社区的朋友如果问时序库的选型,我一般都会推荐 VictoriaMetrics,除了其性能.稳定性.集群扩展能力之外,VictoriaMetrics 还扩展了 PromQL,提供了 MetricsQ ...
- Vue学习:22.Vue组件库-Vant
Vue组件库是一系列预先构建好的.可复用的UI组件集合,它们设计用于加速Vue.js应用程序的开发过程.这些组件通常遵循一定的设计规范,提供统一的外观和交互体验,让开发者能够快速搭建用户界面. 组件库 ...
- Linux实时查看Java接口数据
1.Linux实时查看Java接口数据的方法 在Linux系统中实时查看Java接口数据通常涉及几个步骤: (1)编写Java应用程序:首先,我们需要有一个Java应用程序,它暴露了一个或多个HTTP ...
- hdu 5072 coprime不完整题解
Problem Description There are n people standing in a line. Each of them has a unique id number. Now ...
- uboot 添加 自定义命令
--- title: uboot-uboot 添加 自定义命令 date: 2020-05-13 16:51:38 categories: tags: - uboot - cmd - config - ...
- 基于 SQLite 3 的 C 学习:2-高级操作
基于 SQLite 3 的 C/C++ 学习:2-高级操作与有关函数 背景 基于 SQLite 3 的 C/C++ 学习:开发流程 与 基本函数 中,我们简单介绍了有关 SQLite3 函数的使用. ...
- 使用kafka作为生产者生产数据到hdfs(单节点)
关键:查看kafka官网的userguide agent.sources = kafkaSourceagent.channels = memoryChannelagent.sinks = hdfsSi ...
- 1. 介绍一下 CSS 的盒子模型?
1. 盒模型: 内容(content).填充(padding).边界(margin). 边框(border) 2. 类型: IE 盒子模型.标准 W3C 盒子模型: 3. 两种盒模型的主要区别是:标准 ...