zoukankan      html  css  js  c++  java
  • 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 }

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

  • 相关阅读:
    如何进入docker 使用root用户的方式
    阿里云服务搭建nginx并配置
    阿里云容器部署Redis集群
    Redis运维利器 -- RedisManager
    远程连接-使用SSH密钥对远程登录阿里云云服务器
    第1课:SQL注入原理深度解析
    数据库设计三大范式
    linux指令大全(归类整理)
    linux目录结构
    linux-创建/使用快照/克隆(类似windows中备份还原)
  • 原文地址:https://www.cnblogs.com/hongten/p/hongten_freemarker.html
Copyright © 2011-2022 走看看