springboot之thymeleaf模板和freemarker模板

1、springboot之thymeleaf模板

thymeleaf的优点:它就是html页面

相关pom依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

thymeleaf的使用

a、新建modul时勾选Thymeleaf,然后会自动添加相关pom依赖

b、配置application.yml文件

Spring Boot官方文档建议在开发时将缓存关闭,那就在application.yml文件中加入下面这行:

spring.thymeleaf.cache=false

正式环境还是要将缓存开启的

server:
  servlet:
    context-path: /springboot
 
spring:
    thymeleaf:
      cache: false   #项目开发完后改为true

c、thymeleaf模板开发的相关指令

对应的后台代码:

package com.zking.entity;

/**
 * @author LJ
 * @site www.lijun.com
 * @Date 2019年02月18日
 * @Time 15:29
 */
public class User {
    private Integer uid;
    private String uname;
    private String pwd;

    public User(Integer uid, String uname, String pwd) {
        this.uid = uid;
        this.uname = uname;
        this.pwd = pwd;
    }

    public User() {
    }

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}
package com.zking.controller;

import com.zking.entity.User;
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.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author LJ
 * @site www.lijun.com
 * @Date 2019年02月18日
 * @Time 15:31
 */
@Controller
public class IndexController {

    @RequestMapping("/user/userList")
    public ModelAndView index(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/user/userList");
        modelAndView.addObject("msg","用户列表");
        List<User> list = new ArrayList<User>();
        list.add(new User(1,"zs","666"));
        list.add(new User(2,"ls","123"));
        modelAndView.addObject("userList",list);
        return modelAndView;
    }
}

前台HTML代码:

<!DOCTYPE html>
<html lang="en">
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title th:text="${msg}"></title>
</head>
<body>
<!--取值语法-->
<h2 th:text="${msg}"></h2>

<table border="1px" width="500px">
    <thead>
    <tr>
        <td>ID</td>
        <td>姓名</td>
        <td>密码</td>
    </tr>
    </thead>
    <tbody>
    <!--遍历语法-->
    <tr th:each="i : ${userList}">
        <td th:text="${i.uid}"></td>
        <td th:text="${i.uname}"></td>
        <td th:text="${i.pwd}"></td>
    </tr>
    </tbody>
</table>

<h2>下拉框</h2>
<select>
    <option th:each="i : ${userList}" th:value="${i.uid}" th:text="${i.uname}"></option>
</select>
</body>
</html>

加上下面这行代码后会有提示:

<html xmlns:th="http://www.thymeleaf.org">

运行效果:

2、springboot之freemarker模板

学习网站:http://freemarker.foofun.cn/

相关pom依赖:

   <dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-freemarker</artifactId>
   </dependency>

 freemarker的使用:

a、添加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/**

b、给idea的右键菜单添加可以创建以.ftl为后缀的文件,因为idea里默认是没有的

Settings--->Editor-->File and Code Templates

设置好后点击鼠标右键就可出现能新建以.ftl为后缀的页面:

c、freemarker模板语法的使用

对应的后台代码:

    @RequestMapping("/role/roleList")
    public ModelAndView roleList(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/roleList");
        modelAndView.addObject("name","zs");
        modelAndView.addObject("sex","man");
        List<Map> list = new ArrayList<>();
        Map map;
        for (int i = 1;i < 5;i++){
            map = new HashMap();
            map.put("id","00"+i);
            map.put("name","管理员"+i);
            map.put("mark","描述"+i);
            list.add(map);
        }
        modelAndView.addObject("roles",list);
        return modelAndView;
    }

    @RequestMapping("/toLogin")
    public String toLogin(){
        return "login";
    }

前台HTML代码:

roleList.ftl:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>role列表</title>
    <#include 'common.ftl'><#--用于引入重复性代码,如公共的css、js-->
</head>
<body>
welcome 【${name!'未知'}】 to freemarker!

<h2>exists用于逻辑判断</h2>
<#if name?exists>
    ${name}
</#if>

<h2>条件判断</h2>
<#if sex == 'man'>
    男
<#elseif sex == 'woman'>
    女
<#else >
    保密
</#if>

<h2>循环的使用</h2>
<table border="1" width="500">
    <tr>
        <td>ID</td>
        <td>角色名称</td>
        <td>描述</td>
    </tr>
    <#list roles as i>
        <tr>
            <td>${i.id}</td>
            <td>${i.name}</td>
            <td>${i.mark}</td>
        </tr>
    </#list>
</table>

<h2>局部变量(assign)/全局变量(global)的定义</h2>
<#assign ctx1>
    ${springMacroRequestContext.contextPath}
</#assign>
<#global ctx2>
    ${springMacroRequestContext.contextPath}
</#global>
${ctx1}----${ctx2}
<button onclick="ta()">按钮</button>

<h2>include的使用</h2>
<#include 'foot.ftl'>

</body>
</html>

common.ftl:

<#--项目名-->
<#assign ctx>
    ${springMacroRequestContext.contextPath}
</#assign>
<base href="${ctx}/">
<script src="static/js/xxx.js"></script>

foot.ftl:

底部版权<br>
<#--这样是不能访问到login.ftl的,因为请求会被拦截-->
<a href="login.ftl">返回登录1</a><br>
<#--这样可以访问到login.ftl,因为经过了后台-->
<a href="${ctx}/toLogin">返回登录2</a>

login.ftl:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录界面</title>
</head>
<body>
欢迎来到登录页面!
</body>
</html>

xxx.js:

function ta() {
    alert(666);
}

目录结构:

访问一波的效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值