SpringBoot学习笔记
来源:互联网 发布:单片机pwm控制电机 编辑:程序博客网 时间:2024/06/08 15:35
spring boot提供的大量的模板引擎,比如:freemarker,groovy,thymeleaf,velocity等。springboot中推荐使用Thymeleaf作为模板引擎,因为Thymeleaf对SpringMVC提供了完美的支持,可以很方便的集成。
1.Thymeleaf语法基础
Thymeleaf的语法可以参考官网:http://www.thymeleaf.org/ 进行学习,其相对比较简单,下面列举出其常用的几个语法知识:
命名空间
html页面中引入thymeleaf命名空间,即<html xmlns:th=http://www.thymeleaf.org></html>,此时在html模板文件中动态的属性使用th:命名空间修饰
引用静态资源文件,
引入一些CSS和JS文件,语法格式为“@{}”,如@{/xxx.js }会引入/static目录下的/xxx.js文件
访问spring-mvc中model的属性:“${}”
如${user.name}可以获取model里的user对象的name属性
循环
在html的标签中,加入th:each=“value:${list}”形式的属性,如<span th:each=”user:${users}”></span>可以迭代users的数据,迭代出来的对象用user表示。
判断
在html标签中,加入th:if=”表达式”可以根据条件显示html元素 :<span th:if="${not #lists.isEmpty(users)}"> 表示判断userd这个list是否为空
时间的格式化
${#dates.format(blog.publishTime,'yyyy-MM-ddHH:mm:ss')},与java的语法类似
字符串拼接
th:href="'/user/delete/' + ${user.id}" 或者 th:href="${'/user/delete/' + user.id}
在js中使用model的数据: [ [ $ { user } ] ]
2.Thymeleaf与SpringBoot集成。
我们知道,springmvc中要集成一个模板引擎的话,需要定义一个视图解析器(ViewResolver),而视图解析器有需要设置一个视图(View)。Thymeleaf为我们定义好了ThymeleafView和ThymeleafViewResolver,他提供了一个SpringTemplateEngine,用来驱动在SpringMVC下使用Thymeleaf作为模板引擎,他还提供了一个模板解析器(TemplateResolver),用来设置通用的模板引擎(prefix,suffix等)。
我们在springboot的应用里,完全不需要手工集成,springboot也为我们自动配置好了一切。可以在
org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration中看到对上述的ThymeleafViewResolver,TemplateResolver,templateEngine进行了相关的配置,我们只要在项目的pom.xml中引入thymeleaf即可:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
定义bean,用来传递数据。
package com.example.demo.bean;/** * Created by Joker on 2017/9/8. */public class Customer { private Long customerId; private String customerName; private String address; public Customer() { } public Customer(Long customerId, String customerName, String address) { this.customerId = customerId; this.customerName = customerName; this.address = address; } public Long getCustomerId() { return customerId; } public void setCustomerId(Long customerId) { this.customerId = customerId; } public String getCustomerName() { return customerName; } public void setCustomerName(String customerName) { this.customerName = customerName; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }}
编写controller
该控制器为前台返回了一个customer和一个List<Customer>,返回值“customer”是resource/templates下的html文件名:
package com.example.demo.controller;import com.example.demo.bean.Customer;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import java.util.ArrayList;import java.util.List;/** * Created by Joker on 2017/9/8. */@Controllerpublic class CustomerController { @RequestMapping("/customer") public String getData(Model model){ Customer customer=new Customer(1L,"阿里巴巴","杭州"); List<Customer> list=new ArrayList<Customer>(); list.add(new Customer(2L,"百度", "北京")); list.add(new Customer(3L,"腾讯", "深圳")); list.add(new Customer(4L,"华为", "中国")); model.addAttribute("customer",customer); model.addAttribute("customers",list); return "customer"; }}
编写页面(resource/templates/customer.html):
<html lang="en" xmlns:th="http://www.thymeleaf.org"><head> <meta charset="UTF-8"/> <title>Thymeleaf Demo</title> <link th:href="@{/bootstrap.min.css}" rel="stylesheet"/></head><body><div th:if="${not #lists.isEmpty(customers)}"> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">客户列表</h3> </div> <div class="panel-body"> <table class="table table-bordered"> <tr th:each="item:${customers}"> <td th:text="${item.customerId}"></td> <td th:text="${item.customerName}"></td> <td th:text="${item.address}"></td> </tr> </table> </div> </div></div><script th:inline="javascript"> var single=[[${customer}]]; console.info(single.customerName);</script></body></html>页面逻辑:将后台返回出来的客户列表在页面展示出来,在控制台打印出单个customer的名称。其中,使用
<link th:href="@{/bootstrap.min.css}" rel="stylesheet"/>会引入recource/static下面对应的资源文件。使用 th:inline="javascript"可以让js访问model里面的数据。用 [ [ $ {customer} ] ]获得实际的值。
效果:在浏览器输入:http://localhost:8881/customer 可以看见输出的结果如下
如有错误,欢迎指正,不胜感激。
- SpringBoot 学习笔记
- SpringBoot 学习笔记 2
- springboot学习笔记(一)
- SpringBoot学习笔记(一)
- springboot学习笔记
- springboot学习笔记
- springboot学习笔记
- SpringBoot学习笔记一
- SpringBoot学习笔记--HelloWorld
- SpringBoot学习笔记
- SpringBoot学习笔记
- SpringBoot学习笔记
- SpringBoot学习笔记
- SpringBoot学习笔记
- springboot学习笔记一
- springboot学习笔记二
- springboot学习笔记三
- springboot学习笔记四
- C++11智能指针
- angular获取dom所在的scope
- Android入门项目(二):手机防盗器的开发(1)
- CENTOS7 键盘按键映射错误
- 用StrictMode来检测SQLite的泄漏leaked优秀排错方法
- SpringBoot学习笔记
- POJ
- 本地设置外网可以访问
- cocos2d-x 2.2.6之骨骼动画水平翻转与播放速率更改
- 融云联合ofo给大家送福利!
- Whitelabel Error Page(1)之 Not Found
- 开始学习linux运维,这里记录一些自己的学习心得
- Maven实战(二)--setting.xml详解
- CSS实现单行、多行文本溢出显示省略号(…)