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群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/p/4241260.html

时间: 2024-11-02 09:43:57

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

java-关于学习Java的电脑配置

问题描述 关于学习Java的电脑配置 网上看到一款组装的笔记本,配置如下:CPU英特尔赛扬J1800,内存4G,硬盘320G,不知用来学习java,以及数据库等行不行.请各位大神不吝赐教 解决方案 开个玩笑,如果影响你编程最大的因素是总是控制不住自己想玩游戏,那么买个老一点的电脑恐怕更好--电脑慢得都看不成电影也玩不了游戏了,学习编程还绰绰有余. 事实上,只要开机能进系统的计算机,都可以用来学习编程.当年我刚上大学学习编程的计算机不过是Intel Celeron 266MHz(0.266GHz,

Java SDK环境配置教程

  1.安装JDK 双击打开刚刚下载的JDK安装包,安装目录可以为任意,只要你记着就好,当然,C盘是比较好,但由于小祺是一名程序员,装了比较多开发相关的软件及环境,因此装在D盘 2.JAVA环境变量配置 安装好JDK后,找到我的电脑,按右键,点属性选项, 按高级选项卡,点击环境变量 Win7或vista为:计算机-属性-高级系统设置-高级-环境变量 接着,大家会看到这一界面: 下面,我们在系统变量中找到三个环境变量,分别为:CLASSPATH,PATH,JAVA_HOME(若无请按新建)若相应变

editplus java编程环境配置

  快速的在editplus中搭建java的开发运行环境,简单的editplus java环境搭建教程,安装jdk和设置环境变量的过程适合新手练习. 用Editplus配置JAVA编辑环境 首先:认识组 1. 打开Editplus,选择"工具->参数选择"在弹出的窗口中选择"用户工具" 2.点组名称,将"Group 1"改成java(当然不改也可以). Group指的是工具组,工具组之间可以用快键切换. 组内的程序的快键默认依次是ctrl1

开发-java公式可配置化如何解决

问题描述 java公式可配置化如何解决 各位同学们,最近在公式遇到一个棘手的问题,就是要实现一个: 比如我的网站原本有一个页面用来显示故障率的报表,但是可能故障率的公式变了, 这个时候就得开发人员去开发,那么久想在前台提供一个可以配置计算公式的功能, 这样如果计算公式发生变化只需要在前台在更改公式就可以了,对应的报表也会变化 解决方案 做一个解析器,解析前端的表达式 解决方案二: http://blog.csdn.net/liu251/article/details/4567553

Java环境变量配置教程_java

本文实例为大家分享了java的环境变量设置方法,供大家参考,具体内容如下  安装好jdk后找到我的电脑(右键) --> 属性-->高级选项卡-->环境变量,里面有管理员的用户变量,有系统变量.选哪一个都无所谓,我选的是Administrator的用户变量即管理员的用户变量,点击"新建",下面是需要填入的三个环境变量,形式都是环境名=环境值,依次填入即可: JAVA_HOME=c:\j2sdk1.5.0 (jdk安装文件夹位置) classpath=.;%JAVA_HO

classpath、path、JAVA_HOME的作用及JAVA环境变量配置

原文:classpath.path.JAVA_HOME的作用及JAVA环境变量配置   CLASSPATH是什么?它的作用是什么? 它是javac编译器的一个环境变量.它的作用与import.package关键字有关.当你写下improt java.util.*时,编译器面对import关键字时,就知道你要引入java.util这个package中的类:但是编译器如何知道你把这个package放在哪里了呢?所以你首先得告诉编译器这个package的所在位置:如何告诉它呢?就是设置CLASSPAT

java安装环境变量配置错误怎么办?

问题描述 java安装环境变量配置错误怎么办? 如题.小白一只,这个问题一直在网上找答案,却一直没能解决.卸载重新安装,但是已经设置好的环境变量却不会删除,主要是path变量的问题. 解决方案 如图,设置path注意:变量值的输入框中需找到开头开始填写bin的地址,如下:**D:prog_installjdk1.7.0_13in:**,注意尾部一定要添加分号,表示是一个完整路径,**其他的本来存在的路径千万不能删除** 解决方案二: 在控制面板,系统属性,高级,环境变量里面可以改. 解决方案三:

java环境变量配置四种方法

原文:java环境变量配置四种方法        Java编程首要工作就是安装JDK(Java Development Kit).一通"NEXT"点完安装后就是最重要的环境变量设置了.也许有人会问为什么要设置环境变量,要理解这点,首先要明白环境变量的作用.环境变量可以简单的理解为路径导向.例如:Windows里面的临时文件夹存放的路径导向.当要访问此类文件时可根据此环境变量找到它的存放目录.像下面讲的CLASSPATH变量是为了在我们输入Java命令如javac等的时候不用敲入它的路径

java 环境变量配置-【初学者求解】JAVA环境配置问题

问题描述 [初学者求解]JAVA环境配置问题 输入javac是结果错误.第一个例子小程序也错误. 配置classpath path百度了好多自己都混乱了...最开始把PATH值删掉了,后来又在别人电脑上复制了一个,不知道能用不...这个学期刚开JAVA,连配置都还不会TAT,求教,谢谢... 解决方案 在命令提示符里面输入javac出错表示你的jdk没安装好,或者是环境变量没设置好.1. 假设jdk没装好,可以卸载了重装一次,要卸载完全.2. 假设环境变量没有设置好,那可以按照下面的步骤:环境变