当前位置:

首页 > 编程开发 > Spring Boot怎么整合Thymeleaf

Spring Boot怎么整合Thymeleaf

Thymeleaf基本介绍SpringBoot官方推荐使用Thymeleaf作为其模板引擎。SpringBoot为Thymeleaf提供了一系列默认配置,并且为Thymeleaf提供了视图解析器。项目中一但导入了Thymeleaf的依赖,相对应的自动配置(ThymeleafAutoConfiguration)就会自动生效,因此Thymeleaf可以与SpringBoot完美整合。Thymeleaf模板引擎可以和html标签完美结合,便于后端渲染数据。Thymeleaf支持静态效果和动态效果,在没有动态数据

本文目录

     Thymeleaf

    基本介绍

    Spring Boot 官方推荐使用 Thymeleaf 作为其模板引擎。SpringBoot 为 Thymeleaf 提供了一系列默认配置,并且为Thymeleaf提供了视图解析器。项目中一但导入了 Thymeleaf 的依赖,相对应的自动配置 (ThymeleafAutoConfiguration) 就会自动生效,因此 Thymeleaf 可以与 Spring Boot 完美整合 。Thymeleaf模板引擎可以和html标签完美结合,便于后端渲染数据。Thymeleaf支持静态效果和动态效果,在没有动态数据的时候,会展示静态效果模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档就是将模板文件和数据通过模板引擎生成一个HTML代码**常见的模板引擎有:jsp、freemarker、velocity、thymeleafThymeleaf默认写的位置是在templates这个目录下面Thymeleaf官网:https://www.thymeleaf.org/

    
      org.springframework.boot
      spring-boot-starter-thymeleaf
    
    Thymeleaf默认的视图路径是:/ resources/templates,在这个目录下面创建html并引入thymeleaf

    xmlns:th=“http://www.thymleaf.org”>

    基本语法

    ${域属性名}:获得request域中的域属性值并显示
    ${session.域属性名}: 获得session域中的域属性值并显示

    < p th:text="${name}">aaa

    如果取得到数据的话,就会渲染成动态画面,否则就渲染成静态画面(只显示学生管理系统只显示学生管理系统这几个字)

    Spring Boot怎么整合Thymeleaf

    th:text文本替换

    Tom

    th:if和th:unless文本替换

    使用th:if和th:unless属性进行条件判断,th:unlessth:unless刚好相反,只有表达式条件不成立才会显示内容

    =18}">成年
    =18}">未成年

    th:each foreach循环

    
    
    
        
        Title
        
    
    
        学生管理系统
        
            
                
                    序号
                    姓名
                    年龄
                    性别
                    班级
                    生日
                    操作
                
            
            
                
                    1
                    aa
                    22
                    男
                    计科1班
                    2022-2-3
                    
                        删除
                    
                
            
        
    
    

    Spring Boot怎么整合Thymeleaf

    th:href和@{}链接表达式

    
    编辑学生1
    
    
    编辑学生2
    
    
    编辑学生3

    th:switch和th:case

    
      班长
      团支书
      学委
      其他
      
    

    thymeleaf默认给变量名+Stat的状态

    如果没有显示设置状态变量,thymeleaf会默认给一个变量名+Stat的状态

    
      
      
          
    

    th:id、th:value、th:checked等(和form表单相关)

    th:object可以定义对象属性
    *{}可以和th:object配合使用,可以取出对象中的属性

    #dates.format()可以用来格式化日期格式
     
            编号:
            姓名:
            年龄:
            性别:男
            性别:女
            生日:
                 

    整合Thymeleaf

    基本配置

     创建项目的时候,记得在模板引擎中勾选Thymeleaf

    Spring Boot怎么整合Thymeleaf

    在pom.xml中把MySQL驱动的作用域删除
    然后我们这里使用druid连接池,所以需要在pom文件导入相关依赖

     
                com.alibaba
                druid-spring-boot-starter
                1.2.11
            

    然后我们需要在全局配置文件application.properties中进行相关配置

    # 指定Mybatis的Mapper接口的xml映射文件的路径
    mybatis.mapper-locations=classpath:mapper/*xml
    # MySQL数据库驱动
    #这个驱动也可以省略,可以根据使用的MySQL自动加载相应的驱动
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    # 数据源名称
    spring.datasource.name=com.alibaba.druid.pool.DruidDataSource
    # 数据库连接地址
    spring.datasource.url=jdbc:mysql://localhost:3306/school?serverTimezone=UTC&zeroDateTimeBehavior=convertToNull
    # 数据库用户名和密码
    spring.datasource.username=root
    spring.datasource.password=a87684009.
    # 设置日志级别
    logging.level.com.zyh.springboot=debug
    # 开启mybatis驼峰命名规则自动转换功能
    mybatis.configuration.map-underscore-to-camel-case=true

    数据库准备 准备好数据库中表所对应的实体类,以及三层结构

    Spring Boot怎么整合Thymeleaf

    Spring Boot怎么整合Thymeleaf

    @Data
    public class Stu {
        private Integer id;
        private String name;
        private Integer age;
        private Boolean gender;
        private Integer cid;
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date birth;
    }

    三层架构

    Mapper

    @Mapper
    public interface StuMapper {
        /**
         * 查询所有学生信息
         * @return
         * @throws Exception
         */
        @Select("select * from stu")
         List queryAllStu() throws Exception;
    }

    Service

    public interface StuService  {
        /**
         * 查询所有学生信息
         * @return
         */
        List queryAllStu() throws Exception;
    }

    Service的实现类

    @Service
    public class StuServiceImpl implements StuService {
        @Autowired
        private StuMapper stuMapper;
        @Override
        public List queryAllStu() throws Exception {
             return stuMapper.queryAllStu();
        }
    }

    thymeleaf

    
    
      
        
        Title
      
      
        

    学生管理系统

        aaaa   

    Controller

    @Controller
    @RequestMapping("/stu")
    public class StuController {
        @Autowired
        private StuService stuService;
        /**
        * 显示学生管理系统的画面
        * @return
        */
        @RequestMapping("/stusUi")
        public String stusUi(){
            return "stus";
        }
    }

    Spring Boot怎么整合Thymeleaf

    Spring Boot怎么整合Thymeleaf

    Spring Boot怎么整合Thymeleaf

    然后我们先准备好页面

    
    
    
        
        Title
        
    
    
    学生管理系统
    
        
        
            序号
            姓名
            年龄
            性别
            班级
            生日
            操作
        
        
        
        
            1
            aa
            22
    
            男
            女
            计科1班
           2022-2-3
            
                
                删除
            
        
        
    
    
    

    Spring Boot怎么整合Thymeleaf

    当我们点击删除的时候,后端要根据前端传过来的id来从数据库中删除对应的数据。这里我们先按照我们之前学的时候,熟悉的方法来完成,到后面的时候,会详细讲前后端分离开发

    删除操作

    Controller(之前的方法这里没有粘贴出来,不然代码太多了)

    @Controller
    @RequestMapping("/stu")
    public class StuController {
        @Autowired
        private StuService stuService;
       
        /**根据id删除数据
         * http://localhost:8080/stu/delete?id=10
         * @return
         */
        @RequestMapping("/delete")
        public String deleteById(@RequestParam("id") Integer id){
            try {
                stuService.deleteByid(id);
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println(id);
            return "redirect:/stu/stusUi";
        }
    
    
      }

    Service

    public interface StuService  {
        /**
         * 查询所有学生信息
         * @return
         */
        List queryAllStu() throws Exception;
    
        void deleteByid(Integer id);
    }

    Service实现类

    @Service
    public class StuServiceImpl implements StuService {
        @Autowired
        private StuMapper stuMapper;
        @Override
        public List queryAllStu() throws Exception {
             return stuMapper.queryAllStu();
        }
    
        /**
         * 根据id删除数据
         * @param id
         */
        @Override
        public void deleteByid(Integer id) throws Exception {
            stuMapper.deleteById(id);
        }
    }

    Mapper

    @Mapper
    public interface StuMapper {
        /**
         * 查询所有学生信息
         * @return
         * @throws Exception
         */
        @Select("select * from stu")
         List queryAllStu() throws Exception;
        @Delete("delete from stu where id=#{id}")
        void deleteById( Integer id);
    }

    把编号为8的数据删除

    Spring Boot怎么整合Thymeleaf

    编辑操作

    页面stus.html

    
    
    
        
        Title
        
    
    
    学生管理系统
    
        
        
            序号
            姓名
            年龄
            性别
            班级
            生日
            操作
        
        
        
        
            1
            aa
            22
    
            男
            女
            计科1班
             2022-2-3
            
    
    
                
                删除
                编辑
            
        
        
    
    
    
    

    页面 stu-edit.html

    
    
      
        
        编辑画面
      
      
        编辑学生信息
        
          学号:

          姓名:

          年龄:

          性别:男       女

          班级:

          生日:

                  

    Controller

    /**
         * 根据id来修改数据
         * 我们首先得先根据id把数据查询出来,然后把数据展示出来
         * 用户再进行编辑,用户编辑完并且提交以后,跳转到学生管理系统画面,展示所有数据
         * @return
         */
        @RequestMapping("/edit")
        public String edit(@RequestParam("id") Integer id,Model model){
            System.out.println("id"+id);
            try {
                Stu stu=stuService.queryById(id);
                model.addAttribute("stu",stu);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return "stu-edit";
        }

    Service

    public interface StuService  {
        /**
         * 查询所有学生信息
         * @return
         */
        List queryAllStu() throws Exception;
    
        /**
         * 根据id来删除学生信息
         * @param id
         * @throws Exception
         */
        void deleteByid(Integer id) throws Exception;
    
        /**
         * 根据id来查询对应学生信息
         * @param id
         * @return
         * @throws Exception
         */
        Stu queryById(Integer id) throws Exception;
    }

    Service实现类

    @Service
    public class StuServiceImpl implements StuService {
        @Autowired
        private StuMapper stuMapper;
        @Override
        public List queryAllStu() throws Exception {
             return stuMapper.queryAllStu();
        }
    
        /**
         * 根据id删除数据
         * @param id
         */
        @Override
        public void deleteByid(Integer id) throws Exception {
            stuMapper.deleteById(id);
        }
    
        @Override
        public Stu queryById(Integer id) throws Exception {
            return stuMapper.queryById(id);
        }
    }

    Mapper

    @Mapper
    public interface StuMapper {
        /**
        * 查询所有学生信息
        * @return
        * @throws Exception
        */
        @Select("select * from stu")
        List queryAllStu() throws Exception;
        @Delete("delete from stu where id=#{id}")
        void deleteById( Integer id);
        @Select("select * from stu where id=#{id}")
        Stu queryById(Integer id) throws Exception;
    }

    Spring Boot怎么整合Thymeleaf

    比如在序号为4中,点击编辑

    Spring Boot怎么整合Thymeleaf

    用户登录

    登录页面:

    
    
    
        
        Title
    
    
        

    用户登录

                 账号:

            密码:

                 

    因为需要判断用户是否存在,这是从数据库进行查询的,所以要准备对应的管理员表

    # 创建管理员表
    CREATE TABLE admin(
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	username VARCHAR(20),
    	`password` VARCHAR(20)
    ); 
    
    INSERT INTO admin VALUES
    	(DEFAULT,'aaa',111),
    	(DEFAULT,'bbb',222),
    	(DEFAULT,'ccc',333);
    # 查询测试
    SELECT * FROM admin;	

    准备对应的实体类

    @Data
    public class Admin {
        private String username;
        private String password;
    }

    Controller

    @Controller
    @SessionAttributes(names = {"admin"})
    public class AdminController {
        @Autowired
        private AdminService adminService;
    
        /**
         * 显示登录页面
         * @return
         */
        @RequestMapping(value = "/loginUi")
        public String loginUi(){
            return "login";
        }
        @RequestMapping(value = "/login",method = RequestMethod.POST)
        public String login(String username, String password, Model model){
            try {
                Admin admin = adminService.login(username, password);
                //用户名存在说明登录成功
                if (admin!=null){
                    //存放到session域中
                    model.addAttribute("admin",admin);
                    return "redirect:/stu/stusUi";
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "redirect:/loginUi";
        }
    
    }

    Service

    public interface AdminService {
        Admin login(String username,String password) throws Exception;
    }

    Service对应的实现类

    @Service
    public class AdminServiceImpl implements AdminService {
        @Autowired
        private AdminMapper adminMapper;
        @Override
        public Admin login(String username, String password) throws Exception {
            return adminMapper.queryByUsernameAndPassword(username,password);
        }
    }

    Mapper

    @Mapper
    public interface AdminMapper {
        @Select("select * from admin where username=#{username} and password=#{password}")
        Admin queryByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
    }

    Spring Boot怎么整合Thymeleaf

    Spring Boot怎么整合Thymeleaf

    
    
    
        
        Title
        
    
    
        学生管理系统
        用户名
        登录
        注销用户
    
        
        
            序号
            姓名
            年龄
            性别
            班级
            生日
            操作
        
        
        
        
            1
            aa
            22
    
            男
            女
            计科1班
            2022-2-3
            
    
    
                
                删除
                编辑
            
        
        
    
    
    
    

    Spring Boot怎么整合Thymeleaf

    Spring Boot怎么整合Thymeleaf

    Spring Boot怎么整合Thymeleaf

    用户注销

    注销的话,我们把session域中的用户对象取消,然后这个时候就得重新登录,应该要跳转到登录画面

    @RequestMapping("/logout")
        public String logout(HttpSession session){
            session.removeAttribute("admin");
            return "redirect:/loginUi";
        }

    Spring Boot怎么整合Thymeleaf

    点击注销用户

    Spring Boot怎么整合Thymeleaf

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    上一篇: 怎么在SpringBoot中整合ActiveMQ
    下一篇: 怎么用Springboot+vue实现图片上传至数据库并显示
    相关文章 更多
    springBoot项目常用目录有哪些
    springBoot项目常用目录有哪些

    springBoot项目常用目录springBoot项目的目录结构及名规范介绍基于SpringBoot开发时的目录结构及命名规范,通过介绍能够为你解决,在实际项目中如何规划目录结构?如何命名目录更规范?各个目录分别代表什么含义?等三个问题。目录说明servicex//项目名|-admin-ui//管理服务前端代码(一般将UI和SERVICE放到一个工程中,便于管理)|-servicex-auth//模块1|-servicex-common//模块2|-servicex-gateway//模块3|-serv

    解析SpringBoot和SpringMVC之间的异同
    解析SpringBoot和SpringMVC之间的异同

    解析SpringBoot和SpringMVC之间的异同SpringBoot和SpringMVC是Java领域中非常重要的开发框架。虽然它们都属于Spring框架的一部分,但是在使用和功能上有一些明显的区别。本文将对SpringBoot和SpringMVC进行比较,解析它们之间的异同。首先,让我们来了解一下SpringBoot。SpringBo

    探索SpringCloud和SpringBoot在微服务领域的不同应用方式
    探索SpringCloud和SpringBoot在微服务领域的不同应用方式

    近年来,随着云计算和分布式架构的兴起,微服务架构的应用越来越广泛。而SpringCloud和SpringBoot作为Java开发中的两个重要框架,对于微服务的实现起到了重要的作用。然而,很多人对于它们在微服务领域的不同应用方式还存在一定的疑惑。本文将从不同的角度探索SpringCloud和SpringBoot在微服务中的应用方式。首先,我们来了解一下Spri

    SpringBoot和SpringMVC有何区别?
    SpringBoot和SpringMVC有何区别?

    SpringBoot与SpringMVC的不同之处在哪里?SpringBoot和SpringMVC是两个非常流行的Java开发框架,用于构建Web应用程序。尽管它们经常分别被使用,但它们之间的不同之处也是很明显的。首先,SpringBoot可以被看作是一个Spring框架的扩展或者增强版。它旨在简化Spring应用程序的初始化和配置过程,以帮助开发人

    比较SpringBoot和SpringMVC的异同
    比较SpringBoot和SpringMVC的异同

    SpringBoot和SpringMVC都是Java开发中常用的框架,但它们之间有一些明显的差异。本文将探究这两个框架的特点和用途,并对它们的差异进行比较。首先,我们来了解一下SpringBoot。SpringBoot是由Pivotal团队开发的,它旨在简化基于Spring框架的应用程序的创建和部署。它提供了一种快速、轻量级的方式来构建独立的、可执行

    SpringBoot与SpringMVC的不同点是什么?
    SpringBoot与SpringMVC的不同点是什么?

    SpringBoot和SpringMVC是Java开发中常用的两个框架,它们都是由Spring框架所提供的,但在功能和使用方式上有着一些区别。本文将分别介绍SpringBoot和SpringMVC的特点和区别。一、SpringBoot的特点:简化配置:SpringBoot通过约定优于配置的原则,大大简化了项目的配置过程。它可以自动配置项目所需要的参数,开发人

    比较和选择指南:SpringCloud与SpringBoot的功能比较
    比较和选择指南:SpringCloud与SpringBoot的功能比较

    SpringCloud和SpringBoot是目前Java领域中最热门的开源框架,它们分别提供了一套完善的微服务架构和快速构建应用程序的解决方案。本文将对它们的功能进行比较,并给出选择指南,以帮助读者了解它们的优势和适用场景。SpringBoot是一个用于开发Java应用程序的框架,它提供了一个简化的开发流程,集成了大量常用的功能和组件,减少了开发者的工作量

    SpringCloud与SpringBoot:分析它们之间的相似与不同
    SpringCloud与SpringBoot:分析它们之间的相似与不同

    深入剖析SpringCloud和SpringBoot的异同引言:在构建企业级应用程序时,Spring框架已经成为开发者们的首选。它提供了一种简单而强大的方式来构建独立于平台的应用程序。Spring框架由两个核心模块组成:SpringBoot和SpringCloud。虽然它们都可以帮助开发者快速搭建应用程序,但它们的目标和用途存在一些差异。本文将深入剖析Spr

    从架构角度看SpringCloud与SpringBoot的差异
    从架构角度看SpringCloud与SpringBoot的差异

    从架构角度看SpringCloud与SpringBoot的差异引言:在当今的互联网时代,构建分布式系统已经成为了一种必要的需求。而SpringBoot和SpringCloud正是为了满足这个需求而诞生的。尽管它们都是由Spring框架所提供的解决方案,但从架构角度来看,它们存在着一些重要的差异。本文将从架构的角度出发,对SpringBoot和SpringCl

    Java API 开发中使用 SpringBoot 的利弊分析
    Java API 开发中使用 SpringBoot 的利弊分析

    JavaAPI开发中使用SpringBoot的利弊分析随着互联网的快速发展和技术的不断更新迭代,Java技术在开发中的广泛应用引起了人们的重视。而SpringBoot作为一种微服务架构的解决方案,已经逐渐成为Java开发中的热门选择。那么,在JavaAPI开发中使用SpringBoot,到底有哪些利弊呢?下面来分析一下。利:简化开发

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。