初学什么都不可以忽略的地方就是这个东西的官方网站:http://freemarker.org/。下载或者API都可以参考这里。

FreeMarker是什么

非常的简单明了。FreeMarker是一个java包。实现了MVC模式,分离开发者和设计师。也就是分离html也java的代码。

FreeMarker是如何工作的

这是官网的图。非常明确的说明了FreeMarker是如何运作的。首先需要有一个template模板,在那里就是一堆的html标签和一些专属FreeMarker的标签,这些标签之后会被具体的数据代替。这些数据就是有左下的Java objects提供。<FreeMarker>就是工程中的Jar包。他把这些模板和Java objects的数据加工组合之后输出html页面。所以,FreeMarker的功能,就如官网中一直强调的,不是别的而是一个模板引擎。

在工程中最后把这些捏合在一起,让他们彼此知道、协同工作的是web.xml配置文件。这里先介绍web.xml的配置,之后具体说明如何一步一步的添加配置文件中涉及到的模板、java objects等。这样有利于读者从总体出发逐步把握每一个相关的细节。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="3.0"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  7. <servlet>
  8. <servlet-name>Test</servlet-name>
  9. <servlet-class>example.Test</servlet-class>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>Test</servlet-name>
  13. <url-pattern>*.do</url-pattern>
  14. </servlet-mapping>
  15. <welcome-file-list>
  16. <welcome-file>index.jsp</welcome-file>
  17. </welcome-file-list>
  18. </web-app>

配置依次说明了:有一个叫Test的servlet,对应在代码的example包的Test类。这个类的名字可以随便起,其他的节点在配置的时候使用的知识servlet-name,然后他会找到这个类。下面的servlet-mapping在url中访问*.do的时候会访问这个servlet-name为Test的节点配置的类。之后,在index.jsp中添加一个指向*.do的超链接。整个的整个测试项目就可以run起来了。

按照MVC的方式理解。在servlet-name中配置的类就是Controller。View就是模板。Model就是之后在HashMap中的数据。下面依次创建在配置文件中直接或者间接需要用到的代码。

添加可运行的代码

这里假设你已经创建了一个web project,这个project的名字叫做test。首先创建模板。一定要在WebRoot目录下创建一个templates目录。然后在里面添加后缀为ftl(freemarker template的缩写),名称为Test的模板。在配置文件中没有出现模板叫什么,所以这里你可以随便命名这个模板文件。这个文件之后会在Controller中明确指定。不会出现找不到的问题。

代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Hello</title>
  5. </head>
  6.  
  7. <body>
  8. This is my HTML page. <br>
  9. <h1>${user}</h1>
  10. </body>
  11. </html>

这个模板非常简单。只在h1标签中方了一个需要数据“user”的Freemarker标签。这个“user”数据就是在之后的HashMap提供的。

然后添加Controller,也就是在web.xml配置文件中指定的example.Test类。首先在项目的根目录下,创建一个“example”的包,然后在里面添加一个Servlet。Servlet的名称设定为Test。名字可以随意起,但是在配置文件中的必须和这个类的名称是一致的。

  1. package example;
  2.  
  3. import java.io.*;
  4. import java.util.*;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.*;
  7. import freemarker.template.*;
  8.  
  9. public class Test extends HttpServlet {
  10.  
  11. private Configuration _config;
  12.  
  13. public void init() {
  14. // 初始化Freemarker配置
  15. _config = new Configuration(Configuration.VERSION_2_3_0);
  16. // 设置Freemarker模板文件的位置
  17. _config.setServletContextForTemplateLoading(this.getServletContext(), "templates");
  18. }
  19.  
  20. public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
  21. // 数据
  22. Map root = new HashMap();
  23. root.put("user", "Jack");
  24.  
  25. // 获取模板
  26. Template t = _config.getTemplate("Test.ftl");
  27.  
  28. // 准备输出, 使用模板的编码作为本页的charset
  29. response.setContentType("text/html; charset=" + t.getEncoding());
  30. PrintWriter out = response.getWriter();
  31.  
  32. try{
  33. // 在模板中加入动态数据
  34. t.process(root, out);
  35. }
  36. catch(freemarker.template.TemplateException e){
  37. throw new ServletException("处理Template模版中出现错误", e);
  38. }
  39. }
  40. }

代码_config.setServletContextForTemplateLoading(this.getServletContext(), "templates");指定了模板文件所在的目录,以后的全部的Controller的模板文件都是从这个地方找了,也就是前文指定的在WebRoot下创建的templates目录。在后面的代码Template t = _config.getTemplate("Test.ftl");中指定了具体的模板文件是哪一个。Map root = new HashMap(); root.put("user", "Jack");指定了具体的数据Model。这个key值必须和在模板中设定的${user}一致。最后在方法t.process(root, out);中,把数据添加到模板中。通过这几步以后,MVC的几个部分就结合到了一起。

