1. <!--freemarker-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-freemarker</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>commons-io</groupId>
  8. <artifactId>commons-io</artifactId>
  9. <version>2.6</version>
  10. </dependency>
  1. /**
  2. * Freemarker实例Controller
  3. */
  4. @RequestMapping("/freemarker")
  5. @Controller
  6. public class FreemarkerController {
  7. @Autowired
  8. RestTemplate restTemplate;
  9. @RequestMapping("/test1")
  10. public String test1(Map<String,Object> map){
  11. map.put("name","fly");
  12. Student stu2 = new Student();
  13. Student stu1 = new Student("小明",18,new Date(),1000.22f,null,stu2);
  14. stu2.setName("小红");
  15. stu2.setMoney(222.1f);
  16. stu2.setAge(12);
  17. //list数据
  18. List<Student> stus = new ArrayList<>();
  19. stus.add(stu1);
  20. stus.add(stu2);
  21. map.put("stus",stus);
  22. //map数据
  23. HashMap<String,Student> stuMap = new HashMap<>();
  24. stuMap.put("stu1",stu1);
  25. stuMap.put("stu2",stu2);
  26. map.put("stu1",stu1);
  27. map.put("stuMap",stuMap);
  28. map.put("today",new Date());
  29. return "test1";
  30. }
  31. }

templates/test1.ftl:

  1. <#--
  2. freemarker实例
  3. -->
  4. <!DOCTYPE html>
  5. <html lang="en">
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>Title</title>
  9. </head>
  10. <body>
  11. <h4>hello ${name}!</h4>
  12. <table border="1">
  13. <tr>
  14. <td>序号</td>
  15. <td>姓名</td>
  16. <td>年龄</td>
  17. <td>钱包</td>
  18. </tr>
  19. <#--遍历list-->
  20. <#list stus as stu>
  21. <tr>
  22. <td>${stu_index + 1}</td> <#-- _index,循环下标,从0开始-->
  23. <td>${stu.name}</td>
  24. <td>${stu.age}</td>
  25. <td>${stu.money}</td>
  26. </tr>
  27. </#list>
  28. </table>
  29. <#--遍历map-->
  30. stu1: <br>
  31. 姓名: ${stuMap['stu1'].name} <br>
  32. 年龄: ${stuMap['stu1'].age} <br>
  33. stu1: <br>
  34. 姓名: ${stuMap.stu1.name} <br>
  35. 年龄: ${stuMap.stu1.age} <br>
  36. 遍历map
  37. <table border="1">
  38. <tr>
  39. <td>序号</td>
  40. <td>姓名</td>
  41. <td>年龄</td>
  42. <td>钱包</td>
  43. </tr>
  44. <#list stuMap?keys as k>
  45. <tr>
  46. <td>${k_index + 1}</td>
  47. <#--if 指令-->
  48. <td <#if stuMap[k].name=='小明'>style="background: red;"</#if>>
  49. ${stuMap[k].name}
  50. </td>
  51. <td>${stuMap[k].age}</td>
  52. <td>${stuMap[k].money}</td>
  53. </tr>
  54. </#list>
  55. </table>
  56. <#--空值处理-->
  57. <#if stu1??>
  58. <p>${stu1.name}</p>
  59. </#if>
  60. <br>
  61. <#--内建函数-->
  62. <#--集合大小-->
  63. 集合大小${stus?size}
  64. 年月日${today?date}
  65. 时分秒${today?time}
  66. 年月日+时分秒${today?datetime}
  67. 自定义格式${today?string("yyyy年MM月")}
  68. <#--内建函数c 三位分割-->
  69. ${1111112221?c}
  70. <#--json转对象-->
  71. <#assign text="{'bank':'工商银行','account':'101010101010001010'}"/>
  72. <#assign data=text?eval/>
  73. 户行${data.bank} 账号${data.account}
  74. </body>
  75. </html>

  1. /**
  2. * freemarker静态化测试
  3. */
  4. @RunWith(SpringRunner.class)
  5. @SpringBootTest(classes = ShuJuApplication.class)
  6. public class FreemarkerTest {
  7. @Test
  8. public void testGenerateHtml() throws Exception {
  9. Configuration configuration = new Configuration(Configuration.getVersion());
  10. String path = this.getClass().getResource("/").getPath();
  11. configuration.setDirectoryForTemplateLoading(new File(path+"/templates"));
  12. configuration.setDefaultEncoding("utf-8");
  13. Template template = configuration.getTemplate("test1.ftl");
  14. Map<String,Object> map = new HashMap<>();
  15. map.put("name","fly");
  16. String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
  17. System.out.println(content);
  18. InputStream inputStream = IOUtils.toInputStream(content, "utf-8");
  19. FileOutputStream fileOutputStream = new FileOutputStream(new File("C:\\uploads\\"+"test1.html"));
  20. IOUtils.copy(inputStream,fileOutputStream);
  21. }
  22. @Test
  23. public void testGenerateHtml2() throws Exception {
  24. Configuration configuration = new Configuration(Configuration.getVersion());
  25. String templateString = "<!DOCTYPE html>\n" +
  26. "<html lang=\"en\">\n" +
  27. "<head>\n" +
  28. " <meta charset=\"UTF-8\">\n" +
  29. " <title>Title</title>\n" +
  30. "</head>\n" +
  31. "<body>\n" +
  32. "<h4>hello ${name}!</h4>\n" +
  33. "</body>\n" +
  34. "</html>";
  35. StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
  36. stringTemplateLoader.putTemplate("template",templateString);
  37. configuration.setTemplateLoader(stringTemplateLoader);
  38. Template template = configuration.getTemplate("template","utf-8");
  39. Map<String,Object> map = new HashMap<>();
  40. map.put("name","fly");
  41. String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
  42. System.out.println(content);
  43. InputStream inputStream = IOUtils.toInputStream(content, "utf-8");
  44. FileOutputStream fileOutputStream = new FileOutputStream(new File("C:\\uploads\\"+"test1.html"));
  45. IOUtils.copy(inputStream,fileOutputStream);
  46. }
  47. }

