freemarker获取封装类中对象的属性(六)
freemarker获取封装类中对象的属性
1、设计思路
(1)封装学生类
(2)创建数据模型
(3)新建student.ftl
(4)运行Junit测试文件,生成HTML文件
2、封装学生类
Student.java:
/**
* @Title:Student.java
* @Package:com.you.freemarker.model
* @Description:学生类
* @author:Youhaidong(游海东)
* @date:2014-5-26 下午11:41:05
* @version V1.0
*/
package com.you.freemarker.model;
import java.io.Serializable;
import java.util.Date;
/**
* 类功能说明
* 类修改者 修改日期
* 修改说明
* <p>Title:Student.java</p>
* <p>Description:游海东个人开发</p>
* <p>Copyright:Copyright(c)2013</p>
* @author:游海东
* @date:2014-5-26 下午11:41:05
* @version V1.0
*/
public class Student implements Serializable
{
/**
* @Fields serialVersionUID:序列化
*/
private static final long serialVersionUID = 1L;
/**
* 学生姓名
*/
private String studentName;
/**
* 学生性别
*/
private String studentSex;
/**
* 学生年龄
*/
private int studentAge;
/**
* 学生生日
*/
private Date studentBirthday;
/**
* 学生地址
*/
private String studentAddr;
/**
* QQ
*/
private long studentQQ;
/**
* @return the studentName
*/
public String getStudentName() {
return studentName;
}
/**
* @param studentName the studentName to set
*/
public void setStudentName(String studentName) {
this.studentName = studentName;
}
/**
* @return the studentSex
*/
public String getStudentSex() {
return studentSex;
}
/**
* @param studentSex the studentSex to set
*/
public void setStudentSex(String studentSex) {
this.studentSex = studentSex;
}
/**
* @return the studentAge
*/
public int getStudentAge() {
return studentAge;
}
/**
* @param studentAge the studentAge to set
*/
public void setStudentAge(int studentAge) {
this.studentAge = studentAge;
}
/**
* @return the studentBirthday
*/
public Date getStudentBirthday() {
return studentBirthday;
}
/**
* @param studentBirthday the studentBirthday to set
*/
public void setStudentBirthday(Date studentBirthday) {
this.studentBirthday = studentBirthday;
}
/**
* @return the studentAddr
*/
public String getStudentAddr() {
return studentAddr;
}
/**
* @param studentAddr the studentAddr to set
*/
public void setStudentAddr(String studentAddr) {
this.studentAddr = studentAddr;
}
/**
* @return the studentQQ
*/
public long getStudentQQ() {
return studentQQ;
}
/**
* @param studentQQ the studentQQ to set
*/
public void setStudentQQ(long studentQQ) {
this.studentQQ = studentQQ;
}
/**
* <p>Title:</p>
* <p>Description:无参构造函数</p>
*/
public Student() {
super();
}
/**
* <p>Title:</p>
* <p>Description:有参构造函数</p>
* @param studentName
* @param studentSex
* @param studentAge
* @param studentBirthday
* @param studentAddr
* @param studentQQ
*/
public Student(String studentName, String studentSex, int studentAge,
Date studentBirthday, String studentAddr, long studentQQ) {
super();
this.studentName = studentName;
this.studentSex = studentSex;
this.studentAge = studentAge;
this.studentBirthday = studentBirthday;
this.studentAddr = studentAddr;
this.studentQQ = studentQQ;
}
}
3、创建数据模型
Map<String,Object> root = null;
/**
*
* @Title:testStudent
* @Description:
* @param:
* @return: void
* @throws
*/
@Test
public void testStudent()
{
//创建数据模型
root = new HashMap<String,Object>();
root.put("student", new Student("张三丰","男",34,new Date(1988-12-12),"湖北省武汉市武昌洪山区",78451214));
student("student.ftl");
studentFile("student.ftl","student.html");
}
/**
*
* @Title:student
* @Description:
* @param:@param name
* @return: void
* @throws
*/
private void student(String name)
{
ft.printFtl(name,root);
}
/**
*
* @Title:studentFile
* @Description:
* @param:@param name
* @param:@param fileName
* @return: void
* @throws
*/
private void studentFile(String name,String fileName)
{
ft.printFile(name, root, fileName);
}
4、新建student.ftl
student.ftl:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>学生信息</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
姓名:${student.studentName}
性别:${student.studentSex}
年龄:${student.studentAge}
生日:${(student.studentBirthday)?string("yyyy-MM-dd")}
地址:${student.studentAddr}
QQ:${student.studentQQ}
</body>
</html>
5、运行Junit测试文件,生成HTML文件

