Spring为FreeMarker提供了一个FreeMarkerConfigurer类,通过此类可方便地创建FreeMarker的基础环境,Spring提供FreeMarkerTemplateUtils工具类来完成解析模板的任务。
spring配置文件中bean的配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:annotation-config /> <context:component-scan base-package="com.chinacache" /> <bean id="fm" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="classpath:template"/> //模板所有目录 <property name="freemarkerSettings"> <props> <prop key="template_update_delay">3600</prop> //自动刷新 <prop key="default_encoding">UTF-8</prop> <prop key="locale">zh_CN</prop> <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop> </props> </property> </bean> </beans>
maven包
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>3.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>3.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>3.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.9</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.3</version> </dependency>
java
Map<Object, Object> map = new HashMap<Object, Object>(); map.put("buTopchannels", channel); map.put("retract", retract); map.put("OperationTime", channel.get(0).getOperationTime()); map.put("title", title); map.put("salesDirector", channel.get(0).getSalesDirector()); freemarker.template.Template mailTemplate; String content = null; try { mailTemplate = fm.getConfiguration().getTemplate("channel_mail_su.ftl"); content = FreeMarkerTemplateUtils.processTemplateIntoString(mailTemplate, map); } catch (IOException e) { e.printStackTrace(); } catch (TemplateException e) { e.printStackTrace(); }
ftl
<head>
<style type="text/css">
table {border:solid #add9c0; border-width:0px 1px 1px 0px;
}
td {border:solid #add9c0; border-width:0px 1px 1px 0px; padding:10px 0px;
}
</style>
</head>
<body>
Hi all:${retract}操作时间:${OperationTime}${retract} 公司转出/测试频道带宽总量大约为[${allBandwidth}],超过[${thresholdValue}]的占其中的[${allpercent}]${retract}[${bu}转出/测试频道带宽总量大约为[${buBandwidth}],超过[${thresholdValue}]的占其中的[${bupercent}]<br> ${retract}<font color='red'>第一负责人是:${DutyAdvocate}</font><br>${retract}<font color='red'>备份负责人是:${DutyBack}.</font><br>前[${buTopSize}]的分别是${retract}
<table >
<thead>
<tr>
<th>bu</th>
<th>频道</th>
<th>用户</th>
<th>${title}时间</th>
<th>峰值</th>
<th>流量</th>
<th>销售</th>
<th>客服</th>
<th>频道状态</th>
</tr>
</thead>
<tbody>
<#list buTopchannels as channel>
<tr>
<td>${channel.bu}</td>
<td>${channel.channelName}</td>
<td>${channel.customerName}</td>
<td>${channel.channelTransferTime}</td>
<td>${channel.maxBandwidthStr}</td>
<td>${channel.fluxStr}</td>
<td>${channel.salesDirector}</td>
<td>${channel.customerDirector}</td>
<td>${channel.state}</td>
</tr>
</#list>
</tbody>
</table>
<br><br><br><br><br>如有程序bug请与snp[高保宗]联系
</body>
</html>
转自其它博客的:
Spring为FreeMarker提供了一个FreeMarkerConfigurer类,通过此类可方便地创建FreeMarker的基础环境,Spring提供FreeMarkerTemplateUtils工具类来完成解析模板的任务。
下面以用户注册成功后发送的模板文件registerUser.ftl,将该文件放在src/mailTemplate下:
6.1 模板文件
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html;charset=utf8">
- </head>
- <body>
- 恭喜您成功注册!您的用户名为:<font color='red' size='30'>${username}</font>
- </body>
- </html>
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html;charset=utf8">
- </head>
- <body>
- 恭喜您成功注册!您的用户名为:<font color='red' size='30'>${username}</font>
- </body>
- </html>
上面的${username}标签代表一个可被替换的动态属性。FreeMarker模板的标签支持级联属性,如${user.Id}则表示user对象的Id属性。
6.2 使用FreeMarker模板技术构造邮件内容
6.3 applicationContext.xml配置文件
- <bean id="freeMarker" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
- <property name="templateLoaderPath" value="classpath:mailTemplate"/><!--指定模板文件目录-->
- <property name="freemarkerSettings"><!-- 设置FreeMarker环境属性-->
- <props>
- <prop key="template_update_delay">1800</prop><!--刷新模板的周期,单位为秒-->
- <prop key="default_encoding">UTF-8</prop><!--模板的编码格式 -->
- <prop key="locale">zh_CN</prop><!-- 本地化设置-->
- </props>
- </property>
- </bean>
- <bean id="templateEmail" class="com.bb.spring.email.TemplateEmailService">
- <property name="sender" ref="mailsender"></property>
- <property name="freeMarkerConfigurer" ref="freeMarker"></property>
- </bean>
在配置文件中已设置好模板目录,所以可在类中直接用模板文件名来定位模板文件。模板文件用UTF-8编码格式,避免中文乱码。通过设置template_update_delay属性,可让FreeMarker定期刷新模板,从而使应用程序在不重启下更新模板。
至此,可以运行TemplateEmailService类发送邮件,实验表明"yefriend"将替换${username}。
下面是自己的扩展:
实际项目中我们想要动态的指定数据源和模版,就需要如下构造获取方法:
这样就可以如下获取数据:
如果发件人固定,我们还可以让TemplateEmailService 继承org.springframework.mail.SimpleMailMessage这个类,以使用其中的From或to属性
我的类:
- public class SimpleMailSender extends SimpleMailMessage {
- private JavaMailSender sender;
- private MimeMessageHelper messageHellper;
- private FreeMarkerConfigurer freeMarkerConfigurer;
使用:
xml配置:
- <bean id="mailSender"
- class="com.techson.himsnanhwa.admin.mail.SimpleMailSender">
- <property name="javaMailSender"><ref bean="sender"/></property>
- <property name="freeMarkerConfigurer" ref="freeMarker"></property>
- <property name="from">
- <value>wy@techson.com.hk</value>
- </property>
- <property name="to">
- <value>ming@techson.com.hk</value>
- </property>
- </bean>
- <!--配置邮件模板-->
- <bean id="freeMarker" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
- <property name="templateLoaderPath" value="/mailTemplete"/>
- <property name="freemarkerSettings">
- <props>
- <prop key="template_update_delay">15</prop>
- <prop key="default_encoding">UTF-8</prop>
- <prop key="locale">zh_CN</prop>
- </props>
- </property>
- </bean>
- <bean id="sender"
- class="org.springframework.mail.javamail.JavaMailSenderImpl">
- <property name="host">
- <value>192.168.108.6</value>
- </property>
- <property name="javaMailProperties">
- <props>
- <prop key="mail.smtp.auth">true</prop>
- <prop key="mail.smtp.timeout">25000</prop>
- </props>
- </property>
- <property name="username">
- <value>wy</value>
- </property>
- <property name="password">
- <value>wy</value>
- </property>
- </bean>
。。。
发送带附件的邮件:
发送成功后可使用
- fds.getFile().delete();
删除文件!
或:
。。。
相关推荐
Spring核心配置文件xml模板,完整的命名空间和模式文档URI引用对。
Spring.xml模版
本文将详细介绍关于Spring XML配置文件的12个最佳实践,这些实践不仅有助于提高配置文件的可读性和可维护性,还能帮助开发者更好地理解和使用Spring框架。 #### 最佳实践 1. **避免使用自动绑定(Autowiring)** ...
Spring 和 MyBatis 是两种非常流行的 Java 开发框架,它们在企业级应用中广泛使用。Spring 是一个全面的后端开发框架,提供了依赖注入、面向切面编程、事务管理等功能,而 MyBatis 是一个轻量级的持久层框架,专注于...
Maven 可以与 Spring 框架的模板引擎配合使用,如 Thymeleaf 或 FreeMarker,这些模板引擎允许将业务逻辑与视图层分离,提高代码可读性和可维护性。在 Maven 中配置这些模板引擎的插件,可以实现自动化编译和部署...
在Java Web开发中,Spring MVC和Spring Boot框架是广泛使用的工具,它们提供了高效且灵活的构建Web应用的方式。Thymeleaf则是一个流行的服务器端模板引擎,它允许开发者使用HTML来编写视图,并在服务器端解析这些...
《ActiveMQ 5.5.1与Spring模板的深度整合》 在当今的企业级应用开发中,消息中间件起着至关重要的作用,它能够有效地解耦应用程序,提高系统的可扩展性和可靠性。Apache ActiveMQ作为开源社区中最受欢迎的消息...
Spring Schedule模块提供了强大的定时任务支持,既可以通过注解的方式,也可以通过XML配置来实现。本文将深入探讨如何使用`@Scheduled`注解和XML配置来创建和管理定时任务。 首先,我们要引入Spring Schedule的依赖...
spring4-mvc-gradle-xml-hello-world, Gradle + spring 4 MVC Hello World 示例( XML ) Gradle --spring-4 MVC Hello Worldspring 4 MVC + JSP视图+ XML配置模板,使用Gradle构建工具。使用的###1. 技术Gradle 2.0...
5. **事务管理**:Spring提供了声明式事务管理,可以在XML配置中定义`PlatformTransactionManager`,如`DataSourceTransactionManager`,并使用`@Transactional`注解在方法级别声明事务边界。 6. **增删改查操作**...
Java注释和XML模板在软件开发中扮演着重要的角色,特别是在大型项目中,它们有助于提高代码的可读性、可维护性和团队间的协作效率。Java注释提供了对代码功能、用途和逻辑的清晰解释,而XML模板则常用于配置、数据...
8. **部署与运行**:Bo-Blog spring模板需要在支持Java的Web服务器上运行,如Tomcat或Jetty,开发者可能需要了解如何配置服务器以部署和运行此应用。 通过整合Spring框架,Bo-Blog spring模板不仅提供了更高效的...
通过运行这个测试,你可以实际体验到Spring模板和连接池带来的便利性和性能提升。 总结起来,"springsimple_jdbc"的主题涵盖了Spring框架下JDBC操作的简化和性能优化,主要体现在Spring的模板机制和数据库连接池的...
8. **HystrixCommand**:使用Hystrix实现的断路器,用于服务降级和熔断处理。 9. **ConfigServer**:配置中心模块,可能使用Git或Vault存储配置信息。 10. **SpringCloudBus**:用于广播配置更新和其他事件的总线...
Spring 和 MyBatis 是两个非常流行的 Java 开发框架,它们在企业级应用开发中被广泛使用。Spring 提供了一个全面的编程和配置模型,而 MyBatis 是一个优秀的持久层框架,专注于数据库操作。现在我们将深入探讨这两个...
以上就是关于Spring配置文件XML头部文件模板的实例详解,包括了普通配置文件模板和添加注解后的格式模板。希望这些内容能帮助到需要使用Spring配置的开发者,让他们更加熟悉如何利用配置文件来管理和优化Spring应用...
spring-mvc.xml
在Spring Boot项目中使用Thymeleaf,首先需要在`pom.xml`或`build.gradle`中添加Thymeleaf的依赖。接着,需要配置Thymeleaf的相关设置,例如模板文件的路径。然后,可以在控制器方法中返回一个模型AndView对象,其中...
标题中的"spring模板方法.zip"表明这是一个关于Spring框架的压缩包,特别提到了Spring Boot项目。模板方法设计模式是面向对象设计模式的一种,它在Spring框架中被广泛应用于简化代码和实现可扩展性。在Spring Boot中...
这个"spring+hibernate+struts整合开发模板"是一个完整的开发框架,可以帮助开发者快速搭建基于SSH的项目结构,提高开发效率,并且包含了验证框架的实现。 **Spring框架**:Spring是一个开源的Java平台,核心功能是...