Freemarker: 把 .ftl 换成 .htm 或者 .jsp类型的, 是否也可以让他生成静态的 .htm 或者 .jsp ?
2017-01-05 13:02
399 查看
首先,由于要使用freemarker开发几套网站前台页面的模板,所以想把所有可能性都尝试一下。
其实上面的标签大家可能看的别扭或者奇怪,简单来说,就是,第一:现在我要在htm或者jsp页面中添加freemarker标签看看能不能运行。第二:在htm中写入freemarker标签后,能否生成.htm(.html)或者.jsp页面。
首先,项目结构图如下:
运行之后,结果如下:
以上疑问全部解决了,说明只要按照freemarker的规范和格式来,无论什么常用的后缀都是可以运行的。
其实上面的标签大家可能看的别扭或者奇怪,简单来说,就是,第一:现在我要在htm或者jsp页面中添加freemarker标签看看能不能运行。第二:在htm中写入freemarker标签后,能否生成.htm(.html)或者.jsp页面。
首先,项目结构图如下:
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.nishuibaichuan.freemarker</groupId> <artifactId>freemarker-hello</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>freemarker-hello</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.20</version> </dependency> </dependencies> </project>
Employeer.java private int id; private String name; private int age; 省略了setter和getter及其构造方法
FreemarkerUtil.java package org.nishuibaichuan.freemarker; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; public class FreemarkerUtil { private static FreemarkerUtil util; private static Configuration cfg; private FreemarkerUtil() { } public static FreemarkerUtil getInstance(String pname) { if(util==null) { cfg = new Configuration(); cfg.setClassForTemplateLoading(FreemarkerUtil.class, pname); util = new FreemarkerUtil(); } return util; } private Template getTemplate(String fname) { try { return cfg.getTemplate(fname); } catch (IOException e) { e.printStackTrace(); } return null; } /** * 通过标准输出流输出模板的结果 * @param root 数据对象 * @param fname 模板文件 */ public void sprint(Map<String,Object> root,String fname) { try { getTemplate(fname).process(root, new PrintWriter(System.out)); } catch (TemplateException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 基于文件的输出 * @param root * @param fname * @param outpath */ public void fprint(Map<String,Object> root,String fname,String outpath) { try { getTemplate(fname).process(root, new FileWriter(outpath)); } catch (TemplateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
TestFreemarker.java package org.nishuibaichuan.freemarker; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Before; import org.junit.Test; import org.nishuibaichuan.freemarker.FreemarkerUtil; import org.nishuibaichuan.freemarker.model.Employeer; public class TestFreemarker { private FreemarkerUtil util = FreemarkerUtil.getInstance("/ftl"); private Map<String,Object> root = new HashMap<String,Object>(); private String fn = "E:/TEST/freemarker/"; @Before public void setUp() { root.put("username", "小张"); } @Test public void test01() { Employeer emp = new Employeer(1, "小李", 17); List<Employeer> emps = Arrays.asList(new Employeer(1, "小李", 22), new Employeer(2, "八戒", 444),new Employeer(3, "刘德华", 54)); root.put("emp", emp); root.put("emps", emps); util.sprint(root, "01.htm"); util.fprint(root, "01.htm", fn+"test01.html"); } @Test public void test011() { Employeer emp = new Employeer(1, "小李", 17); List<Employeer> emps = Arrays.asList(new Employeer(1, "小李", 22), new Employeer(2, "八戒", 444),new Employeer(3, "刘德华", 54)); root.put("emp", emp); root.put("emps", emps); util.sprint(root, "01.htm"); util.fprint(root, "01.htm", fn+"test01.jsp"); } @Test public void test0111() { Employeer emp = new Employeer(1, "小李", 17); List<Employeer> emps = Arrays.asList(new Employeer(1, "小李", 22), new Employeer(2, "八戒", 444),new Employeer(3, "刘德华", 54)); root.put("emp", emp); root.put("emps", emps); util.sprint(root, "01.jsp"); util.fprint(root, "01.jsp", fn+"test0111.jsp"); } }
01.ftl <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>hello:${emp.name}---${emp.id}----${emp.age}</h1> 我是jsp <#if emp.age lt 18> ${emp.name}我小于18岁 <#elseif emp.age gt 60> ${emp.name}我大于60岁† <#else> ${emp.name}我会好好工作!œ </#if> <#list emps as emp> ${emp.id}-----${emp.name}---${emp.age}<br/> </#list> </body> </html>
01.htm <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>hello:${emp.name}---${emp.id}----${emp.age}</h1> 我是张三 <#--以下显示了如何使用判断结构,注意在判断的标签中不用加入${}--> <#if emp.age lt 18> ${emp.name}是童工 <#elseif emp.age gt 60> ${emp.name}应该退休了 <#else> ${emp.name}好好工作 </#if> <#list emps as emp> ${emp.id}-----${emp.name}---${emp.age}<br/> </#list> </body> </html>
01.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>hello:${emp.name}---${emp.id}----${emp.age}</h1> 我是jsp <#if emp.age lt 18> ${emp.name}我小于18岁 <#elseif emp.age gt 60> ${emp.name}我大于60岁† <#else> ${emp.name}我会好好工作!œ </#if> <#list emps as emp> ${emp.id}-----${emp.name}---${emp.age}<br/> </#list> </body> </html>
运行之后,结果如下:
以上疑问全部解决了,说明只要按照freemarker的规范和格式来,无论什么常用的后缀都是可以运行的。
相关文章推荐
- Flying-Saucer使用HTML或者FTL(Freemarker模板)生成PDF
- 使用FreeMarker/Jsp(WebWork2)生成静态/动态RSS文件
- [转]使用FreeMarker/Jsp(WebWork2)生成静态/动态RSS文件
- 使用FreeMarker/Jsp(WebWork2)生成静态/动态RSS文件
- Asp.net生成htm静态文件的两种途径
- jsp生成静态的hmtl文件
- 关于Freemarker生成静态文件的问题
- jsp 上传图片并生成缩位图或者加水印
- Asp.net生成htm静态文件的两种途径
- 基于JXL的通用Excel动态导出过程/可以在Servlet/JSP生成Excel并下载
- jsp生成静态的hmtl文件
- Asp.net生成htm静态文件的两种途径
- 利用ASP+XML自动生成静态HTM
- Asp.net生成htm静态文件的两种途径
- Asp.net生成htm静态文件的两种途径(转)
- ASP生成静态htm页面基本代码!
- jsp生成静态的hmtl文件
- 如何在编译时刻判断两个类型是否可以自动转换?——《Modern C++ Design》读书笔记(1)
- Jsp生成静态页面
- jsp 生成静态文件