Java: FreeMarker的配置和使用

初学什么都不可以忽略的地方就是这个东西的官方网站: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等。这样有利于读者从总体出发逐步把握每一个相关的细节。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>Test</servlet-name>
        <servlet-class>example.Test</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Test</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</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中明确指定。不会出现找不到的问题。

代码:

<!DOCTYPE html>
<html>
  <head>
    <title>Hello</title>
  </head>

  <body>
    This is my HTML page. <br>
    <h1>${user}</h1>
  </body>
</html>

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

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

package example;

import java.io.*;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import freemarker.template.*;

public class Test extends HttpServlet {

    private Configuration _config;

    public void init() {
        // 初始化Freemarker配置
        _config = new Configuration(Configuration.VERSION_2_3_0);
        // 设置Freemarker模板文件的位置
        _config.setServletContextForTemplateLoading(this.getServletContext(), "templates");
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        // 数据
        Map root = new HashMap();
        root.put("user", "Jack");

        // 获取模板
        Template t = _config.getTemplate("Test.ftl");

        // 准备输出, 使用模板的编码作为本页的charset
        response.setContentType("text/html; charset=" + t.getEncoding());
        PrintWriter out = response.getWriter();

        try{
            // 在模板中加入动态数据
            t.process(root, out);
        }
        catch(freemarker.template.TemplateException e){
            throw new ServletException("处理Template模版中出现错误", e);
        }
    }
}

代码_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

欢迎加群互相学习,共同进步。QQ群:58099570 | 做人要厚道,转载请注明出处!

时间: 2024-08-09 23:54:35

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

Java 开发环境配置

在本章节中我们将为大家介绍如何搭建Java开发环境. window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html,点击如下下载按钮: 在下载页面中你需要选择接受许可,并根据自己的系统选择对应的版本,本文以 Window 64位系统为例: 下载后JDK的安装根据提示进行,还有安装JDK的时候也会安装JRE,一并安装就可以了. 安装J

win7和linux下的java开发环境配置

JDK环境变量配置是java开发者第一个要遇到的问题.下边介绍一下win7平台和linux下的jdk环境变量的配置 1.win7的配置 首先下载符合操作系统版本的jdk,比如最新的jdk8 下载链接http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html: 当然一般开发者不会最新的Jdk,现在主流的选择是jdk6和jdk7,当然越来越多的开发者切换到jdk8的平台. 下载之后,一路安装,

Java Service Wrapper配置详解

1 #encoding=UTF-8 2 # Configuration files must begin with a line specifying the encoding 3 # of the the file. 4 5 #******************************************************************** 6 # Wrapper License Properties (Ignored by Community Edition) 7 #*

ckeditor编辑器在java项目中配置

一.基本使用: 1.所需文件架包 A. Ckeditor基本文件包,比如:ckeditor_3.6.2.zip 下载地址:http://ckeditor.com/download 2.配置使用 A.将下载下来的CKEditor压缩解压,将解压后的文件夹("ckeditor")拷贝进项目里面,比如我是放在"WebContent"的"commons"文件夹下: B.在需要使用CKEditor的页面引入CKEditor的支持javascript <

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

Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正常运行,而java命令有时可以正常运行,有时却不可以,不可以的症状就是显示“找不到或无法加载主类”. 在网上找了各种资料,最终发现是因为代码里含有package语句,所以无法在cmd下运行java命令解释.class文件.而那些可以运行的文件就是因为没有使用package语句. 我这种问题的解决方法

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

一.C++开发环境配置 1. 下载MingW 2. 环境变量配置,系统属性->高级设置->环境变量,如果Mingw装在c盘更目录,其它自己思考 (1)PATH  变量值中加入 C:\MinGW\bin (2)LIBRARY_PATH  变量值中加入 C:\MinGW\lib, (3)C_INCLUDEDE_PATH  变量值中加入 C:\MinGW\include 用Sublime Text3 新建C++ 编译系统,设置为以下代码: { "cmd": ["g++&

java的环境配置

java的安装 1,进入官网  https://www.oracle.com/index.html 2.Menu -> Downloads -> java ->  all Java Downloads -> (右侧 ) new Doanloads 下面的最新版本 Java SE 8 Update 131 -> JDK Download ->找到对应的版本:Windows x86 : jdk-8u131-windows-i586.exe: JDK的安装 下载完JDK点击 

Java简介 环境配置

1.简单:相对c/c++ 底层的工作省去了(垃圾回收,空间分配).2.跨平台(源码)可移植:Write Once,Run Anywhere. C++ 源码---目标(机器码)---exe可执行文件 Java 源码---字节码(平台无关 结构中立class,字节码传播更安全,相当于加密了源码,因为只有JVM才能解读)---JVM(不是跨平台的,所以JDK有平台版本)3.安全:JVM执行了封装的不安全代码,不用程序员执行(指针能指到数组越界的值).---开飞机(想飞哪儿就飞哪儿) Java:对象的引

第一课JAVA开发环境配置

进行JAVA环境安装首先得进行jdk1.7部署,注意应放在没有中文和空格的目录下,然后进行配置环境变量,配置环境变量分为三步: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:D:\Java\jdk1.7.0_60_x64 变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 3. 选择“系统变量”中变量名为“Path”