首先我们先来认识一下Freemarker

1.what is the FreeMarker?

你可以到freemarker的官网上去,那里有很详细的介绍:http://freemarker.org/

这里大概说一下:FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。

FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层

的实现技术,而且还可以用于生成XML,JSP或Java 等。

大家只要知道freemarker是一个模板引擎就可以啦...

2.freemarker能够为我们做什么?

我想知道了freemarker是模板引擎以后,我们最关心的是这个东东能够为我们做些什么?

看看下面的demo,你也许就明白了

项目结构:

运行代码:

1 public static void main(String[] args) throws Exception {
2     helloWorld(FTLS_PATH, HONGTEN_HELLO_WORLD_FTL);
3  }

运行效果:

运行代码:

1 public static void main(String[] args) throws Exception {
2         myJavaFile(FTLS_PATH,BEAN_URL,HONGTEN_MY_JAVA_FILE_FTL);
3     }

运行效果:

生成的User.java文件:

==================================================================

代码部分:   你可以了解一下velocity(也是一个模板引擎):利用Velocity自动生成自定义代码_java版_源码下载

==================================================================

/freemarker/src/com/b510/freemarker/Bean.java

 1 package com.b510.freemarker;
 2
 3 /**
 4  * bean类
 5  *
 6  * @author hongten(hongtenzone@foxmail.com)<br>
 7  * @date 2013-4-5
 8  */
 9 public class Bean {
10
11     /** bean 名称 */
12     private String name;
13     /** bean 首字母小写名称 */
14     private String lowerName;
15     /** bean 路径 */
16     private String beanUrl;
17     /** dao 路径 */
18     private String beanDaoUrl;
19     /** dao 实现路径 */
20     private String beanDaoImplUrl;
21     /** service 路径 */
22     private String beanServiceUrl;
23     /** service 实现路径 */
24     private String beanServiceImplUrl;
25
26     public String getName() {
27         return name;
28     }
29
30     public void setName(String name) {
31         this.name = name;
32     }
33
34     public String getLowerName() {
35         return lowerName;
36     }
37
38     public void setLowerName(String lowerName) {
39         this.lowerName = lowerName;
40     }
41
42     public String getBeanUrl() {
43         return beanUrl;
44     }
45
46     public void setBeanUrl(String beanUrl) {
47         this.beanUrl = beanUrl;
48     }
49
50     public String getBeanDaoUrl() {
51         return beanDaoUrl;
52     }
53
54     public void setBeanDaoUrl(String beanDaoUrl) {
55         this.beanDaoUrl = beanDaoUrl;
56     }
57
58     public String getBeanDaoImplUrl() {
59         return beanDaoImplUrl;
60     }
61
62     public void setBeanDaoImplUrl(String beanDaoImplUrl) {
63         this.beanDaoImplUrl = beanDaoImplUrl;
64     }
65
66     public String getBeanServiceUrl() {
67         return beanServiceUrl;
68     }
69
70     public void setBeanServiceUrl(String beanServiceUrl) {
71         this.beanServiceUrl = beanServiceUrl;
72     }
73
74     public String getBeanServiceImplUrl() {
75         return beanServiceImplUrl;
76     }
77
78     public void setBeanServiceImplUrl(String beanServiceImplUrl) {
79         this.beanServiceImplUrl = beanServiceImplUrl;
80     }
81
82 }

/freemarker/src/com/b510/freemarker/Annotation.java

 1 package com.b510.freemarker;
 2
 3 /**
 4  * 注释
 5  *
 6  * @author hongten(hongtenzone@foxmail.com)<br>
 7  * @date 2013-4-5
 8  */
 9 public class Annotation {
10
11     /**
12      * 作者名称
13      */
14     private String authorName;
15     /**
16      * 作者邮箱
17      */
18     private String authorMail;
19     /**
20      * 日期
21      */
22     private String date;
23     /**
24      * 版本
25      */
26     private String version;
27
28     public String getAuthorName() {
29         return authorName;
30     }
31
32     public void setAuthorName(String authorName) {
33         this.authorName = authorName;
34     }
35
36     public String getAuthorMail() {
37         return authorMail;
38     }
39
40     public void setAuthorMail(String authorMail) {
41         this.authorMail = authorMail;
42     }
43
44     public String getDate() {
45         return date;
46     }
47
48     public void setDate(String date) {
49         this.date = date;
50     }
51
52     public String getVersion() {
53         return version;
54     }
55
56     public void setVersion(String version) {
57         this.version = version;
58     }
59
60 }

