分开介绍,大致说一下ModelAndView
ModelAndView是Spring MVC里面重要的组成部分。分为两部分Model和View,Model是后端的返回值,View指的视图。先回忆一下当用户向服务器发送请求时,Spring MVC处理请求的过程
1. DispatcherServlet捕获前端请求;
2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler是配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回
3. 由HandleMapping定位到具体的(Handler)controller,controller将处理用户请求。
4.一旦controller处理完用户请求,则返回ModelAndView对象给DispatcherSevlet前端控制
4. 根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet 。
5. ViewResolver 结合Model和View,来渲染视图
6. 将渲染结果返回给客户端。

回忆完mvc的过程,应该大致可以明白ModelAndView负责哪一部分了,简单来说就是负责绑定模型数据转发到相应页面

ModelAndView共有三个作用

其一:ModelAndView 实现后台与前端页面数据交互;

其二:可以用于重定向与转发到指定页面,

其三:可以保存数据继而渲染到页面

接下来就用一段代码看一下ModelAndView的几个常用的用法。

@RequestMapping(value="/games",method =RequestMethod.GET )//返回类型设为ModelAndView,这里是无参构造举例说明。public ModelAndView GamesPage(){ModelAndView modelAndView = new ModelAndView();//实例化一个View的ModelAndView对象modelAndView.setViewName("games");//转发到games.htmlmodelAndView.addObject("games",gamesMapper.getAllGames());//封装数据,用于前端页面渲染,这里我返回的是一个List。当然Map,Set等数据结构也是可以的。return modelAndView;//返回ModelAndView对象}

说完ModelAndView,我们再看一下thymeleaf,这个东西是完全可以代替JSP的。thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面, 还有就是thymeleaf可以很好的和spring集成。因为Spring boot中配置JSP相当麻烦,并且也没有很好的契合,对于习惯JSP的大佬们来说十分头疼,不过Springboot支持thymeleaf模板引擎,这个习惯了也是相当好用的。
那配置这个模板引擎呢,之前在博客中详细说过了配置依赖,就不再赘述,直接上H5页面。
首先是引用命名空间
<html xmlns:th="http://www.thymeleaf.org">
在html中引入此命名空间,可避免编辑器出现html验证爆红看着不舒服,虽然加不加命名空间对Thymeleaf的功能没有任何影响。
接下来看一下常用标签
最常用输出标签是
th:text 用来将内容输出到所在标签的body中
代码举例<li th:text="${game.id}"></li>
意思是li的内容是game.id这个数据,用${}来选择
另外还可以选择变量输出

<p>Today is: <span th:text="${today}">25 September 2018</span></p>
 <span th:text="${#calendars.format(today,'dd MMMM yyyy')}">25 September 2018</span>

这里的${today} 用来引用 today 变量,第二个是输出不同的日期模式

其次还有输出URL,输出布尔表达式

 <a href="games/list.html" th:href="@{/games/list}">Games List</a>--输出URL

<div th:if="${user.isAdmin()} == false"> --输出布尔表达式
其他语法自行百度
这里再说两个,一个是循环,一个是分支

<ul th:each="game : ${games}"><li th:text="${game.id}"></li><li th:text="${game.name}"></li><li th:text="${game.type}"></li><li><img th:src="${game.image}"/></li><li th></li></ul>

结合上面ModelAndView的代码段来看 ,games是我的list数据集合,game相当于是我的一个引用,可以用这种方式遍历输出。

接下来说分支结构
先说明一下th:if和th:unless
只有在th:if中条件成立时才显示:
th:unless于th:if恰好相反,只有表达式中的条件不成立,才会显示其内容。
第二个是判断用户类型,不同类型不一样的显示

 <a href="comments.html"  th:href="@{/comments(prodId=${prod.id})}" th:unless="${#lists.isEmpty(prod.comments)}">view</a><a href="comments.html"  th:href="@{/product/comments(prodId=${prod.id})}"   th:if="${not #lists.isEmpty(prod.comments)}">view</a><div th:switch="${user.role}">
<p th:case="'admin'">User is an administrator</p>
<p th:case="#{roles.manager}">User is a manager</p>
<p th:case="*">User is some other thing</p>    --默认的 case 相当于default
</div>

后期还会学习其他的数据模型绑定的方法,再分享大家学习经验,谢谢阅览。

ModelAndView绑定数据模型配合Thymeleaf渲染数据用法学习相关推荐

  1. design php 如何使用ant_Ant Design Pro如何调用接口 | Ant Design Pro渲染数据 绑定数据...

    Ant Design Pro如何调用接口 | Ant Design Pro渲染数据 绑定数据 Ant Design Pro我发现网上的资料好少,而且版本基本都是1.0的,我现在是2.0版本,好多地方都 ...

  2. JAVA后台数据使用thymeleaf渲染html页面

    一.前言 本篇介绍如何使用thymeleaf从后台获取数据后渲染至html页面上. 二.使用方法 1.注入依赖 <!-- Thymeleaf 模板引擎 --> <dependency ...

  3. mvvm 耗时加载进度条_ZK的实际应用:MVVM –加载和渲染数据

    mvvm 耗时加载进度条 先前的文章简要介绍了RIA框架ZK,以及其CSS Selector启发的控制器机制如何通过使在控制器类中引用UI组件的任务变得相对灵活来减轻UI更改所带来的一些负担. 然后, ...

  4. ZK的实际应用:MVVM –加载和渲染数据

    先前的文章简要介绍了RIA框架ZK,以及它CSS Selector启发式控制器机制如何通过使在控制器类中引用UI组件的任务变得相对灵活来减轻UI更改所带来的一些负担. 然后,我们在上一篇文章中探讨了Z ...

  5. 数据双向绑定_手写 Vue3 数据双向绑定 理解Proxy

    前言 vue3的 Proxy 最近貌似各大网红公众号都有发,我也来蹭蹭热度写一篇吧!我们也可以结合vue2来看看vue3到底发生了些什么变化,又解决了Vue2.x的哪些痛点.接下来我们一起看看~ 目录 ...

  6. Java(SpringCloud) 使用Thymeleaf渲染模板,通过Mailgun发送邮件

    好久没发博客了,忙东忙西的,坚持! 本文介绍Java使用Mailgun搭建发送邮件的服务. 我把这个邮件服务放在了我的springCloudApplication(微服务Demo)项目的utilser ...

  7. Gavin小黑屋——Vue 学习笔记 :生命周期特点(先渲染HTML标签再渲染数据)

    Vue基础   生命周期特点(先渲染HTML标签再渲染数据) 目录 Vue基础   生命周期特点(先渲染HTML标签再渲染数据) 一.Vue生命周期 Vue 的生命周期总共分为8个阶段:创建前/后,载 ...

  8. springboot中thymeleaf渲染html模板

    有时候我们会遇到这样的一个需求: 通过前端传入的数据渲染一个现成的打印模板出来,最后返回一个html格式的文本给前端,模板是有一个现成的,但是每次传入进来的数据是不同的,所以需要后端经过渲染出来返回渲 ...

  9. 【Springboot学习笔记】SpringBoot+Mybatis+Thymeleaf+Layui数据表单从零开始实现按条件模糊分页查询的方法

    [Springboot学习笔记]SpringBoot+Mybatis+Thymeleaf+Layui数据表单从零开始实现按条件模糊分页查询的方法 目录 1.搭建环境 1.1直接从网上下载SpringB ...

最新文章

  1. 图解Hadoop hdfs的基本工作机制及相关概念
  2. 自定义UITableViewCell需注意的问题
  3. 苹果电脑无法用普通域用户加入域,用域管理员却可以,怎么破!?
  4. Daily Scrum 2012/12/09
  5. cocos2d-x android 环境搭配,cocos2d-x Android环境配置问题和解决方法
  6. 南开大学c语言试题,南开大学二级C语言试题库,共71页
  7. zc706开发板的linux移植,Zynq—Linux移植学习笔记(十)
  8. python epoll 写数据到数据库_Python--day40(EPOLL的使用、数据库基础)
  9. MsSQL SQLServer 查询 表中字段的及类型是否为空
  10. 删除文件批处理delete file.bat
  11. 世界第一行销之神杰 亚伯拉罕首次中国大陆行
  12. HTML5从入门到精通电子书pdf下载
  13. 功能测试Ⅷ——业务流程测试
  14. python爬虫四(cookie,代理池,模拟登录(打码))
  15. 哔哩哔哩助手V0.8.16.28
  16. 浅谈 MySQL 写数据一致性保障机制
  17. 【百度地图API】如何利用自己的数据制作社交地图?只显示可视区域内的标注
  18. puzzle(1321)时间旅人
  19. 32位浮点数转十进制与二进制
  20. [css] scale

热门文章

  1. javaweb基于SSH开发花凋坊花店在线购物系统(前台+后台) 课程设计 毕业设计
  2. js文件防止浏览器缓存
  3. 从数据指标到可视化看板-指标体系建设
  4. 无魔法插件 - ChatGPT Sidebar with GPT-4
  5. 小程序php好物优购毕业设计-附源码191755
  6. 《太阁立志传4》 所有武将卡的取得
  7. 【前端】css3实现三阶魔方原型
  8. 赢在中国》第三赛季36进12现场演讲
  9. SIMV薄膜表面缺陷检测仪快速检测产品表面缺陷
  10. 如何证明地球是圆的呢