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 ...
随机推荐
- 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 ...
- 《Android开发卷——开卷》
打算在自己在工作中遇到的问题,技术难点都记录下来,让其他人可以借鉴或者指点,这样既可以成长自己也可以成长别人.因为自己已经在工作了,所以遇到的问题非常具有代表性,所以不能简单简单的像网上一些小学生一样 ...
- IDEA环境编译Spring源码
一.下载源码 1.官网下载 官网地址 如下图 2.github git下载 github地址 如下图 3.gitee git下载(国内推荐使用) gitee地址 如图 查看对应的gradle版本 在下 ...
- Python连接Etcd集群基础教程
1.背景介绍 最近接手了一个项目,项目是使用Python开发的,其中使用到了Etcd,但是项目之前开发的方式,只能够支持单节点连接Etcd,不能够在Etcd节点发生故障时,自动转移.因此需要基于现有e ...
- 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 ...
- Gmsh 和 FiPy 求解稳态圆柱绕流
本项目的源码保存在 github 仓库 https://github.com/cjyyx/CFD_Learning/tree/main/CFD软件学习/FiPy/cylinder.如果下载整个目录,可 ...
- nginx 如何利用gzip压缩配置来优化网站访问速度
前言: 最近公司设计的网站前端是基于nuxt架构的,部署到nginx上后,首页的访问以及二级页面的访问极慢,f12观察后发现主要是一些js页面加载极慢拉低了网站的访问速度,于是便想到利用nginx里的 ...
- “国产双系统”出炉,RK3568J非对称AMP:Linux+RTOS/裸机
"非对称AMP"双系统是什么 AMP(Asymmetric Multi-Processing),即非对称多处理架构."非对称AMP"双系统是指多个核心相对独立运 ...
- xlookup与vlookup的区别
区别还是很大的,vlookup暂时扔不了.
- 解决BitBucket仓库较大拉取失败,使用SSH拉取
HTTPS 拉取 如果使用的是https拉取,可使用以下命令尝试,如果还是失败,可使用 ssh 拉取 git clone --depth=1 xxxx.git --depth=1:拉取最近1次提交记录 ...