在我们系统开发中,常常会遇到样式格式一致但内容不一致的页面,比如用户注册后发送的用户激活邮件,找回密码邮件(html格式邮件)以及商品详情页等,先看看邮件发送服务API:
@Service public class EmailServiceImpl implements EmailService { @Autowired private JavaMailSender mailSender; @Override @Async public void sendSimpleEmail(String sendTo, String subject, String content) { SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setFrom("");//发件人 mailMessage.setTo(sendTo);//收件人 mailMessage.setSubject(subject);//邮件主题 mailMessage.setText(content);//邮件内容 mailSender.send(mailMessage);//发送该邮件 } @Override @Async public void sendMimeMessageSend(String sendTo, String subject, String content) { MimeMessage message = mailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message,true,"UTF-8"); helper.setFrom(""); helper.setTo(sendTo); helper.setSubject(subject); helper.setText(content,true); mailSender.send(message); } catch (MessagingException e) { e.printStackTrace(); } } }
当用户注册成功后我们需要给用户发送一封账号激活邮件
上面激活邮件中(很明显是一封HTML格式的邮件),除了红色框住的部分(动态渲染部分),其余部分内容样式都是一样的,针对这样的内容,我们一般做成一个公共模板,动态内容通过添加给模板的context使用thymeleaf的表达式进行获取渲染,现摘取出动态渲染部分:
<span class="cntext" th:inline="text" th:inline="text">[[${user.username}]]</span><br> 您好!感谢您对XXX的信任与支持!<br> <span class="cntext"> <strong>点击下面链接激活账号</strong></span>:<br/> <a th:href="@{http://192.168.138.128/portal/user/active(username=${user.username}&code=${user.password})}" th:text="|http://192.168.138.128/portal/user/active?username=${user.username}&code=${user.password}|"> </a> <br/>
在发送邮件时不能直接发送html(模板)文件,需要将模板渲染后解析成字符串内容进行发送,如何解析呢,springboot中添加spring-boot-starter-thymeleaf依赖后,springboot会自动注入
SpringResourceTemplateResolver(模板解析器),SpringTemplateEngine(模板引擎),ThymeleafViewResolver(thymeleaf视图解析器)等对象,
我们使用模板引擎就可以将模板解析成字符串以及生成文件等
@Service @Transactional public class BuyerServiceImpl implements BuyerService { @Autowired private BuyerRepository repository; @Autowired private EmailService emailService; @Autowired private TemplateEngine templateEngine; @Override public void registe(Buyer buyer) { //用户名不存在 if (!checkUsername(buyer.getUsername())) { //MD5加密 buyer.setPassword(MD5.MD5Encode(buyer.getPassword())); repository.save(buyer); //解析邮件模板并绑定变量参数 var context = new Context(); context.setVariable("user", buyer); var content = templateEngine.process("mailContent", context); //异步发送电子邮件 emailService.sendMimeMessageSend(buyer.getEmail(), "账户激活", content); } } }
生成新的文件,如商品详情页需要生成详情页的静态html文件,只需指定特定的writer就可以了,比如
var realpath = servletContext.getRealPath("/product"); var file = new File(realpath); if(!file.exists()) file.mkdirs(); var htmlFile = new File(file,info.getCode() + ".html"); //productview为模板名称 templateEngine.process("productview",context,new FileWriter(htmlFile));
就会在自己的容器中指定位置生成相应的html文件,当然这个就不能使用springboot默认提供的容器,我们需要对器进行排除
providedCompile("org.springframework.boot:spring-boot-starter-tomcat:2.0.3.RELEASE")
排除后我们的war部署在指定的服务器中,服务器需要启动spring boot
/** * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法 */ public class SpringBootStartApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意这里要指向原先用main方法执行的Application启动类 return builder.sources(ItemApplication.class); } } @SpringBootApplication public class ItemApplication { public static void main(String[] args) { SpringApplication.run(ItemApplication.class,args); } }
相关推荐
Thymeleaf则是一个流行的服务器端模板引擎,它允许开发者使用HTML来编写视图,并在服务器端解析这些模板,生成动态内容。这篇博文将深入探讨如何在Spring MVC和Spring Boot中集成和使用Thymeleaf。 首先,Thymeleaf...
《Spring Boot 2+Thymeleaf企业应用实战》是杨恩雄编著的一本面向Java Web开发的技术书籍,这本书籍主要介绍了Spring Boot框架及其与Thymeleaf模板引擎的结合使用。内容覆盖了从Spring Boot和Spring MVC基础,到...
Spring Boot简化了Spring的配置,而Thymeleaf则是一个功能强大的服务器端模板引擎,为HTML页面提供了动态数据绑定和表达式语言。 首先,Spring Boot的核心特性包括自动配置、内嵌Web服务器(如Tomcat)以及起步依赖...
Spring Boot作为现代化的Java应用开发框架,极大地简化了配置和启动流程,而Thymeleaf则是一个现代的服务器端JavaScript模板引擎,主要用于生成HTML。Bootstrap则为前端界面设计提供了强大的支持,它是一个流行的...
5. **Spring Boot与Thymeleaf的数据绑定**:通过`Model`对象,可以在控制器中向视图传递数据,Thymeleaf模板可以使用这些数据进行渲染。例如,`th:text="${myVariable}"`会显示控制器中传递的`myVariable`值。 6. *...
然后,在Spring Boot的主类(通常带有`@SpringBootApplication`注解)或者一个控制器类(使用`@RestController`或`@Controller`注解)中,注入Thymeleaf的`TemplateEngine`,并创建一个视图解析方法: ```java ...
1. **模板引擎集成**:Spring Boot 默认已经集成了 Thymeleaf,只需在配置文件中声明视图解析器即可。 2. **视图解析**:视图解析器会根据逻辑视图名(例如 "home")找到对应的模板文件(如 `src/main/resources/...
这个应用可能包含了基本的Gradle构建配置,Spring Boot启动类,以及使用Thymeleaf模板引擎的视图文件。开发者可能已经配置了Spring Security来保护应用的某些部分。通过分析`MyFirstApp`的源代码和相关配置,我们...
### Spring Boot Thymeleaf 模板引擎详解 #### Thymeleaf 简介 Thymeleaf 是一种现代的服务器端 Java 模板引擎,它的独特之处在于支持 HTML 原型,这意味着它的文件扩展名为 `.html`,可以直接在浏览器中打开。...
Spring Boot与Kotlin结合使用Thymeleaf模板引擎渲染Web视图是一种常见的做法,尤其在构建现代化的MVC应用程序中。Thymeleaf是一个强大的、灵活的模板引擎,支持XML、XHTML和HTML5,其设计目标是提供一种在前端展示...
SpringBoot整合Thymeleaf模板是一项常见的Web开发任务,它结合了SpringBoot的便捷性和Thymeleaf的动态模板引擎,使得开发人员可以快速构建功能丰富的Web应用。下面将详细介绍这个过程及其涉及的关键知识点。 首先,...
在Spring Boot项目中,虽然可以直接使用Spring Data JPA或R2DBC进行数据访问,但也可以通过配置实现对SSM的支持,以满足特定需求或兼容已有的代码库。 **项目结构与源代码** "springboot-recruit-public-master"这...
7. Thymeleaf模板引擎根据视图名称解析对应的HTML模板,结合传入的数据生成动态HTML页面。 8. Spring Boot将这个HTML页面作为响应内容返回给用户。 在项目结构中,`.gitignore`文件用于指定版本控制系统忽略的文件...
在Spring Boot项目中使用Thymeleaf作为模板引擎是目前Web开发中常见的实践之一,而Thymeleaf 3.0作为最新版本,已经广泛地集成在Spring MVC应用中,其功能和使用方式都成为开发人员必须掌握的技术要点。Thymeleaf是...
在本项目中,我们主要探讨的是如何利用Spring Boot 2.0.4版本与Thymeleaf模板引擎来实现一个包含基本CRUD操作(创建、读取、更新、删除)和分页功能的Web应用程序。Spring Boot是Spring框架的一个简化版,它提供了...
这个项目是一个采用Java技术栈,融合了传统的SSM(Spring、SpringMVC、MyBatis)框架与Spring Boot微服务框架,以及Thymeleaf模板引擎构建的论坛社区网站。它展现了在现代Web开发中如何整合不同的技术组件来实现一个...
Thymeleaf则是一个现代服务器端HTML模板引擎,它能够处理XML、HTML、JavaScript等格式的文档,尤其适用于Web应用程序的视图层。本案例将详细讲解如何将SpringBoot与Thymeleaf进行整合,构建一个完整的Web应用。 ...
Thymeleaf与Spring MVC结合,可以在控制器中设置模型数据,然后在视图层使用Thymeleaf模板展示。 6. **Thymeleaf的布局功能**:Thymeleaf提供了一种叫做"布局分发器"的机制,允许我们创建一个主布局,然后其他页面...
总结来说,结合Spring Boot的MultipartFile接口和Thymeleaf的模板引擎,我们可以轻松创建一个文件上传系统。通过合理的配置,可以控制文件上传的大小限制,防止系统被恶意文件上传攻击。同时,对于大文件上传,还...
同时,Spring Boot还支持其他模板引擎,如FreeMarker或Mustache,你可以根据项目需求选择合适的模板技术。此外,Thymeleaf也支持国际化、条件语句、循环等高级特性,让动态页面更加灵活和强大。