freemarker

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。

页面的静态化  有的较多

中的注释都是以#号表示的

freemarker_第1张图片

freemarker_第2张图片



第一个项目结构

freemarker_第3张图片

代码的实现

package cn.itcast.freemarker.model;

public class Group {
	private String name;
	
	String id;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Group(String name) {
		super();
		this.name = name;
	}

	public Group() {
	}
	
	public void sayHello(){
		System.out.println("hello");
	}
	

	public void sayHello2(){
		System.out.println("hello");
	}
	
	public void sayHello1(){
		System.out.println("hello");
		
		System.out.println("hello2");
		
		System.out.println("hello3");
	}
	
	public void test(){

		System.out.println("lisi");

		System.out.println("wangwu");
		System.out.println("wangwu");
	}
}

package cn.itcast.freemarker.model;

public class User {
	private int id;
	private String name;
	private int age;
	private Group group;
	
	private String ddd;
	
	public Group getGroup() {
		return group;
	}
	public void setGroup(Group group) {
		this.group = group;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
	public void remove(){
		
	}
}

package cn.itcast.util;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class FMutil {
	
	/**
	 * 
	 * @param ftlName:模板名称
	 * @param fileName:生成的页面名称
	 * @param map:数据
	 * @throws Exception
	 */
	public void ouputFile(String ftlName, String fileName,  Map map) throws Exception{
		//创建fm的配置
		Configuration config = new Configuration();
		//指定默认编码格式
		config.setDefaultEncoding("UTF-8");
		//设置模板的包路径,包的路径使用/来分隔
		config.setClassForTemplateLoading(this.getClass(), "/ftl");
		获得包的模板
		Template template = config.getTemplate(ftlName);
		//指定文件输出的路径
		String path = "D:/fm";
		//定义输出流,注意的必须指定编码
		Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path+"/"+fileName)),"UTF-8"));
		//生成模板
		template.process(map, writer);
	}

}

freemarker_第4张图片

fm1.ftl

${username}
fm2.ftl





Insert title here


${username}

fm3.ftl




Insert title here


${user.id}-------${user.name}-------${user.age}

<#-- 注释的写法--> <#if user.age lt 10> 小孩 <#elseif user.age lt 16> 未成年 <#else> 已经成年

fm4.ftl




Insert title here


<#list userList as user>
	<#-- list的索引变量名+"_index" -->
	${user_index}---------${user.id}-----${user.name}-------${user.age}

fm5.ftl





Insert title here
<#include "/top1.ftl">


<#list userList as user>
${user.id}-----${user.name}-------${user.age}
fm6.ftl





Insert title here



<#-- 如果所取的属性值为空默认不处理会报错,如果想显示空(xxx.yy)!-->
${user.id}-----${user.name}-------${user.age}-----${(user.group)!}
${user.group!"空值"} ${(user.group.name)!} <#-- 三层以上不如不加括号用!直接取值不成功必须加括号,按规范无论几层都加括号--> ${(a.b)!} <#-- ()??非空判断--> <#if (user.group)??> 不为空 <#else> 为空
fm6.ftl




Insert title here




<#assign name="zhangsan">
${name}

<#assign num=10>
${num+10}
 
<#assign num="10">
${num+10}
<#--布尔类型必须要转成字符串来输出-->
<#assign is=true>
${is?string}

${(a.b)???string}

<#-- 日期需要转成字符串输出 -->
${now?string("yyyy-MM-dd HH:mm:ss")}

<#--如果变量重复后边的变量值会覆盖前面的-->
<#assign bir="1985-04-22 12:33:33"?date("yyyy-MM-dd HH:mm:ss")>
${bir}


<#assign bir="1985-04-22 12:33:33"?datetime("yyyy-MM-dd HH:mm:ss")> ${bir} <#-- 把html转成文本类型 --> ${"
"?html} ${"abcd"?left_pad(10,"-")} ${1.6?int}
fm7.ftl





Insert title here




<#assign name="zhangsan">
${name}

<#assign num=10>
${num+10}
 
<#assign num="10">
${num+10}
<#--布尔类型必须要转成字符串来输出-->
<#assign is=true>
${is?string}

${(a.b)???string}

<#-- 日期需要转成字符串输出 -->
${now?string("yyyy-MM-dd HH:mm:ss")}

<#--如果变量重复后边的变量值会覆盖前面的-->
<#assign bir="1985-04-22 12:33:33"?date("yyyy-MM-dd HH:mm:ss")>
${bir}


<#assign bir="1985-04-22 12:33:33"?datetime("yyyy-MM-dd HH:mm:ss")> ${bir} <#-- 把html转成文本类型 --> ${"
"?html} ${"abcd"?left_pad(10,"-")} ${1.6?int}
productDetail.ftl











商品详细_移动商城_中国移动通信









本网站将于4月11日12:00进行系统维护,维护期间,本站将暂停业务办理等相关业务,敬请见谅。

商品分类

销量排行榜

  • 1. 摩托罗拉XT319
    摩托罗拉摩托罗拉托罗拉...
    摩托罗拉摩托罗拉托罗拉拉摩托罗拉摩托罗拉托罗罗...
    抢购价:¥3599
  • 2. 摩托罗拉XT319
    摩托罗拉XT319
    3G手机(黑)WCDMA/GSM 新品上市!!下单就返
    抢购价:¥3599
  • 3. 摩托罗拉XT319
    摩托罗拉XT319
    3G手机(黑)WCDMA/GSM 新品上市!!下单就返
    抢购价:¥3599
  • 4. 摩托罗拉XT319
    摩托罗拉XT319
    3G手机(黑)WCDMA/GSM 新品上市!!下单就返
    抢购价:¥3599
  • 5. 摩托罗拉XT319
    摩托罗拉XT319
    3G手机(黑)WCDMA/GSM 新品上市!!下单就返
    抢购价:¥3599
  • 6. 摩托罗拉XT319
    摩托罗拉XT319
    3G手机(黑)WCDMA/GSM 新品上市!!下单就返
    抢购价:¥3599
  • 7. 摩托罗拉XT319
    摩托罗拉XT319
    3G手机(黑)WCDMA/GSM 新品上市!!下单就返
    抢购价:¥3599
  • 8. 摩托罗拉XT319
    摩托罗拉XT319
    3G手机(黑)WCDMA/GSM 新品上市!!下单就返
    抢购价:¥3599
  • 9. 摩托罗拉XT319
    摩托罗拉XT319
    3G手机(黑)WCDMA/GSM 新品上市!!下单就返
    抢购价:¥3599
  • 10. 摩托罗拉XT319
    摩托罗拉XT319
    3G手机(黑)WCDMA/GSM 新品上市!!下单就返
    抢购价:¥3599

我的浏览记录

${item.itemName }${item.promotion }

 
thumbnail 1 thumbnail 2 thumbnail 3 thumbnail 4 thumbnail 5
 
  • ¥3999.00(市场价:¥5789.00)
  • ${item.itemNo }
  • 4分(已有17人评价)
  • 包邮    配送区域
  • 有货
  • 网银支付 支付宝 手机支付
营销活动选择营销活动以获得更多优惠。
1、全球通50优惠购机 [查看详情]
2、畅想计划 [查看详情]
3、2011全球通88套餐终端营销活动 [查看详情]

商品描述 规格参数 包装信息

${(item.itemClob.itemDesc)! }
本产品全国联保,享受三包服务,质保期为:一年质保
如因质量问题或故障,凭厂商维修中心或特约维修点的质量检测证明,享受7日内退货,15日内换货,15日以上在质保期内享受免费保修等三包服务!
售后服务电话:400-830-8300
品牌官方网站:http://www.huawei.com/cn/
服务承诺:
中国移动手机购商城向您保证所售商品均为正品行货,自带机打发票,与商品一起寄送。凭质保证书及中国移动手机购商城发票,可享受全国联保服务,与您亲临商场选购的商品享受相同的质量保证。
中国移动手机购商城还为您提供具有竞争力的商品价格和运费政策,请您放心购买!(钟表除外)
注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
权利声明:
中国移动手机购商城上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是中国移动手机购商城重要的经营资源,未经许可,禁止非法转载使用。

top1.ftl

欢迎${username}

package com.rl.test;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;

import cn.itcast.freemarker.model.User;
import cn.itcast.util.FMutil;

public class FMTest {
	
	FMutil fm;
	Map map ;

	@Before
	public void setUp() throws Exception {
		fm = new FMutil();
		map = new HashMap();
	}

	//静态页面生成 zhangsan
	@Test
	public void test1() throws Exception {
		map.put("username", "zhangsan");
		fm.ouputFile("fm1.ftl", "fm1.html", map);
	}
	@Test
	public void test2() throws Exception {
		map.put("username", "zhangsan");
		fm.ouputFile("fm2.ftl", "fm2.html", map);
	}
	
	@Test
	public void test3() throws Exception {
		User user = new User();
		user.setId(1);
		user.setName("dalang");
		user.setAge(30);
		
		map.put("user", user);
		fm.ouputFile("fm3.ftl", "fm3.html", map);
	}
	
	@Test
	public void test4() throws Exception {
		List userList = new ArrayList();
		for(int i = 0 ; i < 10; i++){
			User user = new User();
			user.setId(1+i);
			user.setName("dalang");
			user.setAge(13+i);
			userList.add(user);
		}
		map.put("userList", userList);
		fm.ouputFile("fm4.ftl", "fm4.html", map);
	}
	
	@Test
	public void test5() throws Exception {
		List userList = new ArrayList();
		for(int i = 0 ; i < 10; i++){
			User user = new User();
			user.setId(1+i);
			user.setName("dalang");
			user.setAge(13+i);
			userList.add(user);
		}
		map.put("userList", userList);
		map.put("username", "西门庆");
		fm.ouputFile("fm5.ftl", "fm5.html", map);
	}
	
	@Test
	public void test6() throws Exception {
		User user = new User();
		user.setId(1);
		user.setName("dalang");
		user.setAge(13);
		map.put("user", user);
		fm.ouputFile("fm6.ftl", "fm6.html", map);
	}
	@Test
	public void test7() throws Exception {
		map.put("now", new Date());
		fm.ouputFile("fm7.ftl", "fm7.html", map);
	}

}
pom.xml


  4.0.0

  org.konghao.freemarker
  freemarker-hello
  0.0.1-SNAPSHOT
  jar

  freemarker-hello
  http://maven.apache.org

  
    UTF-8
  

  
    
      junit
      junit
      4.7
      test
    
    
	  org.freemarker
	  freemarker
	  2.3.19
	
  



你可能感兴趣的:(java,学习笔记,java-wab)