本人新手,没有牛逼的技术,只有一些井底之蛙的见解,如有好思路,好方法,请分享一下,本人不胜感激。 在我看来,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;
}
}