我的日常

登录/注册
您现在的位置:论坛 资料库 JAVA开发 > FreeMarker教你如何生成html静态页面源码(科帮网)
总共48087条微博

动态微博

查看: 14719|回复: 3

FreeMarker教你如何生成html静态页面源码(科帮网)

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2015-02-03 16:05:33 |只看该作者 |正序浏览
    一、 FreeMarker生成静态页原理
    众所周知,FreeMarker适合于作为Web应用的表现层,那么我们就把把页面中所需要的样式放入FreeMarker文件中,然后将页面所需要的数据动态绑定,并放入Map中,通过调用FreeMarker模板文件解析类process()方法完成静态页面的生成。了解了上面的原理,接下来四夕就一步步带您实现FreeMarker生成静态页面。
    二、 创建FreeMarker模板文件question.ftl。
    <head>
    <title>生成html静态页面</title>
    <meta http-equiv="X-UA-Compatible"     content="IE=edge"; charset=UTF-8" />
    </head>
    <body>
         <span>生成题干ID${question.id}</span>
         <span>生成题干内容${question.quesContent}</span>   
    </body>
    三、 创建FreeMarker模板文件解析器类CreatHtml
    package com.itstyle.util;




    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.util.HashMap;
    import java.util.Map;


    import javax.servlet.http.HttpServletRequest;


    import com.itstyle.model.Question;


    import freemarker.template.Configuration;
    import freemarker.template.DefaultObjectWrapper;
    import freemarker.template.Template;
    /**
    *
    * @author 科帮网(www.52itstyle.com)
    *
    */
    public class CreatHtml {
         public static void CreatAllHtml(HttpServletRequest request){
                    Map<String,Object> root = new HashMap<String,Object>();
                    String path = request.getSession().getServletContext().getContextPath();
                    String templatePath = request.getSession().getServletContext().getRealPath("/file");
                    String templateName = "question.flt";
                            String targetHtmlPath =request.getSession().getServletContext().getRealPath("/file")
    +Constants.SF_FILE_SEPARATOR+"question.html";
                            Question question = new Question(1,"我是中国人");
                            root.put("question", question);   
                            root.put("path" , path);
                            crateHTML(root, templatePath, templateName, targetHtmlPath);
         }
         public static void crateHTML(Map<String,Object> data,String templatePath,String templateName,String targetHtmlPath){
                 Configuration freemarkerCfg = new Configuration();  
                     //加载模版  
                     Writer out = null;
                     try {  
                             //设置要解析的模板所在的目录,并加载模板文件  
                             freemarkerCfg.setDirectoryForTemplateLoading(new File(templatePath));
                             //设置包装器,并将对象包装为数据模型  
                             freemarkerCfg.setObjectWrapper(new DefaultObjectWrapper());
                         //指定模版路径  
                         Template template = freemarkerCfg.getTemplate(templateName,"UTF-8");  
                         template.setEncoding("UTF-8");  
                         //静态页面路径  
                         FileOutputStream fos = new FileOutputStream(targetHtmlPath);  
                         out = new OutputStreamWriter(fos,"UTF-8");  
                         //合并数据模型与模板  
                     template.process(data, out);  
                     } catch (Exception e) {  
                         e.printStackTrace();  
                     }finally{
                              try {
                                      out.flush();
                                      out.close();  
                             } catch (IOException e) {
                                     e.printStackTrace();
                             }  
                     }
              }
         
    }
    四、 创建FreeMarker模板文件动态绑定的数据对象类Question.java
    package com.itstyle.model;
    /**
    *
    * @author 科帮网(www.52itstyle.com)
    *
    */
    public class Question {
        private Integer id;
        private String quesContent;
       
            public Question() {
                    super();
            }
            public Question(Integer id, String quesContent) {
                    super();
                    this.id = id;
                    this.quesContent = quesContent;
            }
            public Integer getId() {
                    return id;
            }
            public void setId(Integer id) {
                    this.id = id;
            }
            public String getQuesContent() {
                    return quesContent;
            }
            public void setQuesContent(String quesContent) {
                    this.quesContent = quesContent;
            }
       
    }

    FreeMarker教你如何生成html静态页面源码(科帮网)
    FreeMarker教你如何生成html静态页面源码(科帮网).zip (839.35 KB, 下载次数: 2, 售价: 5 IT币)








    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    woniu 实名认证   

    2

    主题

    0

    听众

    330

    金钱

    四袋长老

    该用户从未签到

    地板
    发表于 2016-04-12 11:51:03 |只看该作者
    这个项目太棒勒!下下来学习下!
    回复

    使用道具 举报

    1

    主题

    3

    听众

    341

    金钱

    四袋长老

    该用户从未签到

    板凳
    发表于 2016-03-17 21:44:04 |只看该作者

    下来,学习一下。谢谢
    回复

    使用道具 举报

    2

    主题

    0

    听众

    128

    金钱

    三袋弟子

    该用户从未签到

    沙发
    发表于 2015-05-04 00:48:02 |只看该作者
    这个就是所谓页面静态化技术吧!
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表