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

FreeMarker是什么

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

FreeMarker是如何工作的

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

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

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

Test

example.Test

Test

*.do

index.jsp

配置依次说明了:有一个叫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中明确指定。不会出现找不到的问题。

代码:

Hello

${user}

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

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

packageexample;import java.io.*;import java.util.*;importjavax.servlet.ServletException;import javax.servlet.http.*;import freemarker.template.*;public class Test extendsHttpServlet {privateConfiguration _config;public voidinit() {//初始化Freemarker配置

_config = newConfiguration(Configuration.VERSION_2_3_0);//设置Freemarker模板文件的位置

_config.setServletContextForTemplateLoading(this.getServletContext(), "templates");

}public void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException{//数据

Map root = newHashMap();

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中添加一个超链接:Freemarker first page。整个例子就可以运行了。看那看效果吧。

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

参考:

http://freemarker.org/docs/

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

java freemarker_Java: FreeMarker的配置和使用相关推荐

  1. Java使用freemarker生成word文档并转pdf文档

    Java使用freemarker生成word文档后转pdf 先来看看效果图 进入正题 项目需求: 为订单后生成对应的pdf文档,文档内包含图片. 方案一:使用freemarker和itext把html ...

  2. 基于javaweb的医院分诊挂号住院管理系统(java+springboot+freemarker+mysql)

    基于javaweb的医院分诊挂号住院管理系统(java+springboot+freemarker+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/mye ...

  3. Java通过Freemarker生成docx文件

    一:doc和docx文件 首先我们要了解doc和docx两种word文件的相同点和不同点,为什么ftl可以直接生成doc而生成docx就会报错. 1.doc和docx文件构成 我们可以把doc格式的w ...

  4. 基于javaweb的课程信息管理系统(java+springboot+freemarker+mysql)

    基于javaweb的课程信息管理系统(java+springboot+freemarker+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclip ...

  5. 基于javaweb的物流快递在线寄查快递系统(java+springboot+freemarker+mysql)

    基于javaweb的物流快递在线寄查快递系统(java+springboot+freemarker+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/mye ...

  6. cmd怎么实现Java你好_java环境配置以及如何在cmd窗口运行java代码

    对于初学java的人来说,电脑的环境配置也许会让你头疼,但只要你认真一些学习,相信对你来说都是OK的啦~ 首先回到桌面,选择我的电脑,单击右键属性,进入高级系统设置,点击环境变量设置.用户变量选择Te ...

  7. java获取jndi密码_用JAVA代码获取Weblogic配置的JNDI 数据源连接

    第一步:生成与JDK版本对应的weblogicjar,利用cmd 进入到weblogic_home 路径下进入到server/lib目录,然后运行  JDK  1.6 命令 "java -j ...

  8. 零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置

    1.课程名称:Java发展及JDK配置 本季介绍了JAVA的发展过程,包括JDK的发展历程,path路径的配置和classpath的配置及作用.并简单讲解了一个简单的JAVA程序,并通过此程序讲解了J ...

  9. JAVA EE Eclipse下配置Tomcat服务器

    在进行Java web编程之前,必须要进行web服务器的配置,这里选择在Java EE(版本) Eclipse中进行服务器的配置.当然了,在安装Java EE Eclipse之前要先安装JDK,并且要 ...

最新文章

  1. python写一个文件下载器_Python3使用TCP编写一个简易的文件下载器
  2. 国民认证科技有限公司助力构建我国可信网络空间
  3. R语言all函数、any函数判断逻辑向量(logical vector)实战
  4. 三个技巧,将Docker镜像体积减小90%
  5. python数据分析的主要流程-用Python语言做数据分析基本思路和流程
  6. 汇编: 使用[bx]代替[0]获取内存数据
  7. 鸿蒙大陆武器合成,鸿蒙大陆9.1攻略(附隐藏英雄密码)
  8. node 升级_Node.js 版本知多少?又该如何选择?
  9. 做系统ghost步骤图解_用好这工具,小孩都能会重装系统!
  10. html 前端传数据流,jquery – 使用Node.js流式传输数据
  11. linux系统下Opencv4.1.1编译安装,以及增加子函数和python中调用
  12. 在cad如果用计算机,CAD如何使用快速计算器为中的变量区域功能
  13. java表头表体动态返回_JAVA LIST 简单分页 集成EXT4 grid表头动态返回
  14. 1.1.6版本Druid连接MSSQLServer 2008 R2报错The query timeout value -1 is not valid. #2210
  15. 函数式编程( Functional)与命令式编程( Imperative)对比
  16. 中缀表达式 转 前缀表达式
  17. python英文词频统计代码_python词频统计_英文
  18. 小程序微信支付errcode:40163问题
  19. Java SE Lesson22_ClassLoader
  20. Win10屏保设置位置在哪里可以找到

热门文章

  1. FD.io VPP官方邮件列表
  2. uft自动化测试工具安装步骤_自动化测试灵魂三问:是什么、为什么和做什么
  3. Yarn的资源调度与隔离
  4. 1075 - Incorrect table definition;there can be only one auto column and it must be defined as a key
  5. springboot+JPARepository实现增删改查
  6. RecycleView拖拽、侧滑删除
  7. php 跨域 验证_php 前后端分离开发进行跨域请求时ajax发送验证参数token的header头解决方法...
  8. 一个wepy开发微信小程序时图片在真机上不显示的问题
  9. Windows 10 May 2020 中 WSL 与 WSL2 的性能比较
  10. GraphQL:现代数据库管理系统的演变