/freemarker/src/com/b510/freemarker/MyFreeMarker.java

  1 /**
  2  *
  3  */
  4 package com.b510.freemarker;
  5
  6 import java.io.File;
  7 import java.io.FileWriter;
  8 import java.io.OutputStreamWriter;
  9 import java.io.Writer;
 10 import java.text.SimpleDateFormat;
 11 import java.util.Date;
 12 import java.util.HashMap;
 13 import java.util.Map;
 14
 15 import freemarker.template.Configuration;
 16 import freemarker.template.Template;
 17
 18 /**
 19  * freemarker测试
 20  *
 21  * @author hongten(hongtenzone@foxmail.com)<br>
 22  * @date 2013-4-5
 23  */
 24 public class MyFreeMarker {
 25
 26     private static Configuration configuration;
 27     private static Template template;
 28     private static Writer writer;
 29     /**
 30      * 模板文件的存放路径,这里是存放在项目根目录下的ftls文件夹中
 31      */
 32     public static final String FTLS_PATH = "ftls";
 33
 34     public static final String MESSAGE = "message";
 35     public static final String HELLO_WORLD = "Hello World!";
 36     public static final String HONGTEN_HELLO_WORLD_FTL = "hongten-helloworld.ftl";
 37     public static final String HONGTEN_MY_JAVA_FILE_FTL = "hongten-myJavaFile.ftl";
 38
 39     // bean
 40     public static final String BEAN = "bean";
 41     public static final String BEAN_URL = "com.b510.bean";
 42
 43     // annotation
 44     public static final String ANNOTATION = "annotation";
 45     public static final String ANNOTATION_AUTHOR_NAME = "hongten";
 46     public static final String ANNOTATION_AUTHOR_MAIL = "hongtenzone@foxmail.com";
 47     public static final String ANNOTATION_VERSION = "1.0";
 48
 49     // date formate
 50     public static final String DATE_FROMATE = "yyyy-MM-dd";
 51
 52     public static void main(String[] args) throws Exception {
 53         // helloWorld(FTLS_PATH, HONGTEN_HELLO_WORLD_FTL);
 54         myJavaFile(FTLS_PATH, BEAN_URL, HONGTEN_MY_JAVA_FILE_FTL);
 55     }
 56
 57     /**
 58      * 利用模板在控制台打印helloworld信息
 59      *
 60      * @param path
 61      *            模板存放的路径
 62      * @param ftlFile
 63      *            模板文件
 64      * @throws Exception
 65      */
 66     public static void helloWorld(String path, String ftlFile) throws Exception {
 67         // 创建Freemarker配置实例
 68         configuration = new Configuration();
 69         configuration.setDirectoryForTemplateLoading(new File(path));
 70
 71         // 创建数据模型
 72         Map<String, String> root = new HashMap<String, String>();
 73         root.put(MESSAGE, HELLO_WORLD);
 74
 75         // 加载模板文件
 76         template = configuration.getTemplate(ftlFile);
 77
 78         // 显示生成的数据,这里打印在控制台
 79         writer = new OutputStreamWriter(System.out);
 80         template.process(root, writer);
 81         writer.flush();
 82         writer.close();
 83     }
 84
 85     /**
 86      * 利用freemarker生成自定义的javaBean
 87      *
 88      * @param path
 89      *            模板路径
 90      * @param packageUrl
 91      *            javaBean的url,即package名称
 92      * @param ftlFile
 93      *            使用的模板文件
 94      * @throws Exception
 95      */
 96     public static void myJavaFile(String path, String packageUrl, String ftlFile) throws Exception {
 97         // 创建Freemarker配置实例
 98         configuration = new Configuration();
 99         configuration.setDirectoryForTemplateLoading(new File(path));
100
101         // 创建数据模型
102         Map<String, Object> root = new HashMap<String, Object>();
103         Bean bean = new Bean();
104         bean.setName("User");
105         bean.setLowerName("user");
106         bean.setBeanUrl(packageUrl);
107         root.put(BEAN, bean);
108
109         Annotation annotation = new Annotation();
110         annotation.setAuthorMail(ANNOTATION_AUTHOR_MAIL);
111         annotation.setAuthorName(ANNOTATION_AUTHOR_NAME);
112         annotation.setVersion(ANNOTATION_VERSION);
113         SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FROMATE);
114         annotation.setDate(simpleDateFormat.format(new Date()));
115         root.put(ANNOTATION, annotation);
116
117         // 加载模板文件
118         template = configuration.getTemplate(ftlFile);
119
120         String beanPath = System.getProperty("user.dir") + "/src/" + packageUrl.replace(".", "/") + "/";
121         File filePath = new File(beanPath);
122         if (!filePath.exists()) {
123             filePath.mkdirs();
124         }
125
126         String filePathOfBean = beanPath + "/User.java";
127         File file = new File(filePathOfBean);
128         if (!file.exists()) {
129             file.createNewFile();
130         }
131
132         // 显示生成的数据
133         writer = new FileWriter(file);
134         template.process(root, writer);
135         writer.flush();
136         writer.close();
137     }
138 }

