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

发布于 2021-11-14 21:12:49 字数 394 浏览 811 评论 6

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

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

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

眼泪淡了忧伤 2021-11-20 22:48:14

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

风柔一江水 2021-11-20 21:26:01

回复
jsp 里可以嵌入任何java代码,允许程序员做任何事情,这样很容易导致将业务逻辑混入jsp页面中,而使用模板引擎就从根本上杜绝了这种情况。

高跟鞋的旋律 2021-11-20 20:38:28

回复
那还是程序员的问题,如果程序员自己要乱搞,谁能阻止?

心欲静而疯不止 2021-11-20 18:58:14

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

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

左岸枫 2021-11-20 08:39:20

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再问吧

可是我不能没有你 2021-11-20 03:42:53

嘎嘎,首先你就错了.

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文