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

首先我们先来认识一下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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7 搭建Kafka消息队列环境,以及Python3操作Kafka Demo

Kafka适合什么样的场景? 它可以用于两大类别的应用: 构造实时流数据管道&#xff0c;它可以在系统或应用之间可靠地获取数据。 (相当于message queue)构建实时流式应用程序&#xff0c;对这些流数据进行转换或者影响。 (就是流处理&#xff0c;通过kafka stream topic和topi…

hive序列生成_常见的序列化框架及Protobuf原理

享学课堂作者&#xff1a;逐梦々少年转载请声明出处&#xff01;上次我们详细的学习了Java中的序列化机制&#xff0c;但是我们日常开发过程中&#xff0c;因为java的序列化机制的压缩效率问题&#xff0c;以及序列化大小带来的传输的效率问题&#xff0c;一般很少会使用原生的…

decode语句不能再嵌套_自学C++基础教程【流程控制语句】(for、while 、do while 语句 )...

for语句for语句是C语言所提供的一种功能广泛的循环语句。下图为for语句的标准形式&#xff1a;表达式1&#xff1a;通常用于给循环变量赋初值&#xff0c;一般是赋值表达式。表达式2&#xff1a;通常用于设立循环条件&#xff0c;一般为关系表达式或逻辑表达式。表达式3&#x…

CentOS 7 利用Docker搭建禅道系统

1&#xff0c;系统环境 a&#xff0c;操作系统 CentOS Linux release 7.6.1810 (Core) 64位 b&#xff0c;确保Docker环境已经安装&#xff0c;具体教程请看 CentOS 安装docker 禅道系统一键安装说明文档&#xff1a;http://www.zentao.net/book/zentaopmshelp/90.html …

centos7 docker删除端口映射_centos7安装docker,结合docker安装mysql,学习简单使用

需要快速安装centos7的可以结合上一遍文章vagrant结合virtualbox让你直接在cmd窗口操作linux系统centos7地址&#xff1a;https://www.toutiao.com/i6858180977164812811/?group_id6858180977164812811Docker先说一下个人理解&#xff1a;docker其实就是一个工具&#xff0c;镜…

MongoDB中关于64位整型存储解决方案

为什么80%的码农都做不了架构师&#xff1f;>>> 社区内一哥们smcboy 提出关于php中操作MongoDB存储整数问题&#xff0c;找到点资料花点时间翻译过来&#xff0c;是个很好的学习方式。红薯 那篇讨论我的修改回复&#xff0c;仍然没有更新可恶啊~&#xff01;&#…

切割图形_泉州泡沫景观字切割机厂家

泉州泡沫景观字切割机厂家 jz4rw0qv泉州泡沫景观字切割机厂家 巨源线条切割机同步带型结构合理、性能、精密度高、、操作简便、价格合理&#xff0c;比同行业同款机床更高&#xff0c;是原有同步带型泡沫切割机的替代产品。自动编程使用计算机利用配合切割机应用&#xff0c;只…

你的搜索其实很糟糕?

为什么80%的码农都做不了架构师&#xff1f;>>> 日期&#xff1a;2013-3-27 来源&#xff1a;GBin1.com 尽管你非常擅长搜索&#xff0c;但是很多时候搜索内容和你想要的并不吻合。事实上&#xff0c;用户体验专家Jakob Nielsen认为大多数人都非常的不擅长搜索。…

Element Tree型控件

效果 前端 <template><div class"app-container"><el-inputplaceholder"输入关键字进行过滤"、<! -- 双向绑定-- >v-model"filterText"></el-input><el-tree ref"tree":data"subjectList"…

快速根据注释生成接口文档网页工具——Apidoc的使用教程

环境&#xff1a; 操作系统 CentOS Linux release 7.6.1810 (Core) 64位 服务器环境 “腾讯云”服务器 1&#xff0c;安装Node.js的npm工具环境&#xff1a; 如有不懂&#xff0c;请看我的博客&#xff1a;CentOS7 源码编译安装NodeJS 最新版本 2&#xff0c;npm环境搭…

