SpringBoot项目实战杂货铺——Thymeleaf模板引擎在项目中的实际应用(八)

x33g5p2x  于2021-11-30 转载在 Spring  
字(4.1k)|赞(0)|评价(0)|浏览(551)

一、Thymeleaf简介

在SpringBoot项目中是推荐使用Thymeleaf模板引擎的,它为我们的前后端的分离奠定了基础,使用起来不仅方便而且简单。在SpringBoot的火爆程度下,掌握使用Thymeleaf也是我们学习中不可或缺的一个环节。

本次更新中更新了个人中心,可支持个人信息修改以及用户头像的修改,接下来我们就来看看Thymeleaf在实战项目杂货铺的个人中心里具体是怎么使用的。

二、引用

在pom.xml文件中引入。

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

在pom文件中直接引入即可。

三、后台数据准备

我们在后台中通过查询出登录用户的个人信息后,然后将登录对象返回至我们所跳转的页面,当然没有跳转页面也是可行的。

以下获取登录用户的账号是使用SpringSecurity的方法,对SpringSecurity在项目中的如何应用有兴趣的同学可以去看看博客专栏的《杂货铺项目实战》里有详细的介绍。

  1. /** * 个人主页 * * @return */
  2. @RequestMapping("/personalPage")
  3. public String toPersonalPage(ModelMap map){
  4. // SpringSecurity获取当前登录用户ID的方法
  5. String idNumber = SecurityContextHolder.getContext().getAuthentication().getName();
  6. // 根据账号查询登录用户的信息
  7. User user = loginMapper.getPersonInfo(idNumber);
  8. // 存入ModelMap返回页面
  9. map.put("user",user);
  10. return "/personal/personalPage";
  11. }

四、前端引用

由如下Html代码可以看出,在form标签上,我们通过th:object="${user}"即可拿到上方Java代码中,在后台通过ModelMap存入的对象:map.put(“user”,user) 在这里就可以直接获取到了,我们在对应的标签上使用 th:text、th:checked、th:text…等等就可以直接获取到我们user对象中的每一个字段值。

这样写的好处就是你无需在前端界面发送一个Ajax请求去获取到相应的数据,然后再对相应的字段进行赋值操作。直接通过模板引擎就动态加载可以对相应的字段进行赋值,非常方便。

  1. <form class="layui-form" style="margin-top: 50px" th:object="${user}">
  2. <div class="layui-form-item">
  3. <label class="layui-form-label">用户名</label>
  4. <div class="layui-input-block">
  5. <input type="text" id="userName" name="userName" placeholder="最大输入长度为20" maxlength="20" required lay-verify="required" autocomplete="off" class="layui-input" th:value="${user.userName}" >
  6. </div>
  7. </div>
  8. <div class="layui-form-item">
  9. <label class="layui-form-label">账号</label>
  10. <div class="layui-input-block">
  11. <input style="background-color: #9F9F9F" type="text" id="idNumber" name="idNumber" disabled="disabled" required lay-verify="required" autocomplete="off" class="layui-input" th:value="${user.idNumber}">
  12. </div>
  13. </div>
  14. <div class="layui-form-item">
  15. <label class="layui-form-label">性别</label>
  16. <div class="layui-input-block">
  17. <input type="radio" name="sex" value="0" title="男" th:checked="${user.sex == '0'}">
  18. <input type="radio" name="sex" value="1" title="女" th:checked="${user.sex == '1'}">
  19. </div>
  20. </div>
  21. <div class="layui-form-item">
  22. <label class="layui-form-label">邮箱</label>
  23. <div class="layui-input-block">
  24. <input type="text" name="email" placeholder="最大输入长度为30" maxlength="30" required lay-verify="required" autocomplete="off" class="layui-input" th:value="${user.email}">
  25. </div>
  26. </div>
  27. <div class="layui-form-item layui-form-text">
  28. <label class="layui-form-label">个人简介</label>
  29. <div class="layui-input-block">
  30. <textarea name="personBriefly" placeholder="最大输入长度为100" maxlength="100" class="layui-textarea" th:text="${user.personBriefly}"></textarea>
  31. </div>
  32. </div>
  33. <div class="layui-form-item">
  34. <div class="layui-input-block">
  35. <button type="button" class="layui-btn" lay-submit lay-filter="updateInfo">提交修改</button>
  36. <button type="button" id="uploadPicture" class="layui-btn">更改头像</button>
  37. </div>
  38. </div>
  39. </form>

四、效果图

一、通过登录进入系统,也可以通过注册后再登录进入系统。

二、进入主页

三、点击个人中心

四、个人中心界面展示

目前涉及到的字段比较少,后续根据实际业务需求还有角色字段、资源菜单等等与实际业务场景相称匹配的字段,在后续开发中我们继续完善。

五、结语

到今天为止,我们的实战项目的基础框架原型就搭建好了,后续再将角色、资源菜单加上,就可以开始着手编写业务代码了。

对本项目感兴趣的同学或者想看看源码学习的同学,可以私聊博主源码地址,免费开源,Github和Gitee中都已经上传了完整代码。

相关文章