java中使用freemarker 读取字符串模板的例子

代码如下

 代码如下 复制代码

package com.venustech.generate;

import freemarker.cache.StringTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

public class GenerateRule {
public void generateMain() throws IOException, TemplateException {
 /* 在整个应用的生命周期中,这个工作你应该只做一次。 */
/* 创建和调整配置。 */
Configuration cfg = new Configuration();
StringTemplateLoader stringLoader = new StringTemplateLoader();
stringLoader.putTemplate("myTemplate", "rule " +
"<#if action??> " +
" ${action} " +
"</#if> " +
"<#if protocol??> " +
" ${protocol} " +
"</#if> " +
"<#if source_ip_address??> " +
" <#if source_wildcard??> " +
" source ${source_ip_address} ${source_wildcard} " +
" </#if> " +
"</#if> " +
"<#if destination_ip_address??> " +
" <#if destination_wildcard??> " +
" destination ${destination_ip_address} ${destination_wildcard} " +
" </#if> " +
"</#if> " +
"<#if operator??> " +
" <#if destination_port??> " +
" destination_port ${operator} ${destination_port} " +
" </#if> " +
"</#if>");
cfg.setTemplateLoader(stringLoader);
Template temp = cfg.getTemplate("myTemplate","utf-8");
/* 创建数据模型 */
Map root = new HashMap();
root.put("action"  ,"deny"  );
root.put("protocol" ,"udp"  );
root.put("source_ip_address"  ,"192.168.56.123"  );
root.put("source_wildcard"  ,"0.0.0.255"  );
root.put("destination_ip_address"  ,"192.168.56.123"  );
root.put("destination_wildcard"  ,"0.0.0.255"  );
root.put("operator"  ,"gt"  );
root.put("destination_port"  ,"128"  );
Writer out = new StringWriter(2048);
temp.process(root, out);
System.out.println(out.toString().replaceAll("[nr]", ""));
out.flush();
}

public static void main(String[] args) throws Exception {
GenerateRule html = new GenerateRule();
html.generateMain();
}
}

时间: 2024-12-09 13:50:24

java中使用freemarker 读取字符串模板的例子的相关文章

JAVA中获取两个字符串差异的方法

问题描述 JAVA中获取两个字符串差异的方法 求助,在编程的过程中碰到这样一个问题,有两个String字符串,然后我需要获取他们之间的差异 String s = {"12345"}; String s1 ={"123645"}; 其中这两个数组的长度可变,s是模板,所有的数组都要和这个数组比较,然后把差异的部分获取出来 所以s1可以是缺了一两个元素的数组,仅仅是单个的字符被替换了,这个可以简单的用字符数组一个一个比较获得,但是如果多一个,或者少一个,这一块我就有点不

string-关于java中String类型汉字字符串的升序问题

问题描述 关于java中String类型汉字字符串的升序问题 本人新手,遇到一个项目问题:有若干个对象,每个对象里面都有一个String类型的姓名属性,现在要求根据姓名属性的升序将这些对象排列在List集合里,问如何将String类型的汉字升序排列.求大神 解决方案 String[] strs = {""张三(Z)""李四(L)""王五(W)""}; // 定义一个中文排序器 Comparator c = Collator.g

Java中关于控制台读取数字或字符串的方法_java

Java中,int a = System.in.read();此句读取的是一个字符,然后返回的是对应字符的ASCII, 例如,控制台输入123,只读取一个字符1,对应的ASCII为49,则输出49,输入abc则读取a,对应的ASCII是97,则输出97: Scanner sc = new Scanner(System.in) int n = sc.nextInt();从控制台读取一个数. String c = sc.next();//从控制台读取字符串

详解Java中的数组与字符串相关知识_java

Java数组的定义和使用 如果希望保存一组有相同类型的数据,可以使用数组. 数组的定义和内存分配 Java 中定义数组的语法有两种: type arrayName[]; type[] arrayName; type 为Java中的任意数据类型,包括基本类型和组合类型,arrayName为数组名,必须是一个合法的标识符,[ ] 指明该变量是一个数组类型变量.例如: int demoArray[]; int[] demoArray; 这两种形式没有区别,使用效果完全一样,读者可根据自己的编程习惯选择

Java中String类(字符串操作)的10个常见问题和解决方法_java

本文介绍Java中关于String最常见的10个问题: 1. 字符串比较,使用 "==" 还是 equals() ?简单来说, "==" 判断两个引用的是不是同一个内存地址(同一个物理对象).而 equals 判断两个字符串的值是否相等.除非你想判断两个string引用是否同一个对象,否则应该总是使用 equals()方法.如果你了解 字符串的驻留 ( String Interning ) 则会更好地理解这个问题 2. 对于敏感信息,为何使用char[]要比Stri

Java中跳出循环函数break和continue使用例子

在Java中,如果想跳出for循环,一般情况下有两种方法:break和continue. break是跳出当前for循环,如下面代码所示:  代码如下 复制代码 public class RecTest {           /**      * @param args      */     public static void main(String[] args) {          for(int i=0; i< 10; i++){              if(i==5){   

Velocity 读取字符串模板生成代码

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/49428277 未经博主允许不得转载. 博主地址是:http://blog.csdn.net/freewebsys 1,遇到问题 之前使用 freeMarker 开发 cms系统,生成html. 后来页面不用jsp,开发了,换成velocity展示了. 想着生成页面也使用velocity. 但是发现读取文件的类库加载不进来. 2,解决 参考官方网站例子: http://veloc

Java中使用XML创建EMAIL模板

发送邮件是web应用系统的一个基本功能.一般来说,邮件都有特定的类型,比如说密码提醒,欢迎信息,订单确认或者收信确认.尽管不同应用邮件的内容各不相同,但是发送邮件的过程基本上是一样的. 构建消息,发送给邮件服务器,发送. 当使用java开发的时候,我们常常使用JavaMail API 来连接邮件服务器发送邮件.但是这种方式过于笨重(主要由邮件的灵活性造成的),所以当你需要多次使用这种方式发送邮件的时候,最好写一个wrapper.根据使用的方式不同,wrapper可以是发送某一特定的邮件,比如说密

java中利用RandomAccessFile读取超大文件

服务器的日志文件往往达到400多M,简单的文件读取实在太慢,太占用机器资源. 特别是如果你需要5分钟就扫描一次日志文件,来统计一些即时数据.比如刚才10分钟的来访客户(大型网站用户统计系统例如51.la 会经常用到吧.)即时扫描大数据文件中的一部分显得非常之重要. 本文讲述了如果使用java的RandomAccessFile方法从一个很大的文件来读取部分字节 测试文件总大小46085个字节 读取文件最后85个字节 文件大小:46085 85 测试效果 ?展功能 -> 优酷视频   其他的如奇艺,