求教!对freemaker的一些不解之处、、、

liujiduo 发布于 2013/06/16 14:18
阅读 730
收藏 1

本人初学freemarker,了解freemarker的基本语法,但也只知道freemarker是用来生成静态页面的模板技术。最近做了一个小例子学习了一下freemarker,效果是看到了,但还是有很多不明白的地方:

1、freemarker是用来生成静态页面的,但为什么我运行之后找不到生成的静态页面在哪里,莫不是在内存中?

2、freemarker获取数据时跟jstl和struts标签差不多,而且每次打开页面都会从后台获取数据,结合上一个问题,这就有点让我对freemarker生成静态页面有点不解了?

3、即便是生成静态页面,但用户的信息时随时会变化的,页面上的数据一样还是要重新获取,这和动态页面技术有什么区别呢?

暂时就先问这三个问题,真心请教!希望各位大虾给我指点指点,谢谢!

加载中
0
loyal
loyal

嘎嘎,首先你就错了.

1.freemarker是模板引擎,比如可以替换掉你的jsp,这样去展示页面.

2.关于生成静态页面,也就是html,这个的基础是第一步.但生成出来的东西你要自己保存,然后指定url规则让你的其他页面可以跳转到这个页面上.你说的信息变化不属于静态页面,如果有大量变化的数据在这个页面那就不适合做静态化了,你只能用第一个.比如新闻页面,博客页面,就很适合静态化,因为内容不变.如果是首页,列表等就不适合做静态化,因为变变变.

freemarker如果你要结合常见的mvc框架的话,都是第一点.要做第二点的静态化,就要自己存freemarker生成的html文件,然后配合url规则跳转到你生成的html上.懂?

0
南湖船老大
南湖船老大

1.需要自己配置,还需要一些额外的代码,默认配置不会自动生成静态文件。

public static void crateHTML(ServletContext context,Map<String,Object> data,String templatePath,String targetHtmlPath){
        Configuration freemarkerCfg = new Configuration();
        //加载模版
        freemarkerCfg.setServletContextForTemplateLoading(context, "/");
        freemarkerCfg.setEncoding(Locale.getDefault(), "UTF-8");
        try {
            //指定模版路径
            Template template = freemarkerCfg.getTemplate(templatePath,"UTF-8");
            template.setEncoding("UTF-8");
            //静态页面路径
            String htmlPath = context.getRealPath("")+targetHtmlPath;
            File htmlFile = new File(htmlPath);
            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "UTF-8"));
            //处理模版  
            template.process(data, out);
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

2.建议先实现1再问吧

3.建议先实现1再问吧

0
huan
huan

freemaker 是一个模板引擎,可以使用它生成静态页面,但是它并不是专门生成静态页面的工具。一般网站使用它,也是用来动态生成页面的。

因为安全以及结构上的原因,模板引擎非常适合 mvc 中 v这一层的实现,而不推荐使用jsp

景樗子刘
景樗子刘
回复 @huan : 那还是程序员的问题,如果程序员自己要乱搞,谁能阻止?
huan
huan
回复 @一句诗的轻叹 : jsp 里可以嵌入任何java代码,允许程序员做任何事情,这样很容易导致将业务逻辑混入jsp页面中,而使用模板引擎就从根本上杜绝了这种情况。
景樗子刘
景樗子刘
因为安全以及结构上的原因,模板引擎非常适合 mvc 中 v这一层的实现,而不推荐使用jsp ??为什么?
返回顶部
顶部