/freemarker/ftls/hongten-helloworld.ftl

1 ${message}

/freemarker/ftls/hongten-myJavaFile.ftl

 1 package ${bean.beanUrl};
 2
 3 import java.util.Date;
 4
 5 /**
 6  * @author ${annotation.authorName}(${annotation.authorMail})<br>
 7  * @date ${annotation.date}
 8  *
 9  * @version ${annotation.version}
10  */
11 public class ${bean.name} {
12
13     /**
14      * id号
15      */
16     private Integer id;
17     /**
18      * 姓名
19      */
20     private String name;
21     /**
22      * 性别
23      */
24     private String sex;
25     /**
26      * 生日
27      */
28     private Date birthday;
29
30     public Integer getId() {
31         return id;
32     }
33
34     public void setId(Integer id) {
35         this.id = id;
36     }
37
38     public String getName() {
39         return name;
40     }
41
42     public void setName(String name) {
43         this.name = name;
44     }
45
46     public String getSex() {
47         return sex;
48     }
49
50     public void setSex(String sex) {
51         this.sex = sex;
52     }
53
54     public Date getBirthday() {
55         return birthday;
56     }
57
58     public void setBirthday(Date birthday) {
59         this.birthday = birthday;
60     }
61
62 }

源码下载:http://files.cnblogs.com/hongten/freemarker_file.zip

