比如下面页面,栏目太多,每次去数据库读取,太慢了。当然也可以除了用FreeMarker来改进,也可以用其他技术
FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
MyEclipce10.0中安装FreeMarker插件,这绝对是最简单的方法。步骤如下:
(一)打开http://sourceforge.net/projects/freemarker-ide/files/ 下载最新版本,目前本人下载时最新版本是:freemarker-ide-0.9.14
(二)将其解压,将hudson.freemarker_ide_0.9.14文件夹放入MyEclipse安装目录dropins下(例:D:\Program Files\MyEclipse10.0\MyEclipse 10\dropins目录下)
(三)然后重新启动MyEclipse10.0 会自动提示安装该插件。
(四)如果安装成功,则在 window --> Preferences 左边的树形栏里出现FreeMarker Editor一项新的内容
(五)在General --> Editors --> File Associations下设置*.ftl打开方式为:Freemarker Editor 为Default ,点击OK。
(六)如果一切顺利,打开.ftl文件,代码会高亮,还有自动提示哦!
在MyEclipse10的help菜单中进入config center。然后在software点击 add Site:地址输入:http://download.jboss.org/jbosstools/updates/development/indigo/
名称就写jboss
之后便在左侧出现了jboss,选择FreeMarker IDE,右键“Add to profile”
点击在新窗口中浏览此图片
然后 Pending changes会说有一个东西需要应用的,点击Apply,按照提示安装,重启MyEclipse即可。
地址:http://freemarker.incubator.apache.org/
/** * FreeMarker工具 * 读取其模板 * 并输入数据 * @author wangsh * */public class FreemarkerUtil {public Template getTemplate(String name) { try { //使用freeMarker的版本 Version version = new Version("2.3.23"); //通过Freemaker的Configuration读取相应的ftl Configuration cfg = new Configuration(version); //设定去哪里读取相应的ftl模板文件 cfg.setClassForTemplateLoading(this.getClass(),"/ftl"); //在模板文件目录中找到名称为name的文件 Template temp = cfg.getTemplate(name); return temp; } catch (IOException e) { e.printStackTrace(); } return null; } /*** 输出到控制台* @param name* @param root*/ public void print(String name,Map<String,Object> root) { try { //通过Template可以将模板文件输出到相应的流 Template temp = this.getTemplate(name); temp.process(root, new PrintWriter(System.out)); } catch (TemplateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /*** 输出html文件* @param name:模板名称* @param root:数据模型* @param outFile:输出文件名称*/ public void fprint(String name,Map<String,Object> root,String outFile) { FileWriter out = null; try { //通过一个文件输出流,就可以写到相应的文件中 out = new FileWriter(new File("E:\\360yunpan\\workspace\\learn\\learning-freemarker\\html\\"+outFile)); Template temp = this.getTemplate(name); temp.process(root, out); } catch (IOException e) { e.printStackTrace(); } catch (TemplateException e) { e.printStackTrace(); } finally { try {if(out!=null) out.close(); } catch (IOException e) {e.printStackTrace(); } } }}
1. 你好 ${username}
1. /**
2. * 输出到控制台
3. */
4. @Test
5. public void helloworld(){
6. //创建数据模型
7. Map<String, Object> root = new HashMap<String,Object>();
8. //为数据模型添加值
9. root.put("username", "孙悟空");
10. //将数据模型和模板组合,将输出到控制台
11. fu.print("helloworld.ftl", root);
12. }
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>01.html</title>
5. <meta name="content-type" content="text/html; charset=UTF-8">
6.
7. </head>
8.
9. <body>
10. <h1>${username}</h1> <br>
11. </body>
12. </html>
1. /**
2. * 输出到html文件
3. */
4. @Test
5. public void test01(){
6. //创建数据模型
7. Map<String, Object> root = new HashMap<String,Object>();
8. //为数据模型添加值
9. root.put("username", "孙悟空");
10. //将数据模型和模板组合,将输出到控制台
11. fu.print("helloworld.ftl", root);
12. fu.fprint("01.ftl", root, "01.html");
13. }
代码下载:http://code.taobao.org/svn/learning-freemarker/
关注我们
师享空间的宗旨是分享知识,传播价值。关注我们,及时获得更多信息。
捐赠我们
如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。