freeMarker

  • freeMarker的整体架构
    • 2020-03-12_095717
  • 什么时候使用静态页面:当访问量比较大,不经常改动页面的时候可以使用
  • 生成的页面放在哪:放在tomcat容器中,也可以放在nginx中
  • freeMarker的jar包
    • <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
      <version>2.3.23</version>
      </dependency>

  • freeMarker模板文件的后缀可以随意,但是一般建议后缀为ftl
  • 指令
    • assign
      • 定义简单类型
      • <#assign linkman="周先生">
        联系人:${linkman}

      • 定义对象类型
        • <#assign info={"mobile":"13812345678",'address':'北京市昌平区'} >
          电话:${info.mobile} 地址:${info.address}
    • include指令
      • 创建模板文件head.ftl
        • <h1>黑马程序员</h1>

      • 修改入门案例中的test.ftl,在test.ftl模板文件中使用include指令引入上面的模板文件
        • <#include "head.ftl"/>

    • if指令
      • 在模板文件中使用if指令进行判断
        • <#if success=true>
          你已通过实名认证
          <#else>
          你未通过实名认证
          </#if>

      • 在java代码中为success变量赋值
        • map.put("success", true);

    • list指令
      • 在模板文件中使用list指令进行遍历
        • <#list goodList as goods >

          商品名称: ${goods.name} 价格:${goods.price}<br>
          </#list>

      • 在java代码中为goodList赋值
        • List goodsList=new ArrayList();
          Map goods1=new HashMap();
          goods1.put("name", "苹果");
          goods1.put("price", 5.8);
          Map goods2=new HashMap();
          goods2.put("name", "香蕉");
          goods2.put("price", 2.5);
          Map goods3=new HashMap();
          goods3.put("name", "橘子");
          goods3.put("price", 3.2);
          goodsList.add(goods1);
          goodsList.add(goods2);
          goodsList.add(goods3);
          map.put("goodsList", goodsList);

    • java代码
      • @Autowired
        FreeMarkerConfigurer freeMarkerConfigurer;
        //@Value("${out_put_path}")
        String outPath="D:/workspace/health/health_parent/health_mobile/src/main/webapp/pages";
        //准备数据
        public void generateSetDetailHtml(List<Setmeal> list){
        for (Setmeal setmeal : list) {
        Map map = new HashMap();
        map.put("setmeal",setMealDao.findById(setmeal.getId()));
        generateHTML("mobile_setmeal_detail.ftl","setmeal_detail_"+setmeal.getId()+".html",map);
        }
        }
        //生成页面
        public void generateHTML(String templageHtml,String generHtml,Map map){
        Configuration configuration =
        freeMarkerConfigurer.getConfiguration();
        Writer writer ;

        try {
        Template template = configuration.getTemplate(templageHtml);
        writer = new FileWriter(new File(outPath+"/"+generHtml));
        template.process(map,writer);
        writer.close();
        } catch (IOException e) {
        e.printStackTrace();
        } catch (TemplateException e) {
        e.printStackTrace();
        }

        }
    • xml文件
      •    <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer" id="freeMarkerConfigurer">
        <property name="defaultEncoding" value="utf-8"/>
        <property name="templateLoaderPath" value="/WEB-INF/ftl/"/>
        </bean>
        <!--
        <context:property-placeholder location="classpath:freemarker.properties"/>
        -->

posted on 2020-03-12 11:19  赟麟  阅读(157)  评论(0编辑  收藏  举报

导航