freemarker入门笔记之一:永恒的helloword
2013-06-29 18:21
585 查看
最近由于工作需要接触了freemarker,把学习过程记下来,作为日后复习的根据,同时也算是分享知识了。
好吧,废话少说,进入正题。
freemarker是一种模板引擎,使用目的是使业务逻辑层和表现层分离。与之功能类似的还有velocity和Jsp。其中velocity也是一种模板引擎,而Jsp是动态页面技术。
使用步骤如下:
1、新建web工程,命名为:helloFreemarker
2、下载并导入最新的freemarker.jar
3、准备模板文件
freemarker的模板文件其实和html文件差不多,我们先来看一个html文件:
freemarker的模板文件后缀是.ftl,形式如下:
其中的${name}和${message}会被freemarker用数据模型中的数据替换掉,这样就使页面上的值能随情况不同而变化了。
说实话这种形式挺像Jsp+El表达式的,都是利用占位符来替换页面内容。
总之,模板文件就算准备好了。
在WEB-INF下新建文件夹temp,把模板文件放进去,放好后结构目录如下:
4、新建一个servlet,代码需要如下五步:
(1)创建配置实例
(2)创建数据模型
(3)获取模板
(4)把模板与数据模型合并
(5)输出
具体代码如下:
5、发布项目,到浏览器输入http://127.0.0.1:8080/helloFreemarker/hello,就可以看到效果了。
最后把servlet的配置也贴出来,供参考。
参考文章:http://xiaopihai.iteye.com/blog/364030
好吧,废话少说,进入正题。
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
相关文章推荐
- 实习笔记 8:FreeMarker 入门
- freemarker 入门笔记
- FreeMarker入门笔记二之取pojo属性
- 整理一下当年的学习笔记之:初步学习freemarker ,先做一个简单的HelloWord程序!
- freemarker 语法入门笔记
- FreeMarker笔记 前言&第1章 入门
- FreeMarker入门笔记三之spring整合
- freemarker学习笔记_快速入门
- FreeMarker学习笔记-<一>快速入门
- FreeMarker入门笔记一之helloworld
- “ASP.Net快速入门”学习笔记
- mongodb 学习笔记之二 mongodb入门(数据库、文档和集合)
- spark安装及入门笔记
- GIT入门笔记(18)- 标签创建和管理
- Spring学习笔记(二):Spring在STS中的配置和入门例子
- 入门笔记(启动篇)
- 程序员的机器学习入门笔记(六):决策树的入门介绍
- [机器学习入门] 李宏毅机器学习笔记-30 (Sequence Labeling Problem part 2 ;结构化预测-序列标记 part 2)
- Android入门笔记之状态栏通知
- NuttX 入门笔记2 STM32F103C8T6(STM32f103-minimum) 点亮led