最后在index.jsp中添加一个超链接:<a href="Hello.do">Freemarker first page</a>。整个例子就可以运行了。看那看效果吧。

Freemarker是一个功能十分强大的模板引擎。不只有文中介绍的简单的数据的替换,还有指令、宏等功能。非常好用。

参考:

http://freemarker.org/docs/

http://gqsunrise.iteye.com/blog/1659118

Java: FreeMarker的配置和使用的更多相关文章

  1. java web.xml配置详解(转)

    源出处:java web.xml配置详解 1.常规配置:每一个站的WEB-INF下都有一个web.xml的设定文件,它提供了我们站台的配置设定. web.xml定义: .站台的名称和说明 .针对环境参 ...

  2. Freemarker的配置与使用

    1.在pro.xml配置文件中引入架包 <!--freemarker-->  <dependency>   <groupId>freemarker</grou ...

  3. java环境变量配置

    1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0 ...

  4. Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法

    Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正 ...

  5. 第一课JAVA开发环境配置

    进行JAVA环境安装首先得进行jdk1.7部署,注意应放在没有中文和空格的目录下,然后进行配置环境变量,配置环境变量分为三步: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_ ...

  6. Java 学习第一步-JDK安装和Java环境变量配置

    Java学习第一步——JDK安装及Java环境变量配置 [原文]  2014-05-30 9:09  Java SE  阿超  9046 views Java作为当下很主流的编程语言,学习Java的朋 ...

  7. 1. webservice在输入命令的时候wsimport的时候会出现如下错误: wsimport不是内部或者外部命令。 2. javac不是内部或者外部命令 3 java 就可以显示配置成功。

    问题: webservice在输入命令的时候wsimport的时候会出现如下错误: wsimport不是内部或者外部命令. javac不是内部或者外部命令 3 java 就可以显示配置成功. 网上搜了 ...

  8. Windows 10 Java环境变量配置

    Win10下 Java环境变量配置 首先,你应该已经安装了 Java 的 JDK 了(如果没有安装JDK,请跳转到此网址:http://www.oracle.com/technetwork/java/ ...

  9. Sublime Text3 C++及Java开发环境配置

    一.C++开发环境配置 1. 下载MingW 2. 环境变量配置,系统属性->高级设置->环境变量,如果Mingw装在c盘更目录,其它自己思考 (1)PATH  变量值中加入 C:\Min ...

随机推荐

  1. oracle之 RAC本地数据文件迁移至ASM

    系统环境:CentOS release 6.7 (Final)Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit 操作过 ...

  2. UEditor自定义toolbar工具条

    使用ueditor的同学都知道,ueditor里有很多功能,很全面,但有时候我们的编辑器不需要太多的功能,比如前台评论或者留言,就不需要这么多功能了,那我们怎么去定制自己想要的工具呢?官方给出了两个方 ...

  3. Phonegap 工程项目介绍

    一.工程项目的路径在www下面,www下面的文件如下图 1. index.html <!DOCTYPE html> <!-- Licensed to the Apache Softw ...

  4. WinForm应用程序中实现自动更新功能

    WinForm应用程序中实现自动更新功能 编写人:左丘文 2015-4-20 近来在给一客户实施ECM系统,但他们使用功能并不是我们ECM制造版提供的标准功能,他们要求对系统作一些定制功能,为了避免因 ...

  5. UTF-8中的BOM

    UTF-8中的BOM UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式.字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB B ...

  6. EqualsBuilder 类的使用

    apache的commons-lang包提供了一个EqualsBuilder类,提供了基本属性.数组.对象等比较操作的封装,可以辅助实现对象的equals(Object)方法. 这个类的使用比较简单, ...

  7. mysql为什么会慢

    --2019.4.18 mysql技术大会分享--叶金荣mysql为什么会慢性能瓶颈分析.排查思路 先确认一下真的是mysql响应慢了吗导致mysql慢可能会有那些因素呢?--资源稀缺 ---cpu, ...

  8. [maven] 实战笔记 - maven 安装配置

    1.下载地址http://maven.apache.org/download.html 2.windows下安装maven(1)下载 apache-maven-3.0-bin.zip 解压到任意目录下 ...

  9. vconsole使用

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  10. leetcode441

    public class Solution { public int ArrangeCoins(int n) { //convert int to long to prevent integer ov ...