6、控制台输出结果
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>学生信息</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
姓名:张三丰
性别:男
年龄:34
生日:1970-01-01
地址:湖北省武汉市武昌洪山区
QQ:78,451,214
</body>
</html>
freemarker获取封装类中对象的属性(六)的更多相关文章
- freemarker获取封装类中对象的属性
freemarker获取封装类中对象的属性 1.设计思路 (1)封装学生类 (2)创建数据模型 (3)新建student.ftl (4)运行Junit测试文件,生成HTML文件 2.封装学生类 Stu ...
- 利用KVC的方式更方便地获取数组中对象的属性的最值平均值等
直接上代码 输出结果也在相应的代码里标注出来了 //main.m文件 #import <Foundation/Foundation.h> #import "Student.h&q ...
- Java获取未知类型对象的属性
获取未知类型对象的属性通常有两种方式: 一是通过自定义注解的方式,通过获取被注解的属性从而获取属性的值,这种方式也是Spring参数注入的重要实现手段 二是通过反射获取属性的名称,通过属性名从而获取属 ...
- JavaScript中对象的属性
在JavaScript中,属性决定了一个对象的状态,本文详细的研究了它们是如何工作的. 属性类型 JavaScript中有三种不同类型的属性:命名数据属性(named data properties) ...
- java 对list中对象按属性排序
实体对象类 --略 排序类----实现Comparator接口,重写compare方法 package com.tang.list; import java.util.Comparator; publ ...
- springboot中spring.profiles.active来引入多个properties文件 & Springboot获取容器中对象
1. 引入多个properties文件 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据, ...
- Vue 改变数组中对象的属性不重新渲染View的解决方案
Vue 改变数组中对象的属性不重新渲染View的解决方案 在解决问题之前,我们先来了解下 vue响应性原理: Vue最显著的一个功能是响应系统-- 模型只是一个普通对象,修改对象则会更新视图.受到ja ...
- array排序(按数组中对象的属性进行排序)
使用array.sort()对数组中对象的属性进行排序 <template> <div> <a @click="sortArray()">降序& ...
- JS 取Json数据中对象特定属性值
解析JSON JSON 数据 var str = '[{"a": "1","b": "2"}, {"a&quo ...
随机推荐
- bzoj 4591: [Shoi2015]超能粒子炮·改 [lucas定理]
4591: [Shoi2015]超能粒子炮·改 题意:多组询问,求 \[ S(n, k) = \sum_{i=0}^n \binom{n}{i} \mod 2333,\ k \le n \le 10^ ...
- 在ConcurrentModificationException异常上的联想
1.什么是ConcurrentModificationException? 大家都听说过快速报错fast-fail吧,fast-fail的发生就是说明发生了ConcurrentModification ...
- zlib库VS2015编译步骤
[点击这里下载zlib1.2.8源码](http://zlib.net/zlib128.zip) [点击这里下载zlib1.2.8编译动态库](http://zlib.net/zlib128-dll. ...
- nginx隐藏版本号
在实际运用nginx中我们最好将我们的版本号直接隐藏,因为有些版本号的nginx被爆出了漏洞,所以我们为了安全起见,最好将我们的版本号隐藏. 1.对于未安装的nginx我们使用源码编译安装才可以将版本 ...
- 自兴人工智能-------------Python入门基础(1)
Python 是一门简单易学且功能强大的编程语言. 它拥有高效的高级数据结构, 并且能够用简单而又高效的方式进行面向对象编程. Python 优雅的语法和动态 类型,再结合它的解释性,使其在大多数平台 ...
- Windows 定时任务对数据库进行操作
定时对数据库进行操作可以用mysql的event事件来完成,但是只有mysql5.1后的才支持,所以有一定的局限性,也可以通过其他的mysql管理软件实现,而我发现Windows本身就有个定时任务的功 ...
- 新闻热词:从爬虫到react native应用
背景 由于只想了解当天新增的top热词,减少过多信息干扰,打算做一款app实现这个功能. 架构: 热词抓取 -> mysql <=> nodejs <=> nginx & ...
- 本地创建yum源并安装lnmp
注意:安装系统时,文件类型要未xfs类型,root要分配最多的空间 1.挂载安装光盘mount -t iso9660 -o loop CentOS-7-x86_64-DVD-1511.iso /mnt ...
- 揽货最短路径解决方案算法 - C# 蚁群优化算法实现
需求为(自己编的,非实际项目): 某配送中心进行揽货,目标客户数为50个客户,配送中心目前的运力资源如下: 现有车辆5台 单台运力最大行驶距离200千米 单台运力最大载重公斤1吨 问:运力怎样走法才能 ...
- ubuntu下安装memcached与php扩展测试使用
1,memcached需要libevent,所以要先安装它 下载地址:http://download.chinaunix.net/download.php?id=45065&ResourceI ...