ModelAndView绑定数据模型配合Thymeleaf渲染数据用法学习
分开介绍,大致说一下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渲染数据用法学习相关推荐
- design php 如何使用ant_Ant Design Pro如何调用接口 | Ant Design Pro渲染数据 绑定数据...
Ant Design Pro如何调用接口 | Ant Design Pro渲染数据 绑定数据 Ant Design Pro我发现网上的资料好少,而且版本基本都是1.0的,我现在是2.0版本,好多地方都 ...
- JAVA后台数据使用thymeleaf渲染html页面
一.前言 本篇介绍如何使用thymeleaf从后台获取数据后渲染至html页面上. 二.使用方法 1.注入依赖 <!-- Thymeleaf 模板引擎 --> <dependency ...
- mvvm 耗时加载进度条_ZK的实际应用:MVVM –加载和渲染数据
mvvm 耗时加载进度条 先前的文章简要介绍了RIA框架ZK,以及其CSS Selector启发的控制器机制如何通过使在控制器类中引用UI组件的任务变得相对灵活来减轻UI更改所带来的一些负担. 然后, ...
- ZK的实际应用:MVVM –加载和渲染数据
先前的文章简要介绍了RIA框架ZK,以及它CSS Selector启发式控制器机制如何通过使在控制器类中引用UI组件的任务变得相对灵活来减轻UI更改所带来的一些负担. 然后,我们在上一篇文章中探讨了Z ...
- 数据双向绑定_手写 Vue3 数据双向绑定 理解Proxy
前言 vue3的 Proxy 最近貌似各大网红公众号都有发,我也来蹭蹭热度写一篇吧!我们也可以结合vue2来看看vue3到底发生了些什么变化,又解决了Vue2.x的哪些痛点.接下来我们一起看看~ 目录 ...
- Java(SpringCloud) 使用Thymeleaf渲染模板,通过Mailgun发送邮件
好久没发博客了,忙东忙西的,坚持! 本文介绍Java使用Mailgun搭建发送邮件的服务. 我把这个邮件服务放在了我的springCloudApplication(微服务Demo)项目的utilser ...
- Gavin小黑屋——Vue 学习笔记 :生命周期特点(先渲染HTML标签再渲染数据)
Vue基础 生命周期特点(先渲染HTML标签再渲染数据) 目录 Vue基础 生命周期特点(先渲染HTML标签再渲染数据) 一.Vue生命周期 Vue 的生命周期总共分为8个阶段:创建前/后,载 ...
- springboot中thymeleaf渲染html模板
有时候我们会遇到这样的一个需求: 通过前端传入的数据渲染一个现成的打印模板出来,最后返回一个html格式的文本给前端,模板是有一个现成的,但是每次传入进来的数据是不同的,所以需要后端经过渲染出来返回渲 ...
- 【Springboot学习笔记】SpringBoot+Mybatis+Thymeleaf+Layui数据表单从零开始实现按条件模糊分页查询的方法
[Springboot学习笔记]SpringBoot+Mybatis+Thymeleaf+Layui数据表单从零开始实现按条件模糊分页查询的方法 目录 1.搭建环境 1.1直接从网上下载SpringB ...
最新文章
- 图解Hadoop hdfs的基本工作机制及相关概念
- 自定义UITableViewCell需注意的问题
- 苹果电脑无法用普通域用户加入域,用域管理员却可以,怎么破!?
- Daily Scrum 2012/12/09
- cocos2d-x android 环境搭配,cocos2d-x Android环境配置问题和解决方法
- 南开大学c语言试题,南开大学二级C语言试题库,共71页
- zc706开发板的linux移植,Zynq—Linux移植学习笔记(十)
- python epoll 写数据到数据库_Python--day40(EPOLL的使用、数据库基础)
- MsSQL SQLServer 查询 表中字段的及类型是否为空
- 删除文件批处理delete file.bat
- 世界第一行销之神杰 亚伯拉罕首次中国大陆行
- HTML5从入门到精通电子书pdf下载
- 功能测试Ⅷ——业务流程测试
- python爬虫四(cookie,代理池,模拟登录(打码))
- 哔哩哔哩助手V0.8.16.28
- 浅谈 MySQL 写数据一致性保障机制
- 【百度地图API】如何利用自己的数据制作社交地图?只显示可视区域内的标注
- puzzle(1321)时间旅人
- 32位浮点数转十进制与二进制
- [css] scale