SpringBoot模板
Thymeleaf模板
相关pom依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
Spring Boot官方文档建议在开发时将缓存关闭,那就在application.properties文件中加入下面这行
spring.thymeleaf.cache=false
对应的后台代码
package com.huang.springboot02.entity; import lombok.Data; /** * @auther 宇晨 * @company * @create 2019-11-25-20:12 */ @Data public class User { private Integer uid; private String uname; private String pwd; public User() { } public User(Integer uid, String uname, String pwd) { this.uid = uid; this.uname = uname; this.pwd = pwd; } }
package com.huang.springboot02.controller; import com.huang.springboot02.entity.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; /** * @auther 宇晨 * @company * @create 2019-11-25-20:16 */ @Controller @RequestMapping("/thymeleaf") public class UserController { @RequestMapping("/list") public String hello(HttpServletRequest request){ /** * 1、获取单个值 * 2、能够在html页面进行遍历展示 * 3、如何在html页面转义html代码块 */ request.setAttribute("msg","传输单个字符串!!!"); List<User> userList = new ArrayList<>(); userList.add(new User(1,"zs","123")); userList.add(new User(2,"ls","456")); userList.add(new User(3,"ww","789")); request.setAttribute("userList",userList); request.setAttribute("htmlStr","<span style='color:red' >转义html代码块<span>"); return "list"; } }
前台HTML页面
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>thymeleaf模板知识点介绍</title> </head> <body> <div th:text="${msg}"></div> <table width="60%" border="1"> <tr> <td>id</td> <td>用户名</td> <td>密码</td> </tr> <tr th:each="u : ${userList}"> <td th:text="${u.uid}"></td> <td th:text="${u.uname}"></td> <td th:text="${u.pwd}"></td> </tr> </table> <table th:utext="${htmlStr}"></table> <!--<div th:include="common.html"></div>--> </body> </html>
Freemarker模板
导入pom依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
<!--可以不加,但是做项目的时候可能会用--> <resources> <!--解决mybatis-generator-maven-plugin运行时没有将XxxMapper.xml文件放入target文件夹的问题--> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <!--freemarker模板也读取需要注释标红地方--> <resource> <directory>src/main/resources</directory> <includes> <!--<include>*.properties</include>--> <!--<include>*.xml</include>--> <!--<include>*.yml</include>--> </includes> </resource> </resources>
application.yml文件的默认配置
spring: thymeleaf: cache: false freemarker: # 设置模板后缀名 suffix: .ftl # 设置文档类型 content-type: text/html # 设置页面编码格式 charset: UTF-8 # 设置页面缓存 cache: false # 设置ftl文件路径,默认是/templates,为演示效果添加role template-loader-path: classpath:/templates/role mvc: static-path-pattern: /static/**
list.ftl
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h2>取值</h2> <h3>提供默认值</h3> welcome 【${name}】 to freemarker! <h3>exists用在逻辑判断</h3> <#if name?exists> ${name} </#if> <h2>条件</h2> <#if sex=='girl'> 女 <#elseif sex=='boy'> 男 <#else> 保密 </#if> <h2>循环</h2> <table border="1px" width="600px"> <thead> <tr> <td>ID</td> <td>角色名</td> <td>描述</td> </tr> </thead> <tbody> <#list roles as role> <tr> <td>${role.rid}</td> <td>${role.roleName}</td> <td>${role.desc}</td> </tr> </#list> </tbody> </table> <h2>include</h2> <#include 'foot.ftl'> <h2>局部变量(assign)/全局变量(global)</h2> <#assign ctx1> ${springMacroRequestContext.contextPath} </#assign> <#global ctx2> ${springMacroRequestContext.contextPath} </#global> sss ${ctx1}和${ctx2} sss </body> </html>
common.ftl
<div th:fragment="h1"> 第一部分内容 </div> <div th:fragment="h2"> 第二部分内容 </div> <div th:fragment="h3"> 第三部分内容 </div>
相关controler层的Java代码
package com.huang.springboot02.controller; import com.huang.springboot02.entity.Role; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import java.util.ArrayList; import java.util.List; /** * @auther 宇晨 * @company * @create 2019-11-26-16:55 */ @Controller @RequestMapping("/freemarker") public class RoleController { @RequestMapping("/role/list") public ModelAndView roleList(){ ModelAndView mav = new ModelAndView(); mav.setViewName("/list"); mav.addObject("name","ww"); mav.addObject("sex","gay"); List list = new ArrayList(); list.add(new Role(1,"老师","教书育人")); list.add(new Role(2,"学生","知识改变命运")); mav.addObject("roles",list); return mav; } @RequestMapping("toLogin") public String toLogin(){ return "login"; } }
测试结果: