使用freemarker作为报文发送模版
2018-01-29 11:49
393 查看
FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言, 不是 像PHP那样成熟的编程语言。 那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。
这种方式通常被称为 MVC (模型 视图 控制器) 模式,对于动态网页来说,是一种特别流行的模式。 它帮助从开发人员(Java 程序员)中分离出网页设计师(HTML设计师)。设计师无需面对模板中的复杂逻辑, 在没有程序员来修改或重新编译代码时,也可以修改页面的样式。
下面的用法是发送报文:
1:首先需要下载freemarker包
2:freemarker模版
要发送报文,就需要报文模版,模版可以以任何后缀名结尾,常用的是.ftl结尾。
模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言, 不是 像PHP那样成熟的编程语言。 那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。
这种方式通常被称为 MVC (模型 视图 控制器) 模式,对于动态网页来说,是一种特别流行的模式。 它帮助从开发人员(Java 程序员)中分离出网页设计师(HTML设计师)。设计师无需面对模板中的复杂逻辑, 在没有程序员来修改或重新编译代码时,也可以修改页面的样式。
下面的用法是发送报文:
1:首先需要下载freemarker包
1.1:如果是maven项目,直接加入: <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.22</version> </dependency> 1.2:如果不是maven项目,直接下载freemarker.2.3.22.jar包。
2:freemarker模版
要发送报文,就需要报文模版,模版可以以任何后缀名结尾,常用的是.ftl结尾。
模版名:accountQuery.ftl 内容如下: <Finance> <Message id="${messageId}"> <AQReq id="${id}"> <version>${version}</version> <date>${date}</date> <#if extension ?? && extension != ""> <extension>${extension}</extension> </#if> </AQReq> </Message> </Finance> 新建一个templete文件夹或者包,将accountQuery.ftl放到templete下。 新建的templete放到项目目录下:src/main/resources 或 src/main/java 目录下 都可以。 最后使用方法是将模版取出转换成自己想要的数据格式。下面是将模版先转换成string类 型,然后再转换成Document:
/** * 获取模版 * @param templateFileName 模版名称必须带后缀名 * @return * @throws Exception */ public static Template getFtlTemplete(String templateFileName) throws Exception{ Configuration config = new Configuration(Configuration.VERSION_2_3_22); //如果当前类不是static,直接使用this.getClass() config.setClassForTemplateLoading(当前类.class, templatePath); config.setDefaultEncoding("UTF-8");//要UTF-8,不然中文乱码 return config.getTemplate(templateFileName); } /** * 将模版转换成string * @param templateFileName * @param paramMap 模版中的变量赋值 * @return * @throws Exception */ public static String getFtlString(String templateFileName,Map<String, String> paramMap) throws Exception{ return FreeMarkerTemplateUtils.processTemplateIntoString(getFtlTemplete(templateFileName), paramMap); } /** * 获取document * @param sendReq * @param paramMap * @param templateFileName * @return * @throws Exception */ public static Document getDocument(String sendReq,Map<String, String> paramMap,String templateFileName) throws Exception{ return getDocument(getFtlString(templateFileName,getRequestStringMap(paramMap, sendReq))); } /** * xml格式的String转Document * @param ftl * @return * @throws Exception */ public static Document getDocument(String ftl) throws Exception{ DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); docBuilderFactory.setNamespaceAware(true); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); Document doc=docBuilder.parse(new InputSource(new StringReader(ftl))); return doc; } /** * 设置公共报文参数 * @param map * @param sendReq * @return */ public static Map<String, String> getRequestStringMap(Map<String, String> map,String sendReq){ map.put("messageId", "122112"); map.put("id", sendReq); map.put("version", "1.0.1"); return map; } //调用 三个参数:业务类型 变量参数 模版名称 BankHelper.getDocument("QUERY", paramMap, "accountQuery.ftl")
相关文章推荐
- Java使用freemarker模版发送包含图片邮件
- 使用FreeMarker邮件模版来发送邮件
- 使用FreeMarker邮件模版来发送邮件
- 使用FreeMarker邮件模版来发送邮件
- 使用FreeMarker邮件模版来发送邮件
- springboot如何使用Freemarker模版引擎
- java使用POST发送soap报文请求webservice返回500错误解析
- 使用Word编辑生成freemarker 模版.ftl文件
- Android作为服务器通过USB使用Socket协议向PC客户端发送文件
- SpringBoot使用FreeMarker模板发送邮件
- SpringMVC + Freemarker 模版的使用
- 使用Spring发送基于freemarker模板的邮件
- 压力测试工具 jmeter 使用发送json报文
- 使用 django channels 作为邮件发送队列
- 沫沫金:使用Java模版引擎FreeMarker生成复杂的Word文档
- 使用struts2 做客户端校验时抛出freemarker模版错误异常的处理
- java使用POST发送soap报文请求webservice返回500错误解析
- 使用dev_queue_xmit发送定制报文
- Spring Boot 学习11--使用模版Thymeleaf- freemarker
- html 如何引入一个公共的头部和底部(不使用模版引擎如jsp、freemarker、velocity的方式)