• springboot模板(Freemarker与Thymeleaf)


    Thymeleaf模板

    Thymeleaf就是html页面

    导入pom依赖

    1 <dependency>
    2             <groupId>org.springframework.boot</groupId>
    3             <artifactId>spring-boot-starter-thymeleaf</artifactId>
    4         </dependency>

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

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

    实体类

    User 
     1 package com.javaxl.springboot01.entity;
     2 
     3 import lombok.Data;
     4 
     5 /**
     6  * @author XuFanQi
     7  * @site
     8  * @company
     9  * @create 2019-11-26 15:37
    10  */
    11 @Data
    12 public class User {
    13     private Integer uid;
    14     private String uname;
    15     private String pwd;
    16 
    17     public User(Integer uid, String uname, String pwd) {
    18         this.uid = uid;
    19         this.uname = uname;
    20         this.pwd = pwd;
    21     }
    22 
    23     public User() {
    24     }
    25 }
    Controller层
    userController 
     1 package com.javaxl.springboot01.controller;
     2 
     3 import com.javaxl.springboot01.entity.User;
     4 import org.springframework.stereotype.Controller;
     5 import org.springframework.web.bind.annotation.RequestMapping;
     6 
     7 import javax.servlet.http.HttpServletRequest;
     8 import java.util.ArrayList;
     9 import java.util.List;
    10 
    11 /**
    12  * @author XuFanQi
    13  * @site
    14  * @company
    15  * @create 2019-11-26 15:39
    16  */
    17 @Controller
    18 @RequestMapping("/thymeleaf")
    19 public class userController {
    20 
    21     @RequestMapping("/list")
    22     public String hello(HttpServletRequest request){
    23         /**
    24          * 1.获取单个值
    25          * 2.能够在html页面竞争遍历展示
    26          * 3.如何在HTML页面转义代码块
    27          */
    28         request.setAttribute("msg","传输单个字符串! !  !");
    29         List<User> userList = new ArrayList<>();
    30         userList.add(new User(1,"zs","123456"));
    31         userList.add(new User(2,"ls","1234567"));
    32         userList.add(new User(3,"ww","1234568"));
    33         request.setAttribute("userList",userList);
    34         request.setAttribute("htmlStr","<span style='color:red'>转义html代码块</span>");
    35 
    36         return "list";
    37     }
    38 }

    list.html页面

    (注意:

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

     1 <!DOCTYPE html>
     2 <html xmlns:th="http://www.thymeleaf.org">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>thymeleaf模板介绍</title>
     6 </head>
     7 <body>
     8 <div th:text = "${msg}"></div>
     9 <table width="60%" border="1">
    10     <tr>
    11         <td>ID</td>
    12         <td>Uname</td>
    13         <td>Pwd</td>
    14     </tr>
    15     <tr th:each="u : ${userList}">
    16         <td th:text="${u.uid}"></td>
    17         <td th:text="${u.uname}"></td>
    18         <td th:text="${u.pwd}"></td>
    19     </tr>
    20 </table>
    21 <div th:utext="${htmlStr}"></div>
    22 
    23 </body>
    24 </html>

    浏览器访问

    Freemarker模板

    首先导入pom依赖

     1 <dependency>
     2     <groupId>org.springframework.boot</groupId>
     3     <artifactId>spring-boot-starter-freemarker</artifactId>
     4    </dependency>
     5 
     6 <!--可以不加,但是做项目的时候可能会用-->
     7  <resources>
     8             <!--解决mybatis-generator-maven-plugin运行时没有将XxxMapper.xml文件放入target文件夹的问题-->
     9             <resource>
    10                 <directory>src/main/java</directory>
    11                 <includes>
    12                     <include>**/*.xml</include>
    13                 </includes>
    14             </resource>
    15             <!--freemarker模板也读取需要注释标红地方-->
    16             <resource>
    17                 <directory>src/main/resources</directory>
    18                 <includes>
    19                     <!--<include>*.properties</include>-->
    20                     <!--<include>*.xml</include>-->
    21                     <!--<include>*.yml</include>-->
    22                 </includes>
    23             </resource>
    24         </resources>

    配置application.yml

     1 server:
     2   servlet:
     3     context-path: /spr
     4   port: 80
     5 
     6 
     7 user:
     8   uname: zs
     9   pwd: 123456
    10   age: 18
    11   sex: "男"
    12   addr: "北京"
    13 spring:
    14   thymeleaf:
    15     cache: false
    16   freemarker:
    17     # 设置模板后缀名
    18     suffix: .ftl
    19     # 设置文档类型
    20     content-type: text/html
    21     # 设置页面编码格式
    22     charset: UTF-8
    23     # 设置页面缓存
    24     cache: false
    25     # 设置ftl文件路径,默认是/templates,为演示效果添加role
    26     template-loader-path: classpath:/templates/freemarker
    27     mvc:
    28       static-path-pattern: /static/**

    配置freemarker.ftl

    前台页面

    list.ftl

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <h2>取值</h2>
     9 <h3>提供默认值</h3>
    10 welcome 【${name!'未知'}】 to freemarker!
    11 
    12 <h3>exists用在逻辑判断</h3>
    13 <#if name?exists>
    14     ${name}
    15 </#if>
    16 
    17 <h2>条件</h2>
    18 <#if sex=='girl'>
    19 20 <#elseif sex=='boy'>
    21 22 <#else>
    23         保密
    24 </#if>
    25 
    26 <h2>循环</h2>
    27 <table border="1px" width="600px">
    28     <thead>
    29     <tr>
    30         <td>ID</td>
    31         <td>角色名</td>
    32         <td>描述</td>
    33     </tr>
    34     </thead>
    35     <tbody>
    36     <#list roles as role>
    37     <tr>
    38         <td>${role.rid}</td>
    39         <td>${role.roleName}</td>
    40         <td>${role.desc}</td>
    41     </tr>
    42     </#list>
    43     </tbody>
    44 </table>
    45 
    46 <h2>include</h2>
    47 <#include 'foot.ftl'>
    48 
    49 <h2>局部变量(assign)/全局变量(global)</h2>
    50  <#assign ctx1>
    51      ${springMacroRequestContext.contextPath}
    52  </#assign>
    53 
    54 <#global ctx2>
    55     ${springMacroRequestContext.contextPath}
    56 </#global>
    57 
    58 ss
    59 ${ctx1}和${ctx2}
    60 ss
    61 
    62 </body>
    63 </html>

    foot.ftl

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 版权
     9 </body>
    10 </html>

    实体类

    Role 
     1 package com.javaxl.springboot01.entity;
     2 
     3 import lombok.Data;
     4 
     5 /**
     6  * @author XuFanQi
     7  * @site
     8  * @company
     9  * @create 2019-11-26 16:53
    10  */
    11 @Data
    12 public class Role {
    13     private Integer rid;
    14     private String roleName;
    15     private String desc;
    16 
    17     public Role(Integer rid, String roleName, String desc) {
    18         this.rid = rid;
    19         this.roleName = roleName;
    20         this.desc = desc;
    21     }
    22 
    23     public Role() {
    24     }
    25 
    26 //    public Integer getRid() {
    27 //        return rid;
    28 //    }
    29 //
    30 //    public void setRid(Integer rid) {
    31 //        this.rid = rid;
    32 //    }
    33 //
    34 //    public String getRoleName() {
    35 //        return roleName;
    36 //    }
    37 //
    38 //    public void setRoleName(String roleName) {
    39 //        this.roleName = roleName;
    40 //    }
    41 //
    42 //    public String getDesc() {
    43 //        return desc;
    44 //    }
    45 //
    46 //    public void setDesc(String desc) {
    47 //        this.desc = desc;
    48 //    }
    49 }
    Controller层
    RoleController 
     1 package com.javaxl.springboot01.controller;
     2 
     3 import com.javaxl.springboot01.entity.Role;
     4 import org.springframework.stereotype.Controller;
     5 import org.springframework.web.bind.annotation.RequestMapping;
     6 import org.springframework.web.servlet.ModelAndView;
     7 
     8 import java.util.ArrayList;
     9 import java.util.List;
    10 
    11 /**
    12  * @author XuFanQi
    13  * @site
    14  * @company
    15  * @create 2019-11-26 16:49
    16  */
    17 @Controller
    18 @RequestMapping("/freemarker")
    19 public class RoleController {
    20     @RequestMapping("/role/list")
    21     public ModelAndView roleList(){
    22         ModelAndView mav = new ModelAndView();
    23         mav.setViewName("/list");
    24 
    25         mav.addObject("name",null);
    26         mav.addObject("sex","gay");
    27         List list = new ArrayList();
    28         list.add(new Role(1,"老师","教书育人"));
    29         list.add(new Role(2,"学生","知识改变命运"));
    30         mav.addObject("roles",list);
    31 
    32         return mav;
    33     }
    34 
    35     @RequestMapping("toLogin")
    36     public String toLogin(){
    37         return "login";
    38     }
    39 }

    浏览器访问

  • 相关阅读:
    在DNN模块开发中使用jQuery
    在MSBuild.exe中使用条件编译(Conditional Compile)
    ASP.NET SQL 注入免费解决方案
    html+css做圆角表格
    [ASP]sitemap地图生成代码
    刺穿MYIE|24小时同一ip弹一次|无须body加载|精简代码
    用ASPJPEG组件制作图片的缩略图和加水印
    16个经典面试问题回答思路[求职者必看]
    一个26岁IT男人写在辞职后
    搜弧IT频道的幻灯片切换的特效源代码
  • 原文地址:https://www.cnblogs.com/xcn123/p/11938182.html
Copyright © 2020-2023  润新知