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
FreeMarker_模板引擎_代码自动生成器_源码下载相关推荐
- 传智书城首页设计代码_(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载...
模板名称:(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载 本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,创意设 ...
- 响应式包装礼品盒设计pbootcms模板,营销型包装厂家网站源码下载
(响应式)响应式包装礼品盒设计pbootcms模板,营销型包装厂家网站源码下载.包装生产设计类网站pbootcms模板(自适应手机端)+利于SEO优化. 浩沐资源网https://www.dhaomu ...
- 响应式瀑布流布局新闻资讯技术博客织梦模板/DedeCMS自适应手机版游戏新闻网站源码下载
响应式瀑布流布局新闻资讯技术博客织梦模板,DedeCMS自适应手机版游戏新闻网站源码下载.本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,游戏新闻.游戏博客类的网 ...
- 这下终于可以方便地发表测试型网页代码了(附源码下载)
前言 色彩斑斓的"马" 虽然利用插入代码功能可以很华丽的插入色彩斑斓的代码,但是就html(Xhtml)代码.js代码.css代码而言,我更喜欢想蓝色理想论坛中的那种:有个文本框, ...
- python代码加密运行_python源码下载后怎样进行加密
python源码下载后怎样进行加密 发布时间:2020-11-19 09:23:24 来源:亿速云 阅读:60 作者:小新 这篇文章主要介绍了python源码下载后怎样进行加密,具有一定借鉴价值,需要 ...
- mybatis代码自动生成器_最近很火的文章自动生成器,python源码公开了(内附python代码)
学了python,但是又不知道可以用来干嘛.开发一个计算器?太low了.开发一个网站?感觉网站涉及太多知识点,一个人搞不定.不用慌,本文介绍一个最近很火的一个文章自动生成器,它是用python写的,能 ...
- java 仿百度文库源码_java开发_模仿百度文库_SWFTools_源码下载
1 /** 2 *3 */ 4 packagecom.b510.pdf2swf;5 6 importjava.io.BufferedReader;7 importjava.io.File;8 impo ...
- java 仿百度文库源码_java开发_模仿百度文库_OpenOffice2PDF_源码下载
这几天在研究模仿着做类似于百度文库的东西,在这里给大家分享一下我自己做的东西. 由于需要做这样的项目,我查阅了很多资料,最后选定一下方案去做: Txt/Word/Excel/PPT=>PDF(O ...
- WinForm 天猫2013双11自动抢红包【源码下载】
1. 正确获取红包流程 2. 软件介绍 2.1 效果图: 2.2 功能介绍 2.2.1 账号登录 页面开始时,会载入这个网站:https://login.taobao.com/member/login ...
最新文章
- android程序贴吧,【Android 教程总结贴】归纳所有android贴
- 网站服务器可以用虚拟主机吗,做网站虚拟主机可以用服务器吗
- json.net使用说明一
- 【262】pscp命令 实现windows与linux互传文件
- Hasor【付诸实践 03】Dataway 无代码接口工具 DataQL 聚合查询引擎使用 Mybatis 实现分页查询举例说明 + 问题分析(针对GreenPlum数据库)
- android 弹窗 onpause,Android 下拉通知栏时Activity的生命周期——重新理解onPause()
- OSPF中的frame-relay(6) NBMA-broadcast
- jQuery——入门(三)JQuery DOM操作(核心处理和文档处理)
- 转 STL hash_map map
- CSS实现标题文字过长部分显示省略号的方法
- Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 【转】...
- 【Unity优化】怎样实现Unity编辑器中的协程
- C#中读取文本文件导入SQL数据库解决方法
- 01.redis初识
- 基于HyperVID数据集训练自己的车型识别系统
- java 判断两个字符串相等
- Java Swing教程(基础)
- 通过USGS批量下载Sentinel2数据
- 在c语言中 auto的作用,c语言中auto是什么意思
- 传输层的主要功能和协议
热门文章
- qpython3h安装numpy_怎么装不上numpy?
- 鸟哥的linux私房菜有乌班图,折腾Ubuntu的一些summary--初装Ubuntu18和重装Ubuntu18
- java趣味_Java趣味分享:try finally
- python绘制折线图显示数据_漂亮图表也可用python信手拈来!一文教你学会用Python绘制堆积折线图...
- 交叉调试 arm linux,搭建交叉调试环境Arm-Linux-Gdb与gdbserver
- xmlhttprequest 跨域_跨域资源共享(CORS)安全性
- phpcms上传php,phpcms如何上传视频
- Ubuntu 答疑:Ubuntu 添加和删除用户具体步骤及进程被占用的解决方式
- 计算机辅助初中英语教学,初中英语CAI课件制作初探
- php 类分开写,自己前几天写的无限分类类_PHP教程