`

FreeMarker,,Velocity解析工具类的模板应用

    博客分类:
  • Java
阅读更多

工程中使用了邮件和短信模板,,

 

内容使用的html代码, vm文件。

 

可以使用Spring 的解析工具解析,替换其中的动态数据 。

 

FreeMarker解析:

 

	@Autowired
	private FreeMarkerConfigurer freeMarkerConfigurer;


   public String getFtlText(Map data,String ftl){   
       String htmlText=null;
        
       Template tpl    = null;   
       try {   
           tpl =  freeMarkerConfigurer.getConfiguration().getTemplate(ftl);//加载资源文件   
           htmlText = FreeMarkerTemplateUtils.processTemplateIntoString(tpl, data);//加入map到模板中 对应${content}   
       } catch (IOException e) {              
           e.printStackTrace();   
       } catch (TemplateException e) {            
           e.printStackTrace();   
       }   
       return htmlText;           
   }  

 

注: 其中的 freeMarkerConfigurer 可以在Spring中配置如下:

 

	<bean id="freeMarkerConfigurer"  
        class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">   
        <property name="templateLoaderPaths"  
            value="classpath:template/sms" />   
        <property name="freemarkerSettings">   
            <props>   
                <prop key="template_update_delay">1800</prop><!-- 模板更新延时 -->   
                <prop key="default_encoding">UTF-8</prop>   
                <prop key="locale">zh_CN</prop>   
            </props>   
        </property>   
    </bean>
    
 

 

 

 

 

VM 文件 :

 

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>处理中</title>
</head>
<body>
<div style="background:#F6F5F6;padding:5px;width:630px;font-size:12px;color:#2D2D2D;font-family:tahoma">
	<table style="background:#fff;width:630px;border-spacing:0;border-collapse:collapse;font-size:12px;color:#2D2D2D;font-family:tahoma">
		<tr>
			<td style="background:#FEEAC2;height:32px;line-height:32px;padding:0;">
				<table style="width:100%">
					<tr>
.................此处几乎不使用图片,且样式全部套在标签内.................
....................................
..................................
<tr>
						<td style="padding-bottom:10px;">很高兴通知您以下订单已经成功提交: </td>
					</tr>
					<tr>
						<td style="padding:5px 0;font-weight:bold;">订单详情</td>
					</tr>
					<tr>
						<td style="padding:5px 0;">城市: [${hotelOrder.cityName}]</td>
					</tr>
					<tr>
						<td style="padding:5px 0;">酒店名称: ${hotelOrder.hotelName}</td>
					</tr>
					<tr>
						<td style="padding:5px 0;">入住日期:${hotelOrder.strEnterDate}</td>
					</tr>
					<tr>
						<td style="padding:5px 0;">入住天数: ${hotelOrder.leaveDay} </td>
					</tr>

.................................................
.................................................
.................................................

 

 

解析的方法: 

 

	data.put("module", 2);
	data.put("orderNo", orderNo);
	data.put("email", email);

	data.put("hotelOrder", hotelOrder);
	
	getContent(data,templateId + ".vm");
	
	

	public String getContent(Map dataMap,String vmString) {
		String body = getBody(dataMap, vmString);
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		try {
			response.getWriter().append(body);
			response.flushBuffer();	
		} catch (IOException e) {
			e.printStackTrace();
		}
		return NONE;
	} 
	
	public String getBody(Map<String, Object> dataMap, String tpl) {
		String body = VelocityEngineUtils.mergeTemplateIntoString(
				velocityEngine, tpl, dataMap);
		return body;
	}
	

 

 

 

 

 

分享到:
评论

相关推荐

    velocity和freemarker的比较

    以上是对Velocity和FreeMarker的基本介绍和比较,它们都是Java Web开发中的重要工具,理解它们的特性和应用场景有助于选择最适合项目的技术栈。对于标签“源码”和“工具”,我们可以进一步研究这两个模板引擎的源...

    freemarker&velocity的使用

    5. **模板配置**:可以通过`freemarker.cfg.properties`文件配置模板解析的全局选项,如编码、日期时间格式等。 **Velocity** Velocity是Apache软件基金会的一个项目,它的设计理念与Freemarker类似,但语法略有...

    当前流行的模板引擎效率分析(velocity,freeMarker,Smarty4j,httl)

    1. **解析速度**:这是指模板引擎处理模板并生成Java字节码的速度,这直接影响到应用的启动时间和响应时间。 2. **运行效率**:运行效率涉及模板渲染的速度,尤其是在数据量大或频繁调用的情况下。 3. **内存消耗**...

    Velocity--java的模板引擎

    Velocity允许通过自定义工具类(Velocity Tools)和宏库(Macro Library)扩展其功能。例如,可以创建自定义的函数库,方便在模板中调用复杂的功能。同时,通过合理的缓存策略和配置,可以进一步提升Velocity的性能...

    应用实例,可运行maven+springmvc+mybaits+freemarker+velocity

    这是一个基于Java技术栈的应用实例,整合了多个关键的开源框架,包括Maven、SpringMVC、MyBatis、FreeMarker和Velocity。这些技术在IT行业中广泛应用于开发企业级Web应用程序,构建高效、灵活且可维护的系统。接下来...

    velocity的所有jar包

    在使用时,通常需要将这些库添加到项目的类路径中,以便Velocity能够正确运行和解析模板。在Web应用中,这通常通过在`WEB-INF/lib`目录下放置这些JAR文件来实现。开发人员可以使用Velocity模板语言(VTL)编写模板,...

    利用freemarker制作的diamante生成器

    总结来说,“利用Freemarker制作的Diamante生成器”是一个利用Java反射和Freemarker模板技术实现的代码自动生成工具,通过解析类的元数据并结合预定义的模板,可以快速生成符合业务逻辑的代码。这种工具在大型项目或...

    nutz的freemarker视图插件

    - Nutz的MVC模式中,视图层支持多种模板引擎,包括JSP、Velocity、Freemarker等。 2. **Freemarker**: - Freemarker是一个模板语言,它与Java代码分离,使得开发者可以专注于页面布局和设计,而无需关心业务逻辑...

    Velocity java 模板

    3. **velocity工具箱(Velocity Tools)**:提供了一系列工具类,简化了在模板中处理日期、集合等操作,提高开发效率。 4. **VelocityEngine**:是Velocity的核心组件,负责解析模板、设置配置、管理上下文等任务。...

    freemarker基础

    通过`freemarker.template.Configuration`类,你可以设置Freemarker的配置,比如模板加载路径、模板语言版本、错误处理策略等。这有助于统一项目中的模板处理方式。 6. **实际应用** Freemarker广泛应用于Web开发...

    Velocity Demo

    1. **模板语言**: Velocity 使用简单的模板语言,允许开发者在模板文件中插入变量和控制结构,如 #if、#foreach 等,这些语句会被 Velocity 引擎解析并替换为对应的 Java 对象值。 2. **上下文(Context)**: 上...

    velocity教程

    Velocity与JSP、FreeMarker等其他模板引擎相比,更注重模板语言的简洁性和安全性。与JSP相比,Velocity不鼓励在模板中编写复杂的Java代码,从而降低了出错的可能性和提高了代码的可读性。 总之,Velocity是一个强大...

    使用FreeMarker生成Html静态文件

    在实际应用中,FreeMarker还可以与其他工具结合,比如Apache Velocity,它们都是模板引擎,但各有特点。FreeMarker的语法更为灵活,支持更多的控制结构,而Velocity的语法更加简洁。 关于源码分析,FreeMarker的...

    Velocity 入门

    - **FreeMarker**: FreeMarker 是另一个流行的 Java 模板引擎,它的语法比 Velocity 更为复杂,但功能更强大,适合复杂的模板逻辑。 - **JSP**: JSP 也是常见的视图技术,但它的动态代码嵌入到 HTML 中,易引发维护...

    Spring+SpringMVC+Mybatis+Velocity+Maven demo

    开发者可以通过注解来简化控制器的编写,同时Spring MVC支持多种视图技术,如JSP、FreeMarker、Velocity等。 **Mybatis**:Mybatis是一个轻量级的持久层框架,它解决了Java开发中的数据库操作问题。Mybatis通过XML...

    FreeMarker_Manual_zh_CN

    - **Velocity/Thymeleaf**: FreeMarker与类似的模板引擎相比,各有优劣,选择时需考虑项目需求和团队熟悉度。 以上是对FreeMarker的基本介绍,包括其核心概念、语法特性以及在Web应用中的使用。通过深入学习和实践...

    freemarker文档学习

    - **数据模型**:Freemarker模板中的数据来源于应用程序,如Java对象、Map或列表,它们被映射到模板变量供渲染使用。 2. **Freemarker语法** - **变量**:以`${}`包裹的表达式用于输出变量值,如`${name}`。 - *...

    FreeMarker设计指南(PDF版)

    综上所述,FreeMarker是一款功能全面且强大的模板引擎工具,不仅能够满足基本的Web页面生成需求,还提供了丰富的特性和高级功能,以适应更加复杂的应用场景。相比于Velocity等其他同类工具,FreeMarker在灵活性、...

    FreeMarker设计指南

    ### FreeMarker设计指南知识点解析 #### 一、FreeMarker概述 **FreeMarker**是一个功能强大的模板引擎,专门用于根据预定义的模板生成各种文本输出,包括但不限于HTML网页、XML文档、RTF文件甚至Java源代码等。该...

    高级Java人才培训专家-02-Freemarker.pptx

    **工作原理**:Freemarker的核心是将模板文件和数据模型结合在一起,通过解析模板中的特殊标记(如变量引用、条件判断、循环等)并替换为实际的数据值,从而生成最终的输出文本。 **示例**: ```html ... Hello ...

Global site tag (gtag.js) - Google Analytics