freemarker简要总结

发布时间:2017-2-20 9:47:31 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"freemarker简要总结",主要涉及到freemarker简要总结方面的内容,对于freemarker简要总结感兴趣的同学可以参考一下。

准备工作:   》安装freemarker 的eclipse插件:            If you use Eclipse 3.x:    (open eclipse)Help -> Software updates -> Find and install....  Choose "Search for new features to install".  Click Add Update Site..., and type "FreeMarker" for Name and "http://www.freemarker.org/eclipse/update" for URL.  Check the box of the "FreeMarker" feature.  "Next"-s until it is installed...  [/ol] 》下载freemarker 的java类库(freemarker.jar)       建立项目:   》new projectct   》import freemarker.jar   》建立模板(我是先建立html文件,然后更改后缀名为ftl)详细建立过程后面说明   》建立数据模型(new class , 在class 里面建立数据模型)详细建立过程后面说明   》new servelet ,在servelet 显示模板+数据模型的输出结果,详细建立过程后面说明   》配置tomcat以及jdk   》run project as java application   》start tomcat   》用浏览器访问servelet   e.g.  http://localhost:8080/projectname/servelet       简单的模板+数据模型:   拿一个简单的项目来做模板+数据模型的演示   数据模型(以下只是视图表现,只供方便浏览):   Root    +  Animal                      +Name dog                       Price  5                      +Name pig                       Price  10   数据模型(java代码实现根据视图模型):   Map root = new HashMap();           List animal = new ArrayList();//animal 是List类型           Map item = new HashMap();           item.put("name", "dog");           item.put("price", 5);           animal.add(item);           //添加dog 到animal                      Map item1 = new HashMap();           item1.put("name","pig");           item1.put("price", 10);           animal.add(item1);         //添加pig 到animal           root.put("animal", animal);   模板(模板中用到上面的数据模型中的数据):           Welcome!                                                     则是包含name为dog、pig ,price为5,10两                                             项—>                         dog's information :                         pig's information :                      animal's name = ${temp.name}  animal's prcie = ${temp.price}                   》该例子中用到两种指令:if 条件指令 、list循环指令(不仅仅起循环浏览作用,还有其他排序等作用,目前只是简单了解,以后加入详细其他说明)      //按照name进行排序   条件判断   遍历hash表或者collection(freemaker称作sequence)的成员   ${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代           建立的project中需要被修改的地方(针对自己建的project):   Project包含四部分:InitFreeMarker、数据模型class、servelet、ftl模板(由网页编辑人员完成)   Ø  InitFreeMarker部分(黄色部分可能需要修改,其他地方一律不需要改):   import java.io.File;   import java.io.StringWriter;   import java.util.HashMap;   import java.util.Map;       import freemarker.template.Configuration;   import freemarker.template.DefaultObjectWrapper;   import freemarker.template.Template;   public class InitFreeMarker {            protected Configuration cfg ;            protected StringWriter outPut = new StringWriter() ; //output=data+model            protected Template temp ; //模板            InitFreeMarker()throws Exception{                      cfg = new Configuration();                      //设置模板存放路径                      cfg.setDirectoryForTemplateLoading(                                        new File("D:/Program Files/eclipse/freemarker/WebRoot/WEB-INF/templates")); //可能需要修改,根据模板存放位置                      cfg.setObjectWrapper(new DefaultObjectWrapper());       }            private void designDataModel()throws Exception{}   }       Ø  数据模型class(黄色部分可能需要修改,其他地方一律不需要修改)   继承InitFreeMarker,代码如下:   import freemarker.template.*;   import java.util.*;   import java.io.*;       public class Test extends InitFreeMarker {            Test()throws Exception{                                 temp = cfg.getTemplate("test.ftl");//找到模板,指定模板名字                      this.designDataModel();   //调用数据模型设计及模板数据处理方法        }                        private void designDataModel()throws Exception{//重载设计数据模型及合并数据模板                       /* 以下部分是建立数据模型,由java程序员完成*/           Map root = new HashMap();           root.put("user", "Big Tom");           Map latest = new HashMap();           root.put("latestProduct", latest);           latest.put("url", "products/greenmouse.html");           latest.put("name", "green mouse");                           temp.process(root, outPut);//合并数据模板                                  }   }          Ø  Servelet(黄色部分需要修改,其他地方一律不需要修改)   import java.io.IOException;   import java.io.PrintWriter;       import javax.servlet.ServletException;   import javax.servlet.http.HttpServlet;   import javax.servlet.http.HttpServletRequest;   import javax.servlet.http.HttpServletResponse;           public class WelcomeServelet extends HttpServlet {            public void doGet(HttpServletRequest request, HttpServletResponse response)                               throws ServletException, IOException {                          response.setContentType("text/html");                      PrintWriter out = response.getWriter();                                            try {                               Test temp = new Test();//生成模板+数据实例                               out.println(temp.outPut.toString());  //把数据+模板结果生成到浏览器上                       } catch (Exception e) {                               e.printStackTrace();                      }            }   }  

上一篇:第一章:介绍Django
下一篇:learning puppet 1--Overview

相关文章

相关评论