freemarker demo的更多相关文章

  1. 网页静态化解决方案-Freemarker demo+语法

    1.网页静态化技术Freemarker 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说 ...

  2. DEMO: springboot 与 freemarker 集成

    直接在 DEMO: springboot 与 mybatis 集成 基础上,进行修改. 1.pom.xml 中引用 依赖 <dependency> <groupId>org.s ...

  3. Maven+SpringMVC+Freemarker入门Demo

    1 参考http://blog.csdn.net/haishu_zheng/article/details/51490299,用第二种方法创建一个名为mavenspringmvcfreemarker的 ...

  4. Freemarker入门Demo

    1:工程引入依赖 <dependency> <groupId>org.freemarker</groupId> <artifactId>freemark ...

  5. Freemarker的简单demo

    第一步.导入依赖 <dependency> <groupId>org.freemarker</groupId> <artifactId>freemark ...

  6. SpringMVC整合Freemarker(含Demo源码)(转)

    转自:http://blog.csdn.net/sinat_27535209/article/details/61199452 整合过程如下: 1.新建一个maven web工程,使用maven依赖s ...

  7. 页面静态化技术Freemarker技术的介绍及使用实例.

    一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...

  8. SpringMVC+FreeMarker

    前言: 最近在学习SpringMVC,模板引擎用的是FreeMarker,之前没有接触过.利用SpringMVC开发其实还有许多的步骤,比如控制层,服务层,持久化层,实体等等,先弄了一个小demo来总 ...

  9. springmvc使用freemarker

    首先需要添加freemarker.jar到项目,如果项目中有spring或者spirngmvc,需要整合,首先配置freemarkerConfig,代码结构如下 <!-- 设置freeMarke ...

随机推荐

  1. ubuntu安装后问题

    ubuntu安装后桌面显示不正常,出现闪屏,或者是缺图标的问题多数是ubuntu的3D加速显示问题 解决方法,vmware workstations 中的菜单栏:虚拟机->设置->显示器- ...

  2. oracle入门之对表数据查询(一)

    此文中用到的表是Scott用户中自带的三张表: 基本select语句 基本语法: select [distinct] *|{columnl,column2,column3..} from table ...

  3. 1019. General Palindromic Number (20)

    生词以及在文中意思 forward 向前地 backward 向后地 palindromic 回文的 base 基数(如十进制的10 和二进制的2) numeral system 数制 decimal ...

  4. pytest自动化3:fixture之conftest.py实现setup

    出处:https://www.cnblogs.com/yoyoketang/p/9390073.html 前言: 前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作 ...

  5. c#线程池ThreadPool实例详解

    1. 如何查看线程池的最大线程数和最小线程数 static void Main(string[] args) { Console.WriteLine("----------线程池开始,线程I ...

  6. Linux:Fedora系统的安装

    新的一周,新的一天又来了!话不多说我们直接进入今天的系统安装吧!这次是Linux系统的第八期了,这款系统是可以当做家庭用途使用,非常强大的一款开发源操作系统. 安装Fedora系统 系统映像文件下载 ...

  7. chrome console.log失效

    把红框里的内容去掉就可以了 那个框是过滤..

  8. Csrf_token ||| CSRF跨站请求伪造

    # 注: 部分内容参考网上,侵删   CSRF(Cross-site request forgery) 跨站请求伪造,是一种对网站的恶意利用  它会通过伪装成受信任用户的请求来利用受信任的网站来获取一 ...

  9. 周强 201771010141面向对象程序设计(java)》第十七周学习总结

    线程同步 多线程并发运行不确定性问题解决方案:引入线 程同步机制,使得另一线程要使用该方法,就只 能等待. ⚫ 在Java中解决多线程同步问题的方法有两种: 1.- Java SE 5.0中引入Ree ...

  10. iOS证书申请及使用详细说明

    iOS 证书申请和使用详解(详细版)阅读   对于iOS开发者来说,apple开发者账号肯定不会陌生.在开发中我们离不开它.下面我简单的为大家分享一下关于iOS开发中所用的证书相关知识. 第一部分:成 ...