频段表_5G频段范围之:频段3.3GHz-4.2GHz (n77,n78)

本文版权归“5G通信(tongxin5g)”和5G哥所有&#xff0c;未经授权&#xff0c;请勿转载比起以前的移动通信网络&#xff0c;5G探索的新频谱范围包括&#xff1a;3.3GHz-4.2GHz&#xff0c;4.4GHz-5.0GHz&#xff0c;24.25-29.5 GHz今天主要看频段3.3GHz-4.2GHz在3GPP中&#xf…

公开说说别人看不到_当听到别人在说自己坏话时,心里是什么感受?

人有优点也有缺点这世界上&#xff0c;没有人的性格可以做到十全十美。没有任何一个人从头到尾都是完美无缺的。一个人自从慢慢的长大后&#xff0c;在不断的社交活动中&#xff0c;就会慢慢的观察别人身上的优点或者缺点了。很奇怪&#xff0c;人的这种能力和本领好像是不需要…

CentOS 7 利用Docker搭建Showdoc文档管理系统

1&#xff0c;系统环境 a&#xff0c;操作系统 CentOS Linux release 7.6.1810 (Core) 64位 b&#xff0c;确保Docker环境已经安装&#xff0c;具体教程请看 CentOS 安装docker Docker部署Showdoc官方教程&#xff1a;https://www.showdoc.cc/help?page_id65610 2&…

深度学习attention原理_深度学习Anchor Boxes原理与实战技术

深度学习Anchor Boxes原理与实战技术目标检测算法通常对输入图像中的大量区域进行采样&#xff0c;判断这些区域是否包含感兴趣的目标&#xff0c;并调整这些区域的边缘&#xff0c;以便更准确地预测目标的地面真实边界框。不同的模型可能使用不同的区域采样方法。在这里&#…

Linux利用nginx-gridfs搭建部署Nginx和MongoDB文件服务器,支持用户密码验证!

nginx-gridfs是一个nginx的扩展模块&#xff0c;用于支持直接访问MongoDB的GridFS文件系统上的文件并提供 HTTP 访问 1&#xff0c;安装nginx&#xff0c;下载好安装包nginx和nginx-gridfs&#xff0c;此次安装采用nginx1.12.2. mkdir -p /data/soft/nginx-mongodb/ # 创建…

三行代码生成验证码并转换成base64

使用 Hutool 工具类 import cn.hutool.captcha.CaptchaUtil; import cn.hutool.captcha.LineCaptcha; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Console; import sun.misc.BASE64Encoder;import java.io.File; import java.io.FileInputStream; import…

docker 创建容器报: Error response from daemon: C: drive is not shared.

报错 C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: C: drive is not shared. Please share it in Docker for Windows Settings. See C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help.这时候我们需要绑定盘符…

CentOS 7 搭建swagger Api文档管理系统

1&#xff0c;系统环境 a&#xff0c;操作系统 CentOS Linux release 7.6.1810 (Core) 64位 b&#xff0c;安装Node.js的npm工具环境&#xff1a; # Node 官网已经把 linux 下载版本更改为已编译好的版本了&#xff0c;我们可以直接下载解压后使用&#xff1a; wget http…

宽带和流量是分开的吗_为什么现在的手机套餐与宽带越来越贵,只是因为建设5G吗?...

不知道你有没有这样一种感觉&#xff0c;手机的资费越来越高&#xff0c;并且宽带的资费也是开始上涨&#xff0c;随着5G时代的来到&#xff0c;我们现在的现在的的流量使用量也是越来越大&#xff0c;还记得2018的话费套餐最便宜的最低的只要8块钱&#xff0c;而29元能够办理包…

CentOS7 源码编译安装Redis shell脚本

1&#xff0c;系统环境 操作系统 CentOS Linux release 7.6.1810 (Core) 64位 2&#xff0c;执行以下命令完成安装 yum install -y gcc # 安装依赖包wget http://download.redis.io/releases/redis-5.0.5.tar.gz # 下载Redis安装包 tar -xzvf redis-5.0.5.tar.gzcd red…