FreeMarker_模板引擎_代码自动生成器_源码下载相关推荐

  1. 传智书城首页设计代码_(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载...

    模板名称:(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载 本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,创意设 ...

  2. 响应式包装礼品盒设计pbootcms模板,营销型包装厂家网站源码下载

    (响应式)响应式包装礼品盒设计pbootcms模板,营销型包装厂家网站源码下载.包装生产设计类网站pbootcms模板(自适应手机端)+利于SEO优化. 浩沐资源网https://www.dhaomu ...

  3. 响应式瀑布流布局新闻资讯技术博客织梦模板/DedeCMS自适应手机版游戏新闻网站源码下载

    响应式瀑布流布局新闻资讯技术博客织梦模板,DedeCMS自适应手机版游戏新闻网站源码下载.本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,游戏新闻.游戏博客类的网 ...

  4. 这下终于可以方便地发表测试型网页代码了(附源码下载)

    前言 色彩斑斓的"马" 虽然利用插入代码功能可以很华丽的插入色彩斑斓的代码,但是就html(Xhtml)代码.js代码.css代码而言,我更喜欢想蓝色理想论坛中的那种:有个文本框, ...

  5. python代码加密运行_python源码下载后怎样进行加密

    python源码下载后怎样进行加密 发布时间:2020-11-19 09:23:24 来源:亿速云 阅读:60 作者:小新 这篇文章主要介绍了python源码下载后怎样进行加密,具有一定借鉴价值,需要 ...

  6. mybatis代码自动生成器_最近很火的文章自动生成器,python源码公开了(内附python代码)

    学了python,但是又不知道可以用来干嘛.开发一个计算器?太low了.开发一个网站?感觉网站涉及太多知识点,一个人搞不定.不用慌,本文介绍一个最近很火的一个文章自动生成器,它是用python写的,能 ...

  7. java 仿百度文库源码_java开发_模仿百度文库_SWFTools_源码下载

    1 /** 2 *3 */ 4 packagecom.b510.pdf2swf;5 6 importjava.io.BufferedReader;7 importjava.io.File;8 impo ...

  8. java 仿百度文库源码_java开发_模仿百度文库_OpenOffice2PDF_源码下载

    这几天在研究模仿着做类似于百度文库的东西,在这里给大家分享一下我自己做的东西. 由于需要做这样的项目,我查阅了很多资料,最后选定一下方案去做: Txt/Word/Excel/PPT=>PDF(O ...

  9. WinForm 天猫2013双11自动抢红包【源码下载】

    1. 正确获取红包流程 2. 软件介绍 2.1 效果图: 2.2 功能介绍 2.2.1 账号登录 页面开始时,会载入这个网站:https://login.taobao.com/member/login ...

最新文章

  1. android程序贴吧,【Android 教程总结贴】归纳所有android贴
  2. 网站服务器可以用虚拟主机吗,做网站虚拟主机可以用服务器吗
  3. json.net使用说明一
  4. 【262】pscp命令 实现windows与linux互传文件
  5. Hasor【付诸实践 03】Dataway 无代码接口工具 DataQL 聚合查询引擎使用 Mybatis 实现分页查询举例说明 + 问题分析(针对GreenPlum数据库)
  6. android 弹窗 onpause,Android 下拉通知栏时Activity的生命周期——重新理解onPause()
  7. OSPF中的frame-relay(6) NBMA-broadcast
  8. jQuery——入门(三)JQuery DOM操作(核心处理和文档处理)
  9. 转 STL hash_map map
  10. CSS实现标题文字过长部分显示省略号的方法
  11. Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 【转】...
  12. 【Unity优化】怎样实现Unity编辑器中的协程
  13. C#中读取文本文件导入SQL数据库解决方法
  14. 01.redis初识
  15. 基于HyperVID数据集训练自己的车型识别系统
  16. java 判断两个字符串相等
  17. Java Swing教程(基础)
  18. 通过USGS批量下载Sentinel2数据
  19. 在c语言中 auto的作用,c语言中auto是什么意思
  20. 传输层的主要功能和协议

热门文章

  1. qpython3h安装numpy_怎么装不上numpy?
  2. 鸟哥的linux私房菜有乌班图,折腾Ubuntu的一些summary--初装Ubuntu18和重装Ubuntu18
  3. java趣味_Java趣味分享:try finally
  4. python绘制折线图显示数据_漂亮图表也可用python信手拈来!一文教你学会用Python绘制堆积折线图...
  5. 交叉调试 arm linux,搭建交叉调试环境Arm-Linux-Gdb与gdbserver
  6. xmlhttprequest 跨域_跨域资源共享(CORS)安全性
  7. phpcms上传php,phpcms如何上传视频
  8. Ubuntu 答疑:Ubuntu 添加和删除用户具体步骤及进程被占用的解决方式
  9. 计算机辅助初中英语教学,初中英语CAI课件制作初探
  10. php 类分开写,自己前几天写的无限分类类_PHP教程