您的位置:首页 > Web前端 > HTML

freemarker入门笔记之一:永恒的helloword

2013-06-29 18:21 585 查看
最近由于工作需要接触了freemarker,把学习过程记下来,作为日后复习的根据,同时也算是分享知识了。

好吧,废话少说,进入正题。

freemarker是一种模板引擎,使用目的是使业务逻辑层和表现层分离。与之功能类似的还有velocity和Jsp。其中velocity也是一种模板引擎,而Jsp是动态页面技术。

使用步骤如下:

1、新建web工程,命名为:helloFreemarker

2、下载并导入最新的freemarker.jar

3、准备模板文件

freemarker的模板文件其实和html文件差不多,我们先来看一个html文件:

<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>用户:云端</h1>
<h3>信息:hello freemarker!</h3>
</body>
</html>
在这个html文件中,所有内容都是固定的,如果我们想让文件中的内容随情况不同动态的改变——比如,不同的用户登录会显示不同的用户名和信息,这时就可以用到freemarker了。

freemarker的模板文件后缀是.ftl,形式如下:

<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>用户:${name}</h1>
<h3>信息:${message}!</h3>
</body>
</html>
是不是和html很像?

其中的${name}和${message}会被freemarker用数据模型中的数据替换掉,这样就使页面上的值能随情况不同而变化了。

说实话这种形式挺像Jsp+El表达式的,都是利用占位符来替换页面内容。

总之,模板文件就算准备好了。

在WEB-INF下新建文件夹temp,把模板文件放进去,放好后结构目录如下:



4、新建一个servlet,代码需要如下五步:

(1)创建配置实例

(2)创建数据模型

(3)获取模板

(4)把模板与数据模型合并

(5)输出

具体代码如下:

public class FirstFreeMarkerServlet extends HttpServlet
{

//1、创建配置实例:负责管理FreeMarker模板的Configuration实例
private Configuration cfg = null;

public void init() throws ServletException
{
//创建一个Configuration实例
cfg = new Configuration();
//指定模板文件位置
cfg.setServletContextForTemplateLoading(getServletContext(),"/WEB-INF/temp");
}

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
//2、准备模型数据
Map map = new HashMap();
map.put("message", "hello freemarker");
map.put("name", "云端");

//3、获取模板文件
Template temp = cfg.getTemplate("test.ftl");
//设置编码,解决中文乱码
cfg.setEncoding(Locale.CHINA,"UTF-8");
//4、开始准备生成输出
//- 使用模板文件的Charset作为本页面的charset
//- 使用text/html MIME-type
resp.setContentType("text/html; charset="+temp.getEncoding());

//5、输出
//准备输出对象
Writer out = resp.getWriter();

//合并数据与模型,用out对象输出
try
{
temp.process(map, out);
} catch (TemplateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void destroy()
{
super.destroy();
}
}


5、发布项目,到浏览器输入http://127.0.0.1:8080/helloFreemarker/hello,就可以看到效果了。

最后把servlet的配置也贴出来,供参考。
<servlet-mapping>
<servlet-name>FirstFreeMarkerServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>


参考文章:http://xiaopihai.iteye.com/blog/364030
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  freemarker HTML 实例