`
IT少年
  • 浏览: 73090 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

freemarker 初步认识

阅读更多
本人新手,没有牛逼的技术,只有一些井底之蛙的见解,如有好思路,好方法,请分享一下,本人不胜感激。   在我看来,freemarker 就是 可以作为展现层,让展现层更加抽象,同时也可以把一些动态的内容动态添加数据后 形成html文档或者一些html代码,


在我看来能做的工作,主要有,把你的ftl文件,或者字符串形式的带有ftl格式变量的字符串当做模板,同时经过处理把你存在map对象里的数据跟模板结合,然后把动态生成的内容输出到字符串变量里,或者输出到jsp,html页面里,
template 存放模板的类
configuration  配置类,
templateloader  定制自己的模板资源的类
下面是一个小例子可以参考
package fff;
import java.io.File; 
import java.io.OutputStreamWriter; 
import java.io.StringWriter; 
import java.util.Date; 
import java.util.HashMap; 
import java.util.Map; 
import freemarker.template.Configuration; 
import freemarker.template.Template; 
import freemarker.template.TemplateException;

import java.io.IOException; 
import java.io.Reader; 
import java.io.StringReader; 
 
import freemarker.cache.TemplateLoader;

public class Test {

/**
* @param args
*/
public static void main(String[] args)throws Exception{
// TODO Auto-generated method stub
     Configuration cfg = new Configuration(); 
       cfg.setTemplateLoader(new StringTemplateLoader("欢迎:${user}")); 
        cfg.setDefaultEncoding("UTF-8"); 
 
        Template template =cfg.getTemplate("");
         
        Map root = new HashMap(); 
       // root.put("name", "Keven Chen"); 
       // root.put("password", "1234545");
        root.put("user", "wo");
         
        StringWriter writer = new StringWriter(); 
        try {
template.process(root, writer);
} catch (TemplateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

        System.out.println(writer.toString());       
    }

}

class StringTemplateLoader implements TemplateLoader
//这个类是自己的templateloader  

        private String template; 
        public StringTemplateLoader(String template){ 
            this.template = template; 
            if(template == null){ 
                this.template = ""; 
            } 
        } 
         
        public void closeTemplateSource(Object templateSource) throws IOException { 
            ((StringReader) templateSource).close(); 
        } 
     
        public Object findTemplateSource(String name) throws IOException { 
            return new StringReader(template); 
        } 
     
        public long getLastModified(Object templateSource) { 
            return 0; 
        } 
     
        public Reader getReader(Object templateSource, String encoding) 
                throws IOException { 
            return (Reader) templateSource; 
        } 
}